/********************************************************************************
 *                                                                              *
 * This file is part of IfcOpenShell.                                           *
 *                                                                              *
 * IfcOpenShell is free software: you can redistribute it and/or modify         *
 * it under the terms of the Lesser GNU General Public License as published by  *
 * the Free Software Foundation, either version 3.0 of the License, or          *
 * (at your option) any later version.                                          *
 *                                                                              *
 * IfcOpenShell is distributed in the hope that it will be useful,              *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of               *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                 *
 * Lesser GNU General Public License for more details.                          *
 *                                                                              *
 * You should have received a copy of the Lesser GNU General Public License     *
 * along with this program. If not, see <http://www.gnu.org/licenses/>.         *
 *                                                                              *
 ********************************************************************************/

/********************************************************************************
 *                                                                              *
 * This file has been generated from IFC4x3_RC2.exp. Do not make modifications  *
 * but instead modify the python script that has been used to generate this.    *
 *                                                                              *
 ********************************************************************************/

#include "../ifcparse/IfcSchema.h"
#include "../ifcparse/Ifc4x3_rc2.h"

using namespace IfcParse;

entity* IFC4X3_RC2_IfcActionRequest_type = 0;
entity* IFC4X3_RC2_IfcActor_type = 0;
entity* IFC4X3_RC2_IfcActorRole_type = 0;
entity* IFC4X3_RC2_IfcActuator_type = 0;
entity* IFC4X3_RC2_IfcActuatorType_type = 0;
entity* IFC4X3_RC2_IfcAddress_type = 0;
entity* IFC4X3_RC2_IfcAdvancedBrep_type = 0;
entity* IFC4X3_RC2_IfcAdvancedBrepWithVoids_type = 0;
entity* IFC4X3_RC2_IfcAdvancedFace_type = 0;
entity* IFC4X3_RC2_IfcAirTerminal_type = 0;
entity* IFC4X3_RC2_IfcAirTerminalBox_type = 0;
entity* IFC4X3_RC2_IfcAirTerminalBoxType_type = 0;
entity* IFC4X3_RC2_IfcAirTerminalType_type = 0;
entity* IFC4X3_RC2_IfcAirToAirHeatRecovery_type = 0;
entity* IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type = 0;
entity* IFC4X3_RC2_IfcAlarm_type = 0;
entity* IFC4X3_RC2_IfcAlarmType_type = 0;
entity* IFC4X3_RC2_IfcAlignment_type = 0;
entity* IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type = 0;
entity* IFC4X3_RC2_IfcAlignment2DVerSegLine_type = 0;
entity* IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type = 0;
entity* IFC4X3_RC2_IfcAlignmentCant_type = 0;
entity* IFC4X3_RC2_IfcAlignmentCantSegment_type = 0;
entity* IFC4X3_RC2_IfcAlignmentCurve_type = 0;
entity* IFC4X3_RC2_IfcAlignmentHorizontal_type = 0;
entity* IFC4X3_RC2_IfcAlignmentHorizontalSegment_type = 0;
entity* IFC4X3_RC2_IfcAlignmentParameterSegment_type = 0;
entity* IFC4X3_RC2_IfcAlignmentSegment_type = 0;
entity* IFC4X3_RC2_IfcAlignmentVertical_type = 0;
entity* IFC4X3_RC2_IfcAlignmentVerticalSegment_type = 0;
entity* IFC4X3_RC2_IfcAnnotation_type = 0;
entity* IFC4X3_RC2_IfcAnnotationFillArea_type = 0;
entity* IFC4X3_RC2_IfcApplication_type = 0;
entity* IFC4X3_RC2_IfcAppliedValue_type = 0;
entity* IFC4X3_RC2_IfcApproval_type = 0;
entity* IFC4X3_RC2_IfcApprovalRelationship_type = 0;
entity* IFC4X3_RC2_IfcArbitraryClosedProfileDef_type = 0;
entity* IFC4X3_RC2_IfcArbitraryOpenProfileDef_type = 0;
entity* IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type = 0;
entity* IFC4X3_RC2_IfcAsset_type = 0;
entity* IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcAudioVisualAppliance_type = 0;
entity* IFC4X3_RC2_IfcAudioVisualApplianceType_type = 0;
entity* IFC4X3_RC2_IfcAxis1Placement_type = 0;
entity* IFC4X3_RC2_IfcAxis2Placement2D_type = 0;
entity* IFC4X3_RC2_IfcAxis2Placement3D_type = 0;
entity* IFC4X3_RC2_IfcAxis2PlacementLinear_type = 0;
entity* IFC4X3_RC2_IfcAxisLateralInclination_type = 0;
entity* IFC4X3_RC2_IfcBSplineCurve_type = 0;
entity* IFC4X3_RC2_IfcBSplineCurveWithKnots_type = 0;
entity* IFC4X3_RC2_IfcBSplineSurface_type = 0;
entity* IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type = 0;
entity* IFC4X3_RC2_IfcBeam_type = 0;
entity* IFC4X3_RC2_IfcBeamStandardCase_type = 0;
entity* IFC4X3_RC2_IfcBeamType_type = 0;
entity* IFC4X3_RC2_IfcBearing_type = 0;
entity* IFC4X3_RC2_IfcBearingType_type = 0;
entity* IFC4X3_RC2_IfcBlobTexture_type = 0;
entity* IFC4X3_RC2_IfcBlock_type = 0;
entity* IFC4X3_RC2_IfcBlossCurve_type = 0;
entity* IFC4X3_RC2_IfcBoiler_type = 0;
entity* IFC4X3_RC2_IfcBoilerType_type = 0;
entity* IFC4X3_RC2_IfcBooleanClippingResult_type = 0;
entity* IFC4X3_RC2_IfcBooleanResult_type = 0;
entity* IFC4X3_RC2_IfcBorehole_type = 0;
entity* IFC4X3_RC2_IfcBoundaryCondition_type = 0;
entity* IFC4X3_RC2_IfcBoundaryCurve_type = 0;
entity* IFC4X3_RC2_IfcBoundaryEdgeCondition_type = 0;
entity* IFC4X3_RC2_IfcBoundaryFaceCondition_type = 0;
entity* IFC4X3_RC2_IfcBoundaryNodeCondition_type = 0;
entity* IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type = 0;
entity* IFC4X3_RC2_IfcBoundedCurve_type = 0;
entity* IFC4X3_RC2_IfcBoundedSurface_type = 0;
entity* IFC4X3_RC2_IfcBoundingBox_type = 0;
entity* IFC4X3_RC2_IfcBoxedHalfSpace_type = 0;
entity* IFC4X3_RC2_IfcBridge_type = 0;
entity* IFC4X3_RC2_IfcBridgePart_type = 0;
entity* IFC4X3_RC2_IfcBuilding_type = 0;
entity* IFC4X3_RC2_IfcBuildingElementPart_type = 0;
entity* IFC4X3_RC2_IfcBuildingElementPartType_type = 0;
entity* IFC4X3_RC2_IfcBuildingElementProxy_type = 0;
entity* IFC4X3_RC2_IfcBuildingElementProxyType_type = 0;
entity* IFC4X3_RC2_IfcBuildingStorey_type = 0;
entity* IFC4X3_RC2_IfcBuildingSystem_type = 0;
entity* IFC4X3_RC2_IfcBuiltElement_type = 0;
entity* IFC4X3_RC2_IfcBuiltElementType_type = 0;
entity* IFC4X3_RC2_IfcBuiltSystem_type = 0;
entity* IFC4X3_RC2_IfcBurner_type = 0;
entity* IFC4X3_RC2_IfcBurnerType_type = 0;
entity* IFC4X3_RC2_IfcCShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcCableCarrierFitting_type = 0;
entity* IFC4X3_RC2_IfcCableCarrierFittingType_type = 0;
entity* IFC4X3_RC2_IfcCableCarrierSegment_type = 0;
entity* IFC4X3_RC2_IfcCableCarrierSegmentType_type = 0;
entity* IFC4X3_RC2_IfcCableFitting_type = 0;
entity* IFC4X3_RC2_IfcCableFittingType_type = 0;
entity* IFC4X3_RC2_IfcCableSegment_type = 0;
entity* IFC4X3_RC2_IfcCableSegmentType_type = 0;
entity* IFC4X3_RC2_IfcCaissonFoundation_type = 0;
entity* IFC4X3_RC2_IfcCaissonFoundationType_type = 0;
entity* IFC4X3_RC2_IfcCartesianPoint_type = 0;
entity* IFC4X3_RC2_IfcCartesianPointList_type = 0;
entity* IFC4X3_RC2_IfcCartesianPointList2D_type = 0;
entity* IFC4X3_RC2_IfcCartesianPointList3D_type = 0;
entity* IFC4X3_RC2_IfcCartesianTransformationOperator_type = 0;
entity* IFC4X3_RC2_IfcCartesianTransformationOperator2D_type = 0;
entity* IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type = 0;
entity* IFC4X3_RC2_IfcCartesianTransformationOperator3D_type = 0;
entity* IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type = 0;
entity* IFC4X3_RC2_IfcCenterLineProfileDef_type = 0;
entity* IFC4X3_RC2_IfcChiller_type = 0;
entity* IFC4X3_RC2_IfcChillerType_type = 0;
entity* IFC4X3_RC2_IfcChimney_type = 0;
entity* IFC4X3_RC2_IfcChimneyType_type = 0;
entity* IFC4X3_RC2_IfcCircle_type = 0;
entity* IFC4X3_RC2_IfcCircleHollowProfileDef_type = 0;
entity* IFC4X3_RC2_IfcCircleProfileDef_type = 0;
entity* IFC4X3_RC2_IfcCircularArcSegment2D_type = 0;
entity* IFC4X3_RC2_IfcCivilElement_type = 0;
entity* IFC4X3_RC2_IfcCivilElementType_type = 0;
entity* IFC4X3_RC2_IfcClassification_type = 0;
entity* IFC4X3_RC2_IfcClassificationReference_type = 0;
entity* IFC4X3_RC2_IfcClosedShell_type = 0;
entity* IFC4X3_RC2_IfcClothoid_type = 0;
entity* IFC4X3_RC2_IfcCoil_type = 0;
entity* IFC4X3_RC2_IfcCoilType_type = 0;
entity* IFC4X3_RC2_IfcColourRgb_type = 0;
entity* IFC4X3_RC2_IfcColourRgbList_type = 0;
entity* IFC4X3_RC2_IfcColourSpecification_type = 0;
entity* IFC4X3_RC2_IfcColumn_type = 0;
entity* IFC4X3_RC2_IfcColumnStandardCase_type = 0;
entity* IFC4X3_RC2_IfcColumnType_type = 0;
entity* IFC4X3_RC2_IfcCommunicationsAppliance_type = 0;
entity* IFC4X3_RC2_IfcCommunicationsApplianceType_type = 0;
entity* IFC4X3_RC2_IfcComplexProperty_type = 0;
entity* IFC4X3_RC2_IfcComplexPropertyTemplate_type = 0;
entity* IFC4X3_RC2_IfcCompositeCurve_type = 0;
entity* IFC4X3_RC2_IfcCompositeCurveOnSurface_type = 0;
entity* IFC4X3_RC2_IfcCompositeCurveSegment_type = 0;
entity* IFC4X3_RC2_IfcCompositeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcCompressor_type = 0;
entity* IFC4X3_RC2_IfcCompressorType_type = 0;
entity* IFC4X3_RC2_IfcCondenser_type = 0;
entity* IFC4X3_RC2_IfcCondenserType_type = 0;
entity* IFC4X3_RC2_IfcConic_type = 0;
entity* IFC4X3_RC2_IfcConnectedFaceSet_type = 0;
entity* IFC4X3_RC2_IfcConnectionCurveGeometry_type = 0;
entity* IFC4X3_RC2_IfcConnectionGeometry_type = 0;
entity* IFC4X3_RC2_IfcConnectionPointEccentricity_type = 0;
entity* IFC4X3_RC2_IfcConnectionPointGeometry_type = 0;
entity* IFC4X3_RC2_IfcConnectionSurfaceGeometry_type = 0;
entity* IFC4X3_RC2_IfcConnectionVolumeGeometry_type = 0;
entity* IFC4X3_RC2_IfcConstraint_type = 0;
entity* IFC4X3_RC2_IfcConstructionEquipmentResource_type = 0;
entity* IFC4X3_RC2_IfcConstructionEquipmentResourceType_type = 0;
entity* IFC4X3_RC2_IfcConstructionMaterialResource_type = 0;
entity* IFC4X3_RC2_IfcConstructionMaterialResourceType_type = 0;
entity* IFC4X3_RC2_IfcConstructionProductResource_type = 0;
entity* IFC4X3_RC2_IfcConstructionProductResourceType_type = 0;
entity* IFC4X3_RC2_IfcConstructionResource_type = 0;
entity* IFC4X3_RC2_IfcConstructionResourceType_type = 0;
entity* IFC4X3_RC2_IfcContext_type = 0;
entity* IFC4X3_RC2_IfcContextDependentUnit_type = 0;
entity* IFC4X3_RC2_IfcControl_type = 0;
entity* IFC4X3_RC2_IfcController_type = 0;
entity* IFC4X3_RC2_IfcControllerType_type = 0;
entity* IFC4X3_RC2_IfcConversionBasedUnit_type = 0;
entity* IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type = 0;
entity* IFC4X3_RC2_IfcConveyorSegment_type = 0;
entity* IFC4X3_RC2_IfcConveyorSegmentType_type = 0;
entity* IFC4X3_RC2_IfcCooledBeam_type = 0;
entity* IFC4X3_RC2_IfcCooledBeamType_type = 0;
entity* IFC4X3_RC2_IfcCoolingTower_type = 0;
entity* IFC4X3_RC2_IfcCoolingTowerType_type = 0;
entity* IFC4X3_RC2_IfcCoordinateOperation_type = 0;
entity* IFC4X3_RC2_IfcCoordinateReferenceSystem_type = 0;
entity* IFC4X3_RC2_IfcCostItem_type = 0;
entity* IFC4X3_RC2_IfcCostSchedule_type = 0;
entity* IFC4X3_RC2_IfcCostValue_type = 0;
entity* IFC4X3_RC2_IfcCourse_type = 0;
entity* IFC4X3_RC2_IfcCourseType_type = 0;
entity* IFC4X3_RC2_IfcCovering_type = 0;
entity* IFC4X3_RC2_IfcCoveringType_type = 0;
entity* IFC4X3_RC2_IfcCrewResource_type = 0;
entity* IFC4X3_RC2_IfcCrewResourceType_type = 0;
entity* IFC4X3_RC2_IfcCsgPrimitive3D_type = 0;
entity* IFC4X3_RC2_IfcCsgSolid_type = 0;
entity* IFC4X3_RC2_IfcCurrencyRelationship_type = 0;
entity* IFC4X3_RC2_IfcCurtainWall_type = 0;
entity* IFC4X3_RC2_IfcCurtainWallType_type = 0;
entity* IFC4X3_RC2_IfcCurve_type = 0;
entity* IFC4X3_RC2_IfcCurveBoundedPlane_type = 0;
entity* IFC4X3_RC2_IfcCurveBoundedSurface_type = 0;
entity* IFC4X3_RC2_IfcCurveSegment_type = 0;
entity* IFC4X3_RC2_IfcCurveSegment2D_type = 0;
entity* IFC4X3_RC2_IfcCurveStyle_type = 0;
entity* IFC4X3_RC2_IfcCurveStyleFont_type = 0;
entity* IFC4X3_RC2_IfcCurveStyleFontAndScaling_type = 0;
entity* IFC4X3_RC2_IfcCurveStyleFontPattern_type = 0;
entity* IFC4X3_RC2_IfcCylindricalSurface_type = 0;
entity* IFC4X3_RC2_IfcDamper_type = 0;
entity* IFC4X3_RC2_IfcDamperType_type = 0;
entity* IFC4X3_RC2_IfcDeepFoundation_type = 0;
entity* IFC4X3_RC2_IfcDeepFoundationType_type = 0;
entity* IFC4X3_RC2_IfcDerivedProfileDef_type = 0;
entity* IFC4X3_RC2_IfcDerivedUnit_type = 0;
entity* IFC4X3_RC2_IfcDerivedUnitElement_type = 0;
entity* IFC4X3_RC2_IfcDimensionalExponents_type = 0;
entity* IFC4X3_RC2_IfcDirection_type = 0;
entity* IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcDiscreteAccessory_type = 0;
entity* IFC4X3_RC2_IfcDiscreteAccessoryType_type = 0;
entity* IFC4X3_RC2_IfcDistributionBoard_type = 0;
entity* IFC4X3_RC2_IfcDistributionBoardType_type = 0;
entity* IFC4X3_RC2_IfcDistributionChamberElement_type = 0;
entity* IFC4X3_RC2_IfcDistributionChamberElementType_type = 0;
entity* IFC4X3_RC2_IfcDistributionCircuit_type = 0;
entity* IFC4X3_RC2_IfcDistributionControlElement_type = 0;
entity* IFC4X3_RC2_IfcDistributionControlElementType_type = 0;
entity* IFC4X3_RC2_IfcDistributionElement_type = 0;
entity* IFC4X3_RC2_IfcDistributionElementType_type = 0;
entity* IFC4X3_RC2_IfcDistributionFlowElement_type = 0;
entity* IFC4X3_RC2_IfcDistributionFlowElementType_type = 0;
entity* IFC4X3_RC2_IfcDistributionPort_type = 0;
entity* IFC4X3_RC2_IfcDistributionSystem_type = 0;
entity* IFC4X3_RC2_IfcDocumentInformation_type = 0;
entity* IFC4X3_RC2_IfcDocumentInformationRelationship_type = 0;
entity* IFC4X3_RC2_IfcDocumentReference_type = 0;
entity* IFC4X3_RC2_IfcDoor_type = 0;
entity* IFC4X3_RC2_IfcDoorLiningProperties_type = 0;
entity* IFC4X3_RC2_IfcDoorPanelProperties_type = 0;
entity* IFC4X3_RC2_IfcDoorStandardCase_type = 0;
entity* IFC4X3_RC2_IfcDoorStyle_type = 0;
entity* IFC4X3_RC2_IfcDoorType_type = 0;
entity* IFC4X3_RC2_IfcDraughtingPreDefinedColour_type = 0;
entity* IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type = 0;
entity* IFC4X3_RC2_IfcDuctFitting_type = 0;
entity* IFC4X3_RC2_IfcDuctFittingType_type = 0;
entity* IFC4X3_RC2_IfcDuctSegment_type = 0;
entity* IFC4X3_RC2_IfcDuctSegmentType_type = 0;
entity* IFC4X3_RC2_IfcDuctSilencer_type = 0;
entity* IFC4X3_RC2_IfcDuctSilencerType_type = 0;
entity* IFC4X3_RC2_IfcEarthworksCut_type = 0;
entity* IFC4X3_RC2_IfcEarthworksElement_type = 0;
entity* IFC4X3_RC2_IfcEarthworksFill_type = 0;
entity* IFC4X3_RC2_IfcEdge_type = 0;
entity* IFC4X3_RC2_IfcEdgeCurve_type = 0;
entity* IFC4X3_RC2_IfcEdgeLoop_type = 0;
entity* IFC4X3_RC2_IfcElectricAppliance_type = 0;
entity* IFC4X3_RC2_IfcElectricApplianceType_type = 0;
entity* IFC4X3_RC2_IfcElectricDistributionBoard_type = 0;
entity* IFC4X3_RC2_IfcElectricDistributionBoardType_type = 0;
entity* IFC4X3_RC2_IfcElectricFlowStorageDevice_type = 0;
entity* IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type = 0;
entity* IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type = 0;
entity* IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type = 0;
entity* IFC4X3_RC2_IfcElectricGenerator_type = 0;
entity* IFC4X3_RC2_IfcElectricGeneratorType_type = 0;
entity* IFC4X3_RC2_IfcElectricMotor_type = 0;
entity* IFC4X3_RC2_IfcElectricMotorType_type = 0;
entity* IFC4X3_RC2_IfcElectricTimeControl_type = 0;
entity* IFC4X3_RC2_IfcElectricTimeControlType_type = 0;
entity* IFC4X3_RC2_IfcElement_type = 0;
entity* IFC4X3_RC2_IfcElementAssembly_type = 0;
entity* IFC4X3_RC2_IfcElementAssemblyType_type = 0;
entity* IFC4X3_RC2_IfcElementComponent_type = 0;
entity* IFC4X3_RC2_IfcElementComponentType_type = 0;
entity* IFC4X3_RC2_IfcElementQuantity_type = 0;
entity* IFC4X3_RC2_IfcElementType_type = 0;
entity* IFC4X3_RC2_IfcElementarySurface_type = 0;
entity* IFC4X3_RC2_IfcEllipse_type = 0;
entity* IFC4X3_RC2_IfcEllipseProfileDef_type = 0;
entity* IFC4X3_RC2_IfcEnergyConversionDevice_type = 0;
entity* IFC4X3_RC2_IfcEnergyConversionDeviceType_type = 0;
entity* IFC4X3_RC2_IfcEngine_type = 0;
entity* IFC4X3_RC2_IfcEngineType_type = 0;
entity* IFC4X3_RC2_IfcEvaporativeCooler_type = 0;
entity* IFC4X3_RC2_IfcEvaporativeCoolerType_type = 0;
entity* IFC4X3_RC2_IfcEvaporator_type = 0;
entity* IFC4X3_RC2_IfcEvaporatorType_type = 0;
entity* IFC4X3_RC2_IfcEvent_type = 0;
entity* IFC4X3_RC2_IfcEventTime_type = 0;
entity* IFC4X3_RC2_IfcEventType_type = 0;
entity* IFC4X3_RC2_IfcExtendedProperties_type = 0;
entity* IFC4X3_RC2_IfcExternalInformation_type = 0;
entity* IFC4X3_RC2_IfcExternalReference_type = 0;
entity* IFC4X3_RC2_IfcExternalReferenceRelationship_type = 0;
entity* IFC4X3_RC2_IfcExternalSpatialElement_type = 0;
entity* IFC4X3_RC2_IfcExternalSpatialStructureElement_type = 0;
entity* IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type = 0;
entity* IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type = 0;
entity* IFC4X3_RC2_IfcExternallyDefinedTextFont_type = 0;
entity* IFC4X3_RC2_IfcExtrudedAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type = 0;
entity* IFC4X3_RC2_IfcFace_type = 0;
entity* IFC4X3_RC2_IfcFaceBasedSurfaceModel_type = 0;
entity* IFC4X3_RC2_IfcFaceBound_type = 0;
entity* IFC4X3_RC2_IfcFaceOuterBound_type = 0;
entity* IFC4X3_RC2_IfcFaceSurface_type = 0;
entity* IFC4X3_RC2_IfcFacetedBrep_type = 0;
entity* IFC4X3_RC2_IfcFacetedBrepWithVoids_type = 0;
entity* IFC4X3_RC2_IfcFacility_type = 0;
entity* IFC4X3_RC2_IfcFacilityPart_type = 0;
entity* IFC4X3_RC2_IfcFailureConnectionCondition_type = 0;
entity* IFC4X3_RC2_IfcFan_type = 0;
entity* IFC4X3_RC2_IfcFanType_type = 0;
entity* IFC4X3_RC2_IfcFastener_type = 0;
entity* IFC4X3_RC2_IfcFastenerType_type = 0;
entity* IFC4X3_RC2_IfcFeatureElement_type = 0;
entity* IFC4X3_RC2_IfcFeatureElementAddition_type = 0;
entity* IFC4X3_RC2_IfcFeatureElementSubtraction_type = 0;
entity* IFC4X3_RC2_IfcFillAreaStyle_type = 0;
entity* IFC4X3_RC2_IfcFillAreaStyleHatching_type = 0;
entity* IFC4X3_RC2_IfcFillAreaStyleTiles_type = 0;
entity* IFC4X3_RC2_IfcFilter_type = 0;
entity* IFC4X3_RC2_IfcFilterType_type = 0;
entity* IFC4X3_RC2_IfcFireSuppressionTerminal_type = 0;
entity* IFC4X3_RC2_IfcFireSuppressionTerminalType_type = 0;
entity* IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcFlowController_type = 0;
entity* IFC4X3_RC2_IfcFlowControllerType_type = 0;
entity* IFC4X3_RC2_IfcFlowFitting_type = 0;
entity* IFC4X3_RC2_IfcFlowFittingType_type = 0;
entity* IFC4X3_RC2_IfcFlowInstrument_type = 0;
entity* IFC4X3_RC2_IfcFlowInstrumentType_type = 0;
entity* IFC4X3_RC2_IfcFlowMeter_type = 0;
entity* IFC4X3_RC2_IfcFlowMeterType_type = 0;
entity* IFC4X3_RC2_IfcFlowMovingDevice_type = 0;
entity* IFC4X3_RC2_IfcFlowMovingDeviceType_type = 0;
entity* IFC4X3_RC2_IfcFlowSegment_type = 0;
entity* IFC4X3_RC2_IfcFlowSegmentType_type = 0;
entity* IFC4X3_RC2_IfcFlowStorageDevice_type = 0;
entity* IFC4X3_RC2_IfcFlowStorageDeviceType_type = 0;
entity* IFC4X3_RC2_IfcFlowTerminal_type = 0;
entity* IFC4X3_RC2_IfcFlowTerminalType_type = 0;
entity* IFC4X3_RC2_IfcFlowTreatmentDevice_type = 0;
entity* IFC4X3_RC2_IfcFlowTreatmentDeviceType_type = 0;
entity* IFC4X3_RC2_IfcFooting_type = 0;
entity* IFC4X3_RC2_IfcFootingType_type = 0;
entity* IFC4X3_RC2_IfcFurnishingElement_type = 0;
entity* IFC4X3_RC2_IfcFurnishingElementType_type = 0;
entity* IFC4X3_RC2_IfcFurniture_type = 0;
entity* IFC4X3_RC2_IfcFurnitureType_type = 0;
entity* IFC4X3_RC2_IfcGeographicElement_type = 0;
entity* IFC4X3_RC2_IfcGeographicElementType_type = 0;
entity* IFC4X3_RC2_IfcGeometricCurveSet_type = 0;
entity* IFC4X3_RC2_IfcGeometricRepresentationContext_type = 0;
entity* IFC4X3_RC2_IfcGeometricRepresentationItem_type = 0;
entity* IFC4X3_RC2_IfcGeometricRepresentationSubContext_type = 0;
entity* IFC4X3_RC2_IfcGeometricSet_type = 0;
entity* IFC4X3_RC2_IfcGeomodel_type = 0;
entity* IFC4X3_RC2_IfcGeoslice_type = 0;
entity* IFC4X3_RC2_IfcGeotechnicalAssembly_type = 0;
entity* IFC4X3_RC2_IfcGeotechnicalElement_type = 0;
entity* IFC4X3_RC2_IfcGeotechnicalStratum_type = 0;
entity* IFC4X3_RC2_IfcGradientCurve_type = 0;
entity* IFC4X3_RC2_IfcGrid_type = 0;
entity* IFC4X3_RC2_IfcGridAxis_type = 0;
entity* IFC4X3_RC2_IfcGridPlacement_type = 0;
entity* IFC4X3_RC2_IfcGroup_type = 0;
entity* IFC4X3_RC2_IfcHalfSpaceSolid_type = 0;
entity* IFC4X3_RC2_IfcHeatExchanger_type = 0;
entity* IFC4X3_RC2_IfcHeatExchangerType_type = 0;
entity* IFC4X3_RC2_IfcHumidifier_type = 0;
entity* IFC4X3_RC2_IfcHumidifierType_type = 0;
entity* IFC4X3_RC2_IfcIShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcImageTexture_type = 0;
entity* IFC4X3_RC2_IfcImpactProtectionDevice_type = 0;
entity* IFC4X3_RC2_IfcImpactProtectionDeviceType_type = 0;
entity* IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcIndexedColourMap_type = 0;
entity* IFC4X3_RC2_IfcIndexedPolyCurve_type = 0;
entity* IFC4X3_RC2_IfcIndexedPolygonalFace_type = 0;
entity* IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type = 0;
entity* IFC4X3_RC2_IfcIndexedTextureMap_type = 0;
entity* IFC4X3_RC2_IfcIndexedTriangleTextureMap_type = 0;
entity* IFC4X3_RC2_IfcInterceptor_type = 0;
entity* IFC4X3_RC2_IfcInterceptorType_type = 0;
entity* IFC4X3_RC2_IfcIntersectionCurve_type = 0;
entity* IFC4X3_RC2_IfcInventory_type = 0;
entity* IFC4X3_RC2_IfcIrregularTimeSeries_type = 0;
entity* IFC4X3_RC2_IfcIrregularTimeSeriesValue_type = 0;
entity* IFC4X3_RC2_IfcJunctionBox_type = 0;
entity* IFC4X3_RC2_IfcJunctionBoxType_type = 0;
entity* IFC4X3_RC2_IfcKerb_type = 0;
entity* IFC4X3_RC2_IfcKerbType_type = 0;
entity* IFC4X3_RC2_IfcLShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcLaborResource_type = 0;
entity* IFC4X3_RC2_IfcLaborResourceType_type = 0;
entity* IFC4X3_RC2_IfcLagTime_type = 0;
entity* IFC4X3_RC2_IfcLamp_type = 0;
entity* IFC4X3_RC2_IfcLampType_type = 0;
entity* IFC4X3_RC2_IfcLibraryInformation_type = 0;
entity* IFC4X3_RC2_IfcLibraryReference_type = 0;
entity* IFC4X3_RC2_IfcLightDistributionData_type = 0;
entity* IFC4X3_RC2_IfcLightFixture_type = 0;
entity* IFC4X3_RC2_IfcLightFixtureType_type = 0;
entity* IFC4X3_RC2_IfcLightIntensityDistribution_type = 0;
entity* IFC4X3_RC2_IfcLightSource_type = 0;
entity* IFC4X3_RC2_IfcLightSourceAmbient_type = 0;
entity* IFC4X3_RC2_IfcLightSourceDirectional_type = 0;
entity* IFC4X3_RC2_IfcLightSourceGoniometric_type = 0;
entity* IFC4X3_RC2_IfcLightSourcePositional_type = 0;
entity* IFC4X3_RC2_IfcLightSourceSpot_type = 0;
entity* IFC4X3_RC2_IfcLine_type = 0;
entity* IFC4X3_RC2_IfcLineSegment2D_type = 0;
entity* IFC4X3_RC2_IfcLinearAxisWithInclination_type = 0;
entity* IFC4X3_RC2_IfcLinearElement_type = 0;
entity* IFC4X3_RC2_IfcLinearPlacement_type = 0;
entity* IFC4X3_RC2_IfcLinearPlacementWithInclination_type = 0;
entity* IFC4X3_RC2_IfcLinearPositioningElement_type = 0;
entity* IFC4X3_RC2_IfcLinearSpanPlacement_type = 0;
entity* IFC4X3_RC2_IfcLiquidTerminal_type = 0;
entity* IFC4X3_RC2_IfcLiquidTerminalType_type = 0;
entity* IFC4X3_RC2_IfcLocalPlacement_type = 0;
entity* IFC4X3_RC2_IfcLoop_type = 0;
entity* IFC4X3_RC2_IfcManifoldSolidBrep_type = 0;
entity* IFC4X3_RC2_IfcMapConversion_type = 0;
entity* IFC4X3_RC2_IfcMappedItem_type = 0;
entity* IFC4X3_RC2_IfcMarineFacility_type = 0;
entity* IFC4X3_RC2_IfcMaterial_type = 0;
entity* IFC4X3_RC2_IfcMaterialClassificationRelationship_type = 0;
entity* IFC4X3_RC2_IfcMaterialConstituent_type = 0;
entity* IFC4X3_RC2_IfcMaterialConstituentSet_type = 0;
entity* IFC4X3_RC2_IfcMaterialDefinition_type = 0;
entity* IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type = 0;
entity* IFC4X3_RC2_IfcMaterialLayer_type = 0;
entity* IFC4X3_RC2_IfcMaterialLayerSet_type = 0;
entity* IFC4X3_RC2_IfcMaterialLayerSetUsage_type = 0;
entity* IFC4X3_RC2_IfcMaterialLayerWithOffsets_type = 0;
entity* IFC4X3_RC2_IfcMaterialList_type = 0;
entity* IFC4X3_RC2_IfcMaterialProfile_type = 0;
entity* IFC4X3_RC2_IfcMaterialProfileSet_type = 0;
entity* IFC4X3_RC2_IfcMaterialProfileSetUsage_type = 0;
entity* IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type = 0;
entity* IFC4X3_RC2_IfcMaterialProfileWithOffsets_type = 0;
entity* IFC4X3_RC2_IfcMaterialProperties_type = 0;
entity* IFC4X3_RC2_IfcMaterialRelationship_type = 0;
entity* IFC4X3_RC2_IfcMaterialUsageDefinition_type = 0;
entity* IFC4X3_RC2_IfcMeasureWithUnit_type = 0;
entity* IFC4X3_RC2_IfcMechanicalFastener_type = 0;
entity* IFC4X3_RC2_IfcMechanicalFastenerType_type = 0;
entity* IFC4X3_RC2_IfcMedicalDevice_type = 0;
entity* IFC4X3_RC2_IfcMedicalDeviceType_type = 0;
entity* IFC4X3_RC2_IfcMember_type = 0;
entity* IFC4X3_RC2_IfcMemberStandardCase_type = 0;
entity* IFC4X3_RC2_IfcMemberType_type = 0;
entity* IFC4X3_RC2_IfcMetric_type = 0;
entity* IFC4X3_RC2_IfcMirroredProfileDef_type = 0;
entity* IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type = 0;
entity* IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type = 0;
entity* IFC4X3_RC2_IfcMonetaryUnit_type = 0;
entity* IFC4X3_RC2_IfcMooringDevice_type = 0;
entity* IFC4X3_RC2_IfcMooringDeviceType_type = 0;
entity* IFC4X3_RC2_IfcMotorConnection_type = 0;
entity* IFC4X3_RC2_IfcMotorConnectionType_type = 0;
entity* IFC4X3_RC2_IfcNamedUnit_type = 0;
entity* IFC4X3_RC2_IfcNavigationElement_type = 0;
entity* IFC4X3_RC2_IfcNavigationElementType_type = 0;
entity* IFC4X3_RC2_IfcObject_type = 0;
entity* IFC4X3_RC2_IfcObjectDefinition_type = 0;
entity* IFC4X3_RC2_IfcObjectPlacement_type = 0;
entity* IFC4X3_RC2_IfcObjective_type = 0;
entity* IFC4X3_RC2_IfcOccupant_type = 0;
entity* IFC4X3_RC2_IfcOffsetCurve_type = 0;
entity* IFC4X3_RC2_IfcOffsetCurve2D_type = 0;
entity* IFC4X3_RC2_IfcOffsetCurve3D_type = 0;
entity* IFC4X3_RC2_IfcOffsetCurveByDistances_type = 0;
entity* IFC4X3_RC2_IfcOpenCrossProfileDef_type = 0;
entity* IFC4X3_RC2_IfcOpenShell_type = 0;
entity* IFC4X3_RC2_IfcOpeningElement_type = 0;
entity* IFC4X3_RC2_IfcOpeningStandardCase_type = 0;
entity* IFC4X3_RC2_IfcOrganization_type = 0;
entity* IFC4X3_RC2_IfcOrganizationRelationship_type = 0;
entity* IFC4X3_RC2_IfcOrientedEdge_type = 0;
entity* IFC4X3_RC2_IfcOuterBoundaryCurve_type = 0;
entity* IFC4X3_RC2_IfcOutlet_type = 0;
entity* IFC4X3_RC2_IfcOutletType_type = 0;
entity* IFC4X3_RC2_IfcOwnerHistory_type = 0;
entity* IFC4X3_RC2_IfcParameterizedProfileDef_type = 0;
entity* IFC4X3_RC2_IfcPath_type = 0;
entity* IFC4X3_RC2_IfcPavement_type = 0;
entity* IFC4X3_RC2_IfcPavementType_type = 0;
entity* IFC4X3_RC2_IfcPcurve_type = 0;
entity* IFC4X3_RC2_IfcPerformanceHistory_type = 0;
entity* IFC4X3_RC2_IfcPermeableCoveringProperties_type = 0;
entity* IFC4X3_RC2_IfcPermit_type = 0;
entity* IFC4X3_RC2_IfcPerson_type = 0;
entity* IFC4X3_RC2_IfcPersonAndOrganization_type = 0;
entity* IFC4X3_RC2_IfcPhysicalComplexQuantity_type = 0;
entity* IFC4X3_RC2_IfcPhysicalQuantity_type = 0;
entity* IFC4X3_RC2_IfcPhysicalSimpleQuantity_type = 0;
entity* IFC4X3_RC2_IfcPile_type = 0;
entity* IFC4X3_RC2_IfcPileType_type = 0;
entity* IFC4X3_RC2_IfcPipeFitting_type = 0;
entity* IFC4X3_RC2_IfcPipeFittingType_type = 0;
entity* IFC4X3_RC2_IfcPipeSegment_type = 0;
entity* IFC4X3_RC2_IfcPipeSegmentType_type = 0;
entity* IFC4X3_RC2_IfcPixelTexture_type = 0;
entity* IFC4X3_RC2_IfcPlacement_type = 0;
entity* IFC4X3_RC2_IfcPlanarBox_type = 0;
entity* IFC4X3_RC2_IfcPlanarExtent_type = 0;
entity* IFC4X3_RC2_IfcPlane_type = 0;
entity* IFC4X3_RC2_IfcPlant_type = 0;
entity* IFC4X3_RC2_IfcPlate_type = 0;
entity* IFC4X3_RC2_IfcPlateStandardCase_type = 0;
entity* IFC4X3_RC2_IfcPlateType_type = 0;
entity* IFC4X3_RC2_IfcPoint_type = 0;
entity* IFC4X3_RC2_IfcPointByDistanceExpression_type = 0;
entity* IFC4X3_RC2_IfcPointOnCurve_type = 0;
entity* IFC4X3_RC2_IfcPointOnSurface_type = 0;
entity* IFC4X3_RC2_IfcPolyLoop_type = 0;
entity* IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type = 0;
entity* IFC4X3_RC2_IfcPolygonalFaceSet_type = 0;
entity* IFC4X3_RC2_IfcPolyline_type = 0;
entity* IFC4X3_RC2_IfcPort_type = 0;
entity* IFC4X3_RC2_IfcPositioningElement_type = 0;
entity* IFC4X3_RC2_IfcPostalAddress_type = 0;
entity* IFC4X3_RC2_IfcPreDefinedColour_type = 0;
entity* IFC4X3_RC2_IfcPreDefinedCurveFont_type = 0;
entity* IFC4X3_RC2_IfcPreDefinedItem_type = 0;
entity* IFC4X3_RC2_IfcPreDefinedProperties_type = 0;
entity* IFC4X3_RC2_IfcPreDefinedPropertySet_type = 0;
entity* IFC4X3_RC2_IfcPreDefinedTextFont_type = 0;
entity* IFC4X3_RC2_IfcPresentationItem_type = 0;
entity* IFC4X3_RC2_IfcPresentationLayerAssignment_type = 0;
entity* IFC4X3_RC2_IfcPresentationLayerWithStyle_type = 0;
entity* IFC4X3_RC2_IfcPresentationStyle_type = 0;
entity* IFC4X3_RC2_IfcPresentationStyleAssignment_type = 0;
entity* IFC4X3_RC2_IfcProcedure_type = 0;
entity* IFC4X3_RC2_IfcProcedureType_type = 0;
entity* IFC4X3_RC2_IfcProcess_type = 0;
entity* IFC4X3_RC2_IfcProduct_type = 0;
entity* IFC4X3_RC2_IfcProductDefinitionShape_type = 0;
entity* IFC4X3_RC2_IfcProductRepresentation_type = 0;
entity* IFC4X3_RC2_IfcProfileDef_type = 0;
entity* IFC4X3_RC2_IfcProfileProperties_type = 0;
entity* IFC4X3_RC2_IfcProject_type = 0;
entity* IFC4X3_RC2_IfcProjectLibrary_type = 0;
entity* IFC4X3_RC2_IfcProjectOrder_type = 0;
entity* IFC4X3_RC2_IfcProjectedCRS_type = 0;
entity* IFC4X3_RC2_IfcProjectionElement_type = 0;
entity* IFC4X3_RC2_IfcProperty_type = 0;
entity* IFC4X3_RC2_IfcPropertyAbstraction_type = 0;
entity* IFC4X3_RC2_IfcPropertyBoundedValue_type = 0;
entity* IFC4X3_RC2_IfcPropertyDefinition_type = 0;
entity* IFC4X3_RC2_IfcPropertyDependencyRelationship_type = 0;
entity* IFC4X3_RC2_IfcPropertyEnumeratedValue_type = 0;
entity* IFC4X3_RC2_IfcPropertyEnumeration_type = 0;
entity* IFC4X3_RC2_IfcPropertyListValue_type = 0;
entity* IFC4X3_RC2_IfcPropertyReferenceValue_type = 0;
entity* IFC4X3_RC2_IfcPropertySet_type = 0;
entity* IFC4X3_RC2_IfcPropertySetDefinition_type = 0;
entity* IFC4X3_RC2_IfcPropertySetTemplate_type = 0;
entity* IFC4X3_RC2_IfcPropertySingleValue_type = 0;
entity* IFC4X3_RC2_IfcPropertyTableValue_type = 0;
entity* IFC4X3_RC2_IfcPropertyTemplate_type = 0;
entity* IFC4X3_RC2_IfcPropertyTemplateDefinition_type = 0;
entity* IFC4X3_RC2_IfcProtectiveDevice_type = 0;
entity* IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type = 0;
entity* IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type = 0;
entity* IFC4X3_RC2_IfcProtectiveDeviceType_type = 0;
entity* IFC4X3_RC2_IfcProxy_type = 0;
entity* IFC4X3_RC2_IfcPump_type = 0;
entity* IFC4X3_RC2_IfcPumpType_type = 0;
entity* IFC4X3_RC2_IfcQuantityArea_type = 0;
entity* IFC4X3_RC2_IfcQuantityCount_type = 0;
entity* IFC4X3_RC2_IfcQuantityLength_type = 0;
entity* IFC4X3_RC2_IfcQuantitySet_type = 0;
entity* IFC4X3_RC2_IfcQuantityTime_type = 0;
entity* IFC4X3_RC2_IfcQuantityVolume_type = 0;
entity* IFC4X3_RC2_IfcQuantityWeight_type = 0;
entity* IFC4X3_RC2_IfcRail_type = 0;
entity* IFC4X3_RC2_IfcRailType_type = 0;
entity* IFC4X3_RC2_IfcRailing_type = 0;
entity* IFC4X3_RC2_IfcRailingType_type = 0;
entity* IFC4X3_RC2_IfcRailway_type = 0;
entity* IFC4X3_RC2_IfcRamp_type = 0;
entity* IFC4X3_RC2_IfcRampFlight_type = 0;
entity* IFC4X3_RC2_IfcRampFlightType_type = 0;
entity* IFC4X3_RC2_IfcRampType_type = 0;
entity* IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type = 0;
entity* IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type = 0;
entity* IFC4X3_RC2_IfcRectangleHollowProfileDef_type = 0;
entity* IFC4X3_RC2_IfcRectangleProfileDef_type = 0;
entity* IFC4X3_RC2_IfcRectangularPyramid_type = 0;
entity* IFC4X3_RC2_IfcRectangularTrimmedSurface_type = 0;
entity* IFC4X3_RC2_IfcRecurrencePattern_type = 0;
entity* IFC4X3_RC2_IfcReference_type = 0;
entity* IFC4X3_RC2_IfcReferent_type = 0;
entity* IFC4X3_RC2_IfcRegularTimeSeries_type = 0;
entity* IFC4X3_RC2_IfcReinforcedSoil_type = 0;
entity* IFC4X3_RC2_IfcReinforcementBarProperties_type = 0;
entity* IFC4X3_RC2_IfcReinforcementDefinitionProperties_type = 0;
entity* IFC4X3_RC2_IfcReinforcingBar_type = 0;
entity* IFC4X3_RC2_IfcReinforcingBarType_type = 0;
entity* IFC4X3_RC2_IfcReinforcingElement_type = 0;
entity* IFC4X3_RC2_IfcReinforcingElementType_type = 0;
entity* IFC4X3_RC2_IfcReinforcingMesh_type = 0;
entity* IFC4X3_RC2_IfcReinforcingMeshType_type = 0;
entity* IFC4X3_RC2_IfcRelAggregates_type = 0;
entity* IFC4X3_RC2_IfcRelAssigns_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToActor_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToControl_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToGroup_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToProcess_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToProduct_type = 0;
entity* IFC4X3_RC2_IfcRelAssignsToResource_type = 0;
entity* IFC4X3_RC2_IfcRelAssociates_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesApproval_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesClassification_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesConstraint_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesDocument_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesLibrary_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesMaterial_type = 0;
entity* IFC4X3_RC2_IfcRelAssociatesProfileDef_type = 0;
entity* IFC4X3_RC2_IfcRelConnects_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsElements_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsPathElements_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsPortToElement_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsPorts_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsStructuralActivity_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsStructuralMember_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsWithEccentricity_type = 0;
entity* IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type = 0;
entity* IFC4X3_RC2_IfcRelContainedInSpatialStructure_type = 0;
entity* IFC4X3_RC2_IfcRelCoversBldgElements_type = 0;
entity* IFC4X3_RC2_IfcRelCoversSpaces_type = 0;
entity* IFC4X3_RC2_IfcRelDeclares_type = 0;
entity* IFC4X3_RC2_IfcRelDecomposes_type = 0;
entity* IFC4X3_RC2_IfcRelDefines_type = 0;
entity* IFC4X3_RC2_IfcRelDefinesByObject_type = 0;
entity* IFC4X3_RC2_IfcRelDefinesByProperties_type = 0;
entity* IFC4X3_RC2_IfcRelDefinesByTemplate_type = 0;
entity* IFC4X3_RC2_IfcRelDefinesByType_type = 0;
entity* IFC4X3_RC2_IfcRelFillsElement_type = 0;
entity* IFC4X3_RC2_IfcRelFlowControlElements_type = 0;
entity* IFC4X3_RC2_IfcRelInterferesElements_type = 0;
entity* IFC4X3_RC2_IfcRelNests_type = 0;
entity* IFC4X3_RC2_IfcRelPositions_type = 0;
entity* IFC4X3_RC2_IfcRelProjectsElement_type = 0;
entity* IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type = 0;
entity* IFC4X3_RC2_IfcRelSequence_type = 0;
entity* IFC4X3_RC2_IfcRelServicesBuildings_type = 0;
entity* IFC4X3_RC2_IfcRelSpaceBoundary_type = 0;
entity* IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type = 0;
entity* IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type = 0;
entity* IFC4X3_RC2_IfcRelVoidsElement_type = 0;
entity* IFC4X3_RC2_IfcRelationship_type = 0;
entity* IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type = 0;
entity* IFC4X3_RC2_IfcRepresentation_type = 0;
entity* IFC4X3_RC2_IfcRepresentationContext_type = 0;
entity* IFC4X3_RC2_IfcRepresentationItem_type = 0;
entity* IFC4X3_RC2_IfcRepresentationMap_type = 0;
entity* IFC4X3_RC2_IfcResource_type = 0;
entity* IFC4X3_RC2_IfcResourceApprovalRelationship_type = 0;
entity* IFC4X3_RC2_IfcResourceConstraintRelationship_type = 0;
entity* IFC4X3_RC2_IfcResourceLevelRelationship_type = 0;
entity* IFC4X3_RC2_IfcResourceTime_type = 0;
entity* IFC4X3_RC2_IfcRevolvedAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type = 0;
entity* IFC4X3_RC2_IfcRightCircularCone_type = 0;
entity* IFC4X3_RC2_IfcRightCircularCylinder_type = 0;
entity* IFC4X3_RC2_IfcRoad_type = 0;
entity* IFC4X3_RC2_IfcRoof_type = 0;
entity* IFC4X3_RC2_IfcRoofType_type = 0;
entity* IFC4X3_RC2_IfcRoot_type = 0;
entity* IFC4X3_RC2_IfcRoundedRectangleProfileDef_type = 0;
entity* IFC4X3_RC2_IfcSIUnit_type = 0;
entity* IFC4X3_RC2_IfcSanitaryTerminal_type = 0;
entity* IFC4X3_RC2_IfcSanitaryTerminalType_type = 0;
entity* IFC4X3_RC2_IfcSchedulingTime_type = 0;
entity* IFC4X3_RC2_IfcSeamCurve_type = 0;
entity* IFC4X3_RC2_IfcSectionProperties_type = 0;
entity* IFC4X3_RC2_IfcSectionReinforcementProperties_type = 0;
entity* IFC4X3_RC2_IfcSectionedSolid_type = 0;
entity* IFC4X3_RC2_IfcSectionedSolidHorizontal_type = 0;
entity* IFC4X3_RC2_IfcSectionedSpine_type = 0;
entity* IFC4X3_RC2_IfcSectionedSurface_type = 0;
entity* IFC4X3_RC2_IfcSegment_type = 0;
entity* IFC4X3_RC2_IfcSegmentedReferenceCurve_type = 0;
entity* IFC4X3_RC2_IfcSensor_type = 0;
entity* IFC4X3_RC2_IfcSensorType_type = 0;
entity* IFC4X3_RC2_IfcSeriesParameterCurve_type = 0;
entity* IFC4X3_RC2_IfcShadingDevice_type = 0;
entity* IFC4X3_RC2_IfcShadingDeviceType_type = 0;
entity* IFC4X3_RC2_IfcShapeAspect_type = 0;
entity* IFC4X3_RC2_IfcShapeModel_type = 0;
entity* IFC4X3_RC2_IfcShapeRepresentation_type = 0;
entity* IFC4X3_RC2_IfcShellBasedSurfaceModel_type = 0;
entity* IFC4X3_RC2_IfcSign_type = 0;
entity* IFC4X3_RC2_IfcSignType_type = 0;
entity* IFC4X3_RC2_IfcSignal_type = 0;
entity* IFC4X3_RC2_IfcSignalType_type = 0;
entity* IFC4X3_RC2_IfcSimpleProperty_type = 0;
entity* IFC4X3_RC2_IfcSimplePropertyTemplate_type = 0;
entity* IFC4X3_RC2_IfcSite_type = 0;
entity* IFC4X3_RC2_IfcSlab_type = 0;
entity* IFC4X3_RC2_IfcSlabElementedCase_type = 0;
entity* IFC4X3_RC2_IfcSlabStandardCase_type = 0;
entity* IFC4X3_RC2_IfcSlabType_type = 0;
entity* IFC4X3_RC2_IfcSlippageConnectionCondition_type = 0;
entity* IFC4X3_RC2_IfcSolarDevice_type = 0;
entity* IFC4X3_RC2_IfcSolarDeviceType_type = 0;
entity* IFC4X3_RC2_IfcSolidModel_type = 0;
entity* IFC4X3_RC2_IfcSolidStratum_type = 0;
entity* IFC4X3_RC2_IfcSpace_type = 0;
entity* IFC4X3_RC2_IfcSpaceHeater_type = 0;
entity* IFC4X3_RC2_IfcSpaceHeaterType_type = 0;
entity* IFC4X3_RC2_IfcSpaceType_type = 0;
entity* IFC4X3_RC2_IfcSpatialElement_type = 0;
entity* IFC4X3_RC2_IfcSpatialElementType_type = 0;
entity* IFC4X3_RC2_IfcSpatialStructureElement_type = 0;
entity* IFC4X3_RC2_IfcSpatialStructureElementType_type = 0;
entity* IFC4X3_RC2_IfcSpatialZone_type = 0;
entity* IFC4X3_RC2_IfcSpatialZoneType_type = 0;
entity* IFC4X3_RC2_IfcSphere_type = 0;
entity* IFC4X3_RC2_IfcSphericalSurface_type = 0;
entity* IFC4X3_RC2_IfcStackTerminal_type = 0;
entity* IFC4X3_RC2_IfcStackTerminalType_type = 0;
entity* IFC4X3_RC2_IfcStair_type = 0;
entity* IFC4X3_RC2_IfcStairFlight_type = 0;
entity* IFC4X3_RC2_IfcStairFlightType_type = 0;
entity* IFC4X3_RC2_IfcStairType_type = 0;
entity* IFC4X3_RC2_IfcStructuralAction_type = 0;
entity* IFC4X3_RC2_IfcStructuralActivity_type = 0;
entity* IFC4X3_RC2_IfcStructuralAnalysisModel_type = 0;
entity* IFC4X3_RC2_IfcStructuralConnection_type = 0;
entity* IFC4X3_RC2_IfcStructuralConnectionCondition_type = 0;
entity* IFC4X3_RC2_IfcStructuralCurveAction_type = 0;
entity* IFC4X3_RC2_IfcStructuralCurveConnection_type = 0;
entity* IFC4X3_RC2_IfcStructuralCurveMember_type = 0;
entity* IFC4X3_RC2_IfcStructuralCurveMemberVarying_type = 0;
entity* IFC4X3_RC2_IfcStructuralCurveReaction_type = 0;
entity* IFC4X3_RC2_IfcStructuralItem_type = 0;
entity* IFC4X3_RC2_IfcStructuralLinearAction_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoad_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadCase_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadConfiguration_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadGroup_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadLinearForce_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadOrResult_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadPlanarForce_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadSingleForce_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadStatic_type = 0;
entity* IFC4X3_RC2_IfcStructuralLoadTemperature_type = 0;
entity* IFC4X3_RC2_IfcStructuralMember_type = 0;
entity* IFC4X3_RC2_IfcStructuralPlanarAction_type = 0;
entity* IFC4X3_RC2_IfcStructuralPointAction_type = 0;
entity* IFC4X3_RC2_IfcStructuralPointConnection_type = 0;
entity* IFC4X3_RC2_IfcStructuralPointReaction_type = 0;
entity* IFC4X3_RC2_IfcStructuralReaction_type = 0;
entity* IFC4X3_RC2_IfcStructuralResultGroup_type = 0;
entity* IFC4X3_RC2_IfcStructuralSurfaceAction_type = 0;
entity* IFC4X3_RC2_IfcStructuralSurfaceConnection_type = 0;
entity* IFC4X3_RC2_IfcStructuralSurfaceMember_type = 0;
entity* IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type = 0;
entity* IFC4X3_RC2_IfcStructuralSurfaceReaction_type = 0;
entity* IFC4X3_RC2_IfcStyleModel_type = 0;
entity* IFC4X3_RC2_IfcStyledItem_type = 0;
entity* IFC4X3_RC2_IfcStyledRepresentation_type = 0;
entity* IFC4X3_RC2_IfcSubContractResource_type = 0;
entity* IFC4X3_RC2_IfcSubContractResourceType_type = 0;
entity* IFC4X3_RC2_IfcSubedge_type = 0;
entity* IFC4X3_RC2_IfcSurface_type = 0;
entity* IFC4X3_RC2_IfcSurfaceCurve_type = 0;
entity* IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcSurfaceFeature_type = 0;
entity* IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type = 0;
entity* IFC4X3_RC2_IfcSurfaceOfRevolution_type = 0;
entity* IFC4X3_RC2_IfcSurfaceReinforcementArea_type = 0;
entity* IFC4X3_RC2_IfcSurfaceStyle_type = 0;
entity* IFC4X3_RC2_IfcSurfaceStyleLighting_type = 0;
entity* IFC4X3_RC2_IfcSurfaceStyleRefraction_type = 0;
entity* IFC4X3_RC2_IfcSurfaceStyleRendering_type = 0;
entity* IFC4X3_RC2_IfcSurfaceStyleShading_type = 0;
entity* IFC4X3_RC2_IfcSurfaceStyleWithTextures_type = 0;
entity* IFC4X3_RC2_IfcSurfaceTexture_type = 0;
entity* IFC4X3_RC2_IfcSweptAreaSolid_type = 0;
entity* IFC4X3_RC2_IfcSweptDiskSolid_type = 0;
entity* IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type = 0;
entity* IFC4X3_RC2_IfcSweptSurface_type = 0;
entity* IFC4X3_RC2_IfcSwitchingDevice_type = 0;
entity* IFC4X3_RC2_IfcSwitchingDeviceType_type = 0;
entity* IFC4X3_RC2_IfcSystem_type = 0;
entity* IFC4X3_RC2_IfcSystemFurnitureElement_type = 0;
entity* IFC4X3_RC2_IfcSystemFurnitureElementType_type = 0;
entity* IFC4X3_RC2_IfcTShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcTable_type = 0;
entity* IFC4X3_RC2_IfcTableColumn_type = 0;
entity* IFC4X3_RC2_IfcTableRow_type = 0;
entity* IFC4X3_RC2_IfcTank_type = 0;
entity* IFC4X3_RC2_IfcTankType_type = 0;
entity* IFC4X3_RC2_IfcTask_type = 0;
entity* IFC4X3_RC2_IfcTaskTime_type = 0;
entity* IFC4X3_RC2_IfcTaskTimeRecurring_type = 0;
entity* IFC4X3_RC2_IfcTaskType_type = 0;
entity* IFC4X3_RC2_IfcTelecomAddress_type = 0;
entity* IFC4X3_RC2_IfcTendon_type = 0;
entity* IFC4X3_RC2_IfcTendonAnchor_type = 0;
entity* IFC4X3_RC2_IfcTendonAnchorType_type = 0;
entity* IFC4X3_RC2_IfcTendonConduit_type = 0;
entity* IFC4X3_RC2_IfcTendonConduitType_type = 0;
entity* IFC4X3_RC2_IfcTendonType_type = 0;
entity* IFC4X3_RC2_IfcTessellatedFaceSet_type = 0;
entity* IFC4X3_RC2_IfcTessellatedItem_type = 0;
entity* IFC4X3_RC2_IfcTextLiteral_type = 0;
entity* IFC4X3_RC2_IfcTextLiteralWithExtent_type = 0;
entity* IFC4X3_RC2_IfcTextStyle_type = 0;
entity* IFC4X3_RC2_IfcTextStyleFontModel_type = 0;
entity* IFC4X3_RC2_IfcTextStyleForDefinedFont_type = 0;
entity* IFC4X3_RC2_IfcTextStyleTextModel_type = 0;
entity* IFC4X3_RC2_IfcTextureCoordinate_type = 0;
entity* IFC4X3_RC2_IfcTextureCoordinateGenerator_type = 0;
entity* IFC4X3_RC2_IfcTextureMap_type = 0;
entity* IFC4X3_RC2_IfcTextureVertex_type = 0;
entity* IFC4X3_RC2_IfcTextureVertexList_type = 0;
entity* IFC4X3_RC2_IfcTimePeriod_type = 0;
entity* IFC4X3_RC2_IfcTimeSeries_type = 0;
entity* IFC4X3_RC2_IfcTimeSeriesValue_type = 0;
entity* IFC4X3_RC2_IfcTopologicalRepresentationItem_type = 0;
entity* IFC4X3_RC2_IfcTopologyRepresentation_type = 0;
entity* IFC4X3_RC2_IfcToroidalSurface_type = 0;
entity* IFC4X3_RC2_IfcTrackElement_type = 0;
entity* IFC4X3_RC2_IfcTrackElementType_type = 0;
entity* IFC4X3_RC2_IfcTransformer_type = 0;
entity* IFC4X3_RC2_IfcTransformerType_type = 0;
entity* IFC4X3_RC2_IfcTransitionCurveSegment2D_type = 0;
entity* IFC4X3_RC2_IfcTransportElement_type = 0;
entity* IFC4X3_RC2_IfcTransportElementType_type = 0;
entity* IFC4X3_RC2_IfcTrapeziumProfileDef_type = 0;
entity* IFC4X3_RC2_IfcTriangulatedFaceSet_type = 0;
entity* IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type = 0;
entity* IFC4X3_RC2_IfcTrimmedCurve_type = 0;
entity* IFC4X3_RC2_IfcTubeBundle_type = 0;
entity* IFC4X3_RC2_IfcTubeBundleType_type = 0;
entity* IFC4X3_RC2_IfcTypeObject_type = 0;
entity* IFC4X3_RC2_IfcTypeProcess_type = 0;
entity* IFC4X3_RC2_IfcTypeProduct_type = 0;
entity* IFC4X3_RC2_IfcTypeResource_type = 0;
entity* IFC4X3_RC2_IfcUShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcUnitAssignment_type = 0;
entity* IFC4X3_RC2_IfcUnitaryControlElement_type = 0;
entity* IFC4X3_RC2_IfcUnitaryControlElementType_type = 0;
entity* IFC4X3_RC2_IfcUnitaryEquipment_type = 0;
entity* IFC4X3_RC2_IfcUnitaryEquipmentType_type = 0;
entity* IFC4X3_RC2_IfcValve_type = 0;
entity* IFC4X3_RC2_IfcValveType_type = 0;
entity* IFC4X3_RC2_IfcVector_type = 0;
entity* IFC4X3_RC2_IfcVertex_type = 0;
entity* IFC4X3_RC2_IfcVertexLoop_type = 0;
entity* IFC4X3_RC2_IfcVertexPoint_type = 0;
entity* IFC4X3_RC2_IfcVibrationDamper_type = 0;
entity* IFC4X3_RC2_IfcVibrationDamperType_type = 0;
entity* IFC4X3_RC2_IfcVibrationIsolator_type = 0;
entity* IFC4X3_RC2_IfcVibrationIsolatorType_type = 0;
entity* IFC4X3_RC2_IfcVirtualElement_type = 0;
entity* IFC4X3_RC2_IfcVirtualGridIntersection_type = 0;
entity* IFC4X3_RC2_IfcVoidStratum_type = 0;
entity* IFC4X3_RC2_IfcVoidingFeature_type = 0;
entity* IFC4X3_RC2_IfcWall_type = 0;
entity* IFC4X3_RC2_IfcWallElementedCase_type = 0;
entity* IFC4X3_RC2_IfcWallStandardCase_type = 0;
entity* IFC4X3_RC2_IfcWallType_type = 0;
entity* IFC4X3_RC2_IfcWasteTerminal_type = 0;
entity* IFC4X3_RC2_IfcWasteTerminalType_type = 0;
entity* IFC4X3_RC2_IfcWaterStratum_type = 0;
entity* IFC4X3_RC2_IfcWindow_type = 0;
entity* IFC4X3_RC2_IfcWindowLiningProperties_type = 0;
entity* IFC4X3_RC2_IfcWindowPanelProperties_type = 0;
entity* IFC4X3_RC2_IfcWindowStandardCase_type = 0;
entity* IFC4X3_RC2_IfcWindowStyle_type = 0;
entity* IFC4X3_RC2_IfcWindowType_type = 0;
entity* IFC4X3_RC2_IfcWorkCalendar_type = 0;
entity* IFC4X3_RC2_IfcWorkControl_type = 0;
entity* IFC4X3_RC2_IfcWorkPlan_type = 0;
entity* IFC4X3_RC2_IfcWorkSchedule_type = 0;
entity* IFC4X3_RC2_IfcWorkTime_type = 0;
entity* IFC4X3_RC2_IfcZShapeProfileDef_type = 0;
entity* IFC4X3_RC2_IfcZone_type = 0;
type_declaration* IFC4X3_RC2_IfcAbsorbedDoseMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcAccelerationMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcAngularVelocityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcArcIndex_type = 0;
type_declaration* IFC4X3_RC2_IfcAreaDensityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcAreaMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcBinary_type = 0;
type_declaration* IFC4X3_RC2_IfcBoolean_type = 0;
type_declaration* IFC4X3_RC2_IfcBoxAlignment_type = 0;
type_declaration* IFC4X3_RC2_IfcCardinalPointReference_type = 0;
type_declaration* IFC4X3_RC2_IfcComplexNumber_type = 0;
type_declaration* IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcContextDependentMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcCountMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcCurvatureMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcDate_type = 0;
type_declaration* IFC4X3_RC2_IfcDateTime_type = 0;
type_declaration* IFC4X3_RC2_IfcDayInMonthNumber_type = 0;
type_declaration* IFC4X3_RC2_IfcDayInWeekNumber_type = 0;
type_declaration* IFC4X3_RC2_IfcDescriptiveMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcDimensionCount_type = 0;
type_declaration* IFC4X3_RC2_IfcDoseEquivalentMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcDuration_type = 0;
type_declaration* IFC4X3_RC2_IfcDynamicViscosityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcElectricCapacitanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcElectricChargeMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcElectricConductanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcElectricCurrentMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcElectricResistanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcElectricVoltageMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcEnergyMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcFontStyle_type = 0;
type_declaration* IFC4X3_RC2_IfcFontVariant_type = 0;
type_declaration* IFC4X3_RC2_IfcFontWeight_type = 0;
type_declaration* IFC4X3_RC2_IfcForceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcFrequencyMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcGloballyUniqueId_type = 0;
type_declaration* IFC4X3_RC2_IfcHeatFluxDensityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcHeatingValueMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcIdentifier_type = 0;
type_declaration* IFC4X3_RC2_IfcIlluminanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcInductanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcInteger_type = 0;
type_declaration* IFC4X3_RC2_IfcIntegerCountRateMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcIonConcentrationMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcKinematicViscosityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLabel_type = 0;
type_declaration* IFC4X3_RC2_IfcLanguageId_type = 0;
type_declaration* IFC4X3_RC2_IfcLengthMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLineIndex_type = 0;
type_declaration* IFC4X3_RC2_IfcLinearForceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLinearMomentMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLinearStiffnessMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLinearVelocityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLogical_type = 0;
type_declaration* IFC4X3_RC2_IfcLuminousFluxMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcLuminousIntensityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMagneticFluxMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMassDensityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMassFlowRateMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMassMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMassPerLengthMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcModulusOfElasticityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMolecularWeightMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMomentOfInertiaMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMonetaryMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcMonthInYearNumber_type = 0;
type_declaration* IFC4X3_RC2_IfcNonNegativeLengthMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcNormalisedRatioMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcNumericMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPHMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcParameterValue_type = 0;
type_declaration* IFC4X3_RC2_IfcPlanarForceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPlaneAngleMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPositiveInteger_type = 0;
type_declaration* IFC4X3_RC2_IfcPositiveLengthMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPositiveRatioMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPowerMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPresentableText_type = 0;
type_declaration* IFC4X3_RC2_IfcPressureMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcPropertySetDefinitionSet_type = 0;
type_declaration* IFC4X3_RC2_IfcRadioActivityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcRatioMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcReal_type = 0;
type_declaration* IFC4X3_RC2_IfcRotationalFrequencyMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcRotationalMassMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcRotationalStiffnessMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSectionModulusMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcShearModulusMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSolidAngleMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSoundPowerLevelMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSoundPowerMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSoundPressureLevelMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSoundPressureMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcSpecularExponent_type = 0;
type_declaration* IFC4X3_RC2_IfcSpecularRoughness_type = 0;
type_declaration* IFC4X3_RC2_IfcTemperatureGradientMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcText_type = 0;
type_declaration* IFC4X3_RC2_IfcTextAlignment_type = 0;
type_declaration* IFC4X3_RC2_IfcTextDecoration_type = 0;
type_declaration* IFC4X3_RC2_IfcTextFontName_type = 0;
type_declaration* IFC4X3_RC2_IfcTextTransformation_type = 0;
type_declaration* IFC4X3_RC2_IfcThermalAdmittanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcThermalConductivityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcThermalResistanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcThermalTransmittanceMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcTime_type = 0;
type_declaration* IFC4X3_RC2_IfcTimeMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcTimeStamp_type = 0;
type_declaration* IFC4X3_RC2_IfcTorqueMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcURIReference_type = 0;
type_declaration* IFC4X3_RC2_IfcVaporPermeabilityMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcVolumeMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcWarpingConstantMeasure_type = 0;
type_declaration* IFC4X3_RC2_IfcWarpingMomentMeasure_type = 0;
select_type* IFC4X3_RC2_IfcActorSelect_type = 0;
select_type* IFC4X3_RC2_IfcAppliedValueSelect_type = 0;
select_type* IFC4X3_RC2_IfcAxis2Placement_type = 0;
select_type* IFC4X3_RC2_IfcBendingParameterSelect_type = 0;
select_type* IFC4X3_RC2_IfcBooleanOperand_type = 0;
select_type* IFC4X3_RC2_IfcClassificationReferenceSelect_type = 0;
select_type* IFC4X3_RC2_IfcClassificationSelect_type = 0;
select_type* IFC4X3_RC2_IfcColour_type = 0;
select_type* IFC4X3_RC2_IfcColourOrFactor_type = 0;
select_type* IFC4X3_RC2_IfcCoordinateReferenceSystemSelect_type = 0;
select_type* IFC4X3_RC2_IfcCsgSelect_type = 0;
select_type* IFC4X3_RC2_IfcCurveFontOrScaledCurveFontSelect_type = 0;
select_type* IFC4X3_RC2_IfcCurveMeasureSelect_type = 0;
select_type* IFC4X3_RC2_IfcCurveOnSurface_type = 0;
select_type* IFC4X3_RC2_IfcCurveOrEdgeCurve_type = 0;
select_type* IFC4X3_RC2_IfcCurveStyleFontSelect_type = 0;
select_type* IFC4X3_RC2_IfcDefinitionSelect_type = 0;
select_type* IFC4X3_RC2_IfcDerivedMeasureValue_type = 0;
select_type* IFC4X3_RC2_IfcDocumentSelect_type = 0;
select_type* IFC4X3_RC2_IfcFacilityPartTypeSelect_type = 0;
select_type* IFC4X3_RC2_IfcFillStyleSelect_type = 0;
select_type* IFC4X3_RC2_IfcGeometricSetSelect_type = 0;
select_type* IFC4X3_RC2_IfcGridPlacementDirectionSelect_type = 0;
select_type* IFC4X3_RC2_IfcHatchLineDistanceSelect_type = 0;
select_type* IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type = 0;
select_type* IFC4X3_RC2_IfcInterferenceSelect_type = 0;
select_type* IFC4X3_RC2_IfcLayeredItem_type = 0;
select_type* IFC4X3_RC2_IfcLibrarySelect_type = 0;
select_type* IFC4X3_RC2_IfcLightDistributionDataSourceSelect_type = 0;
select_type* IFC4X3_RC2_IfcLinearAxisSelect_type = 0;
select_type* IFC4X3_RC2_IfcMaterialSelect_type = 0;
select_type* IFC4X3_RC2_IfcMeasureValue_type = 0;
select_type* IFC4X3_RC2_IfcMetricValueSelect_type = 0;
select_type* IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type = 0;
select_type* IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type = 0;
select_type* IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type = 0;
select_type* IFC4X3_RC2_IfcObjectReferenceSelect_type = 0;
select_type* IFC4X3_RC2_IfcPointOrVertexPoint_type = 0;
select_type* IFC4X3_RC2_IfcPresentationStyleSelect_type = 0;
select_type* IFC4X3_RC2_IfcProcessSelect_type = 0;
select_type* IFC4X3_RC2_IfcProductRepresentationSelect_type = 0;
select_type* IFC4X3_RC2_IfcProductSelect_type = 0;
select_type* IFC4X3_RC2_IfcPropertySetDefinitionSelect_type = 0;
select_type* IFC4X3_RC2_IfcResourceObjectSelect_type = 0;
select_type* IFC4X3_RC2_IfcResourceSelect_type = 0;
select_type* IFC4X3_RC2_IfcRotationalStiffnessSelect_type = 0;
select_type* IFC4X3_RC2_IfcSegmentIndexSelect_type = 0;
select_type* IFC4X3_RC2_IfcShell_type = 0;
select_type* IFC4X3_RC2_IfcSimpleValue_type = 0;
select_type* IFC4X3_RC2_IfcSizeSelect_type = 0;
select_type* IFC4X3_RC2_IfcSolidOrShell_type = 0;
select_type* IFC4X3_RC2_IfcSpaceBoundarySelect_type = 0;
select_type* IFC4X3_RC2_IfcSpatialReferenceSelect_type = 0;
select_type* IFC4X3_RC2_IfcSpecularHighlightSelect_type = 0;
select_type* IFC4X3_RC2_IfcStructuralActivityAssignmentSelect_type = 0;
select_type* IFC4X3_RC2_IfcStyleAssignmentSelect_type = 0;
select_type* IFC4X3_RC2_IfcSurfaceOrFaceSurface_type = 0;
select_type* IFC4X3_RC2_IfcSurfaceStyleElementSelect_type = 0;
select_type* IFC4X3_RC2_IfcTextFontSelect_type = 0;
select_type* IFC4X3_RC2_IfcTimeOrRatioSelect_type = 0;
select_type* IFC4X3_RC2_IfcTranslationalStiffnessSelect_type = 0;
select_type* IFC4X3_RC2_IfcTransportElementTypeSelect_type = 0;
select_type* IFC4X3_RC2_IfcTrimmingSelect_type = 0;
select_type* IFC4X3_RC2_IfcUnit_type = 0;
select_type* IFC4X3_RC2_IfcValue_type = 0;
select_type* IFC4X3_RC2_IfcVectorOrDirection_type = 0;
select_type* IFC4X3_RC2_IfcWarpingStiffnessSelect_type = 0;
enumeration_type* IFC4X3_RC2_IfcActionRequestTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcActionSourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcActionTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcActuatorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAddressTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAirTerminalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAlarmTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAlignmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAnalysisModelTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAnnotationTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcArithmeticOperatorEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAssemblyPlaceEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBSplineCurveForm_type = 0;
enumeration_type* IFC4X3_RC2_IfcBSplineSurfaceForm_type = 0;
enumeration_type* IFC4X3_RC2_IfcBeamTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBearingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBenchmarkEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBoilerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBooleanOperator_type = 0;
enumeration_type* IFC4X3_RC2_IfcBridgePartTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBridgeTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBuildingSystemTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBuiltSystemTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcBurnerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCableFittingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCableSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcChangeActionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcChillerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcChimneyTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCoilTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcColumnTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCompressorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCondenserTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcConnectionTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcConstraintEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcControllerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCooledBeamTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCoolingTowerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCostItemTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCostScheduleTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCourseTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCoveringTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCrewResourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCurtainWallTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcCurveInterpolationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDamperTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDataOriginEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDerivedUnitEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDirectionSenseEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDistributionBoardTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDistributionPortTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDistributionSystemEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDocumentConfidentialityEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDocumentStatusEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDoorPanelOperationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDoorPanelPositionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDoorStyleConstructionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDoorStyleOperationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDoorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDoorTypeOperationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDuctFittingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDuctSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcDuctSilencerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEarthworksCutTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEarthworksFillTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricApplianceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricMotorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElementAssemblyTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcElementCompositionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEngineTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEvaporatorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEventTriggerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcEventTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFacilityUsageEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFanTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFastenerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFilterTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFlowDirectionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFlowMeterTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFootingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcFurnitureTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcGeographicElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcGeometricProjectionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcGlobalOrLocalEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcGridTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcHeatExchangerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcHumidifierTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcInterceptorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcInternalOrExternalEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcInventoryTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcJunctionBoxTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcKnotType_type = 0;
enumeration_type* IFC4X3_RC2_IfcLaborResourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLampTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLayerSetDirectionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLightDistributionCurveEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLightEmissionSourceEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLightFixtureTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLoadGroupTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcLogicalOperatorEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMarineFacilityTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMarinePartTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMemberTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMooringDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcMotorConnectionTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcNavigationElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcNullStyle_type = 0;
enumeration_type* IFC4X3_RC2_IfcObjectTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcObjectiveEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcOccupantTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcOpeningElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcOutletTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPermitTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPileConstructionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPileTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPipeFittingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPipeSegmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPlateTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type = 0;
enumeration_type* IFC4X3_RC2_IfcProcedureTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcProfileTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcProjectOrderTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcProjectionElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcPumpTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRailTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRailingTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRailwayPartTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRampFlightTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRampTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRecurrenceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReferentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReflectanceMethodEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReinforcingBarRoleEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReinforcingBarTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRoadPartTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRoleEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcRoofTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSIPrefix_type = 0;
enumeration_type* IFC4X3_RC2_IfcSIUnitName_type = 0;
enumeration_type* IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSectionTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSensorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSequenceEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcShadingDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSignTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSignalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSlabTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSolarDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSpaceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSpatialZoneTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStackTerminalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStairFlightTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStairTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStateEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSubContractResourceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSurfaceSide_type = 0;
enumeration_type* IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTankTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTaskDurationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTaskTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTendonAnchorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTendonConduitTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTendonTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTextPath_type = 0;
enumeration_type* IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTrackElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTransformerTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTransitionCode_type = 0;
enumeration_type* IFC4X3_RC2_IfcTransitionCurveType_type = 0;
enumeration_type* IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcTrimmingPreference_type = 0;
enumeration_type* IFC4X3_RC2_IfcTubeBundleTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcUnitEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcValveTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcVibrationDamperTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWallTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWasteTerminalTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWindowPanelOperationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWindowPanelPositionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWindowStyleConstructionEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWindowStyleOperationEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWindowTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWindowTypePartitioningEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWorkCalendarTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWorkPlanTypeEnum_type = 0;
enumeration_type* IFC4X3_RC2_IfcWorkScheduleTypeEnum_type = 0;

class IFC4X3_RC2_instance_factory : public IfcParse::instance_factory {
    virtual IfcUtil::IfcBaseClass* operator()(IfcEntityInstanceData* data) const {
        switch(data->type()->index_in_schema()) {
            case 0: return new ::Ifc4x3_rc2::IfcAbsorbedDoseMeasure(data);
            case 1: return new ::Ifc4x3_rc2::IfcAccelerationMeasure(data);
            case 2: return new ::Ifc4x3_rc2::IfcActionRequest(data);
            case 3: return new ::Ifc4x3_rc2::IfcActionRequestTypeEnum(data);
            case 4: return new ::Ifc4x3_rc2::IfcActionSourceTypeEnum(data);
            case 5: return new ::Ifc4x3_rc2::IfcActionTypeEnum(data);
            case 6: return new ::Ifc4x3_rc2::IfcActor(data);
            case 7: return new ::Ifc4x3_rc2::IfcActorRole(data);
            case 9: return new ::Ifc4x3_rc2::IfcActuator(data);
            case 10: return new ::Ifc4x3_rc2::IfcActuatorType(data);
            case 11: return new ::Ifc4x3_rc2::IfcActuatorTypeEnum(data);
            case 12: return new ::Ifc4x3_rc2::IfcAddress(data);
            case 13: return new ::Ifc4x3_rc2::IfcAddressTypeEnum(data);
            case 14: return new ::Ifc4x3_rc2::IfcAdvancedBrep(data);
            case 15: return new ::Ifc4x3_rc2::IfcAdvancedBrepWithVoids(data);
            case 16: return new ::Ifc4x3_rc2::IfcAdvancedFace(data);
            case 17: return new ::Ifc4x3_rc2::IfcAirTerminal(data);
            case 18: return new ::Ifc4x3_rc2::IfcAirTerminalBox(data);
            case 19: return new ::Ifc4x3_rc2::IfcAirTerminalBoxType(data);
            case 20: return new ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum(data);
            case 21: return new ::Ifc4x3_rc2::IfcAirTerminalType(data);
            case 22: return new ::Ifc4x3_rc2::IfcAirTerminalTypeEnum(data);
            case 23: return new ::Ifc4x3_rc2::IfcAirToAirHeatRecovery(data);
            case 24: return new ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryType(data);
            case 25: return new ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum(data);
            case 26: return new ::Ifc4x3_rc2::IfcAlarm(data);
            case 27: return new ::Ifc4x3_rc2::IfcAlarmType(data);
            case 28: return new ::Ifc4x3_rc2::IfcAlarmTypeEnum(data);
            case 29: return new ::Ifc4x3_rc2::IfcAlignment(data);
            case 30: return new ::Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc(data);
            case 31: return new ::Ifc4x3_rc2::IfcAlignment2DVerSegLine(data);
            case 32: return new ::Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc(data);
            case 33: return new ::Ifc4x3_rc2::IfcAlignmentCant(data);
            case 34: return new ::Ifc4x3_rc2::IfcAlignmentCantSegment(data);
            case 35: return new ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum(data);
            case 36: return new ::Ifc4x3_rc2::IfcAlignmentCurve(data);
            case 37: return new ::Ifc4x3_rc2::IfcAlignmentHorizontal(data);
            case 38: return new ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment(data);
            case 39: return new ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum(data);
            case 40: return new ::Ifc4x3_rc2::IfcAlignmentParameterSegment(data);
            case 41: return new ::Ifc4x3_rc2::IfcAlignmentSegment(data);
            case 42: return new ::Ifc4x3_rc2::IfcAlignmentTypeEnum(data);
            case 43: return new ::Ifc4x3_rc2::IfcAlignmentVertical(data);
            case 44: return new ::Ifc4x3_rc2::IfcAlignmentVerticalSegment(data);
            case 45: return new ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum(data);
            case 46: return new ::Ifc4x3_rc2::IfcAmountOfSubstanceMeasure(data);
            case 47: return new ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum(data);
            case 48: return new ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum(data);
            case 49: return new ::Ifc4x3_rc2::IfcAngularVelocityMeasure(data);
            case 50: return new ::Ifc4x3_rc2::IfcAnnotation(data);
            case 51: return new ::Ifc4x3_rc2::IfcAnnotationFillArea(data);
            case 52: return new ::Ifc4x3_rc2::IfcAnnotationTypeEnum(data);
            case 53: return new ::Ifc4x3_rc2::IfcApplication(data);
            case 54: return new ::Ifc4x3_rc2::IfcAppliedValue(data);
            case 56: return new ::Ifc4x3_rc2::IfcApproval(data);
            case 57: return new ::Ifc4x3_rc2::IfcApprovalRelationship(data);
            case 58: return new ::Ifc4x3_rc2::IfcArbitraryClosedProfileDef(data);
            case 59: return new ::Ifc4x3_rc2::IfcArbitraryOpenProfileDef(data);
            case 60: return new ::Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids(data);
            case 61: return new ::Ifc4x3_rc2::IfcArcIndex(data);
            case 62: return new ::Ifc4x3_rc2::IfcAreaDensityMeasure(data);
            case 63: return new ::Ifc4x3_rc2::IfcAreaMeasure(data);
            case 64: return new ::Ifc4x3_rc2::IfcArithmeticOperatorEnum(data);
            case 65: return new ::Ifc4x3_rc2::IfcAssemblyPlaceEnum(data);
            case 66: return new ::Ifc4x3_rc2::IfcAsset(data);
            case 67: return new ::Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef(data);
            case 68: return new ::Ifc4x3_rc2::IfcAudioVisualAppliance(data);
            case 69: return new ::Ifc4x3_rc2::IfcAudioVisualApplianceType(data);
            case 70: return new ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum(data);
            case 71: return new ::Ifc4x3_rc2::IfcAxis1Placement(data);
            case 73: return new ::Ifc4x3_rc2::IfcAxis2Placement2D(data);
            case 74: return new ::Ifc4x3_rc2::IfcAxis2Placement3D(data);
            case 75: return new ::Ifc4x3_rc2::IfcAxis2PlacementLinear(data);
            case 76: return new ::Ifc4x3_rc2::IfcAxisLateralInclination(data);
            case 77: return new ::Ifc4x3_rc2::IfcBeam(data);
            case 78: return new ::Ifc4x3_rc2::IfcBeamStandardCase(data);
            case 79: return new ::Ifc4x3_rc2::IfcBeamType(data);
            case 80: return new ::Ifc4x3_rc2::IfcBeamTypeEnum(data);
            case 81: return new ::Ifc4x3_rc2::IfcBearing(data);
            case 82: return new ::Ifc4x3_rc2::IfcBearingType(data);
            case 83: return new ::Ifc4x3_rc2::IfcBearingTypeDisplacementEnum(data);
            case 84: return new ::Ifc4x3_rc2::IfcBearingTypeEnum(data);
            case 85: return new ::Ifc4x3_rc2::IfcBenchmarkEnum(data);
            case 87: return new ::Ifc4x3_rc2::IfcBinary(data);
            case 88: return new ::Ifc4x3_rc2::IfcBlobTexture(data);
            case 89: return new ::Ifc4x3_rc2::IfcBlock(data);
            case 90: return new ::Ifc4x3_rc2::IfcBlossCurve(data);
            case 91: return new ::Ifc4x3_rc2::IfcBoiler(data);
            case 92: return new ::Ifc4x3_rc2::IfcBoilerType(data);
            case 93: return new ::Ifc4x3_rc2::IfcBoilerTypeEnum(data);
            case 94: return new ::Ifc4x3_rc2::IfcBoolean(data);
            case 95: return new ::Ifc4x3_rc2::IfcBooleanClippingResult(data);
            case 97: return new ::Ifc4x3_rc2::IfcBooleanOperator(data);
            case 98: return new ::Ifc4x3_rc2::IfcBooleanResult(data);
            case 99: return new ::Ifc4x3_rc2::IfcBorehole(data);
            case 100: return new ::Ifc4x3_rc2::IfcBoundaryCondition(data);
            case 101: return new ::Ifc4x3_rc2::IfcBoundaryCurve(data);
            case 102: return new ::Ifc4x3_rc2::IfcBoundaryEdgeCondition(data);
            case 103: return new ::Ifc4x3_rc2::IfcBoundaryFaceCondition(data);
            case 104: return new ::Ifc4x3_rc2::IfcBoundaryNodeCondition(data);
            case 105: return new ::Ifc4x3_rc2::IfcBoundaryNodeConditionWarping(data);
            case 106: return new ::Ifc4x3_rc2::IfcBoundedCurve(data);
            case 107: return new ::Ifc4x3_rc2::IfcBoundedSurface(data);
            case 108: return new ::Ifc4x3_rc2::IfcBoundingBox(data);
            case 109: return new ::Ifc4x3_rc2::IfcBoxAlignment(data);
            case 110: return new ::Ifc4x3_rc2::IfcBoxedHalfSpace(data);
            case 111: return new ::Ifc4x3_rc2::IfcBridge(data);
            case 112: return new ::Ifc4x3_rc2::IfcBridgePart(data);
            case 113: return new ::Ifc4x3_rc2::IfcBridgePartTypeEnum(data);
            case 114: return new ::Ifc4x3_rc2::IfcBridgeTypeEnum(data);
            case 115: return new ::Ifc4x3_rc2::IfcBSplineCurve(data);
            case 116: return new ::Ifc4x3_rc2::IfcBSplineCurveForm(data);
            case 117: return new ::Ifc4x3_rc2::IfcBSplineCurveWithKnots(data);
            case 118: return new ::Ifc4x3_rc2::IfcBSplineSurface(data);
            case 119: return new ::Ifc4x3_rc2::IfcBSplineSurfaceForm(data);
            case 120: return new ::Ifc4x3_rc2::IfcBSplineSurfaceWithKnots(data);
            case 121: return new ::Ifc4x3_rc2::IfcBuilding(data);
            case 122: return new ::Ifc4x3_rc2::IfcBuildingElementPart(data);
            case 123: return new ::Ifc4x3_rc2::IfcBuildingElementPartType(data);
            case 124: return new ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum(data);
            case 125: return new ::Ifc4x3_rc2::IfcBuildingElementProxy(data);
            case 126: return new ::Ifc4x3_rc2::IfcBuildingElementProxyType(data);
            case 127: return new ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum(data);
            case 128: return new ::Ifc4x3_rc2::IfcBuildingStorey(data);
            case 129: return new ::Ifc4x3_rc2::IfcBuildingSystem(data);
            case 130: return new ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum(data);
            case 131: return new ::Ifc4x3_rc2::IfcBuiltElement(data);
            case 132: return new ::Ifc4x3_rc2::IfcBuiltElementType(data);
            case 133: return new ::Ifc4x3_rc2::IfcBuiltSystem(data);
            case 134: return new ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum(data);
            case 135: return new ::Ifc4x3_rc2::IfcBurner(data);
            case 136: return new ::Ifc4x3_rc2::IfcBurnerType(data);
            case 137: return new ::Ifc4x3_rc2::IfcBurnerTypeEnum(data);
            case 138: return new ::Ifc4x3_rc2::IfcCableCarrierFitting(data);
            case 139: return new ::Ifc4x3_rc2::IfcCableCarrierFittingType(data);
            case 140: return new ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum(data);
            case 141: return new ::Ifc4x3_rc2::IfcCableCarrierSegment(data);
            case 142: return new ::Ifc4x3_rc2::IfcCableCarrierSegmentType(data);
            case 143: return new ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum(data);
            case 144: return new ::Ifc4x3_rc2::IfcCableFitting(data);
            case 145: return new ::Ifc4x3_rc2::IfcCableFittingType(data);
            case 146: return new ::Ifc4x3_rc2::IfcCableFittingTypeEnum(data);
            case 147: return new ::Ifc4x3_rc2::IfcCableSegment(data);
            case 148: return new ::Ifc4x3_rc2::IfcCableSegmentType(data);
            case 149: return new ::Ifc4x3_rc2::IfcCableSegmentTypeEnum(data);
            case 150: return new ::Ifc4x3_rc2::IfcCaissonFoundation(data);
            case 151: return new ::Ifc4x3_rc2::IfcCaissonFoundationType(data);
            case 152: return new ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum(data);
            case 153: return new ::Ifc4x3_rc2::IfcCardinalPointReference(data);
            case 154: return new ::Ifc4x3_rc2::IfcCartesianPoint(data);
            case 155: return new ::Ifc4x3_rc2::IfcCartesianPointList(data);
            case 156: return new ::Ifc4x3_rc2::IfcCartesianPointList2D(data);
            case 157: return new ::Ifc4x3_rc2::IfcCartesianPointList3D(data);
            case 158: return new ::Ifc4x3_rc2::IfcCartesianTransformationOperator(data);
            case 159: return new ::Ifc4x3_rc2::IfcCartesianTransformationOperator2D(data);
            case 160: return new ::Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform(data);
            case 161: return new ::Ifc4x3_rc2::IfcCartesianTransformationOperator3D(data);
            case 162: return new ::Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform(data);
            case 163: return new ::Ifc4x3_rc2::IfcCenterLineProfileDef(data);
            case 164: return new ::Ifc4x3_rc2::IfcChangeActionEnum(data);
            case 165: return new ::Ifc4x3_rc2::IfcChiller(data);
            case 166: return new ::Ifc4x3_rc2::IfcChillerType(data);
            case 167: return new ::Ifc4x3_rc2::IfcChillerTypeEnum(data);
            case 168: return new ::Ifc4x3_rc2::IfcChimney(data);
            case 169: return new ::Ifc4x3_rc2::IfcChimneyType(data);
            case 170: return new ::Ifc4x3_rc2::IfcChimneyTypeEnum(data);
            case 171: return new ::Ifc4x3_rc2::IfcCircle(data);
            case 172: return new ::Ifc4x3_rc2::IfcCircleHollowProfileDef(data);
            case 173: return new ::Ifc4x3_rc2::IfcCircleProfileDef(data);
            case 174: return new ::Ifc4x3_rc2::IfcCircularArcSegment2D(data);
            case 175: return new ::Ifc4x3_rc2::IfcCivilElement(data);
            case 176: return new ::Ifc4x3_rc2::IfcCivilElementType(data);
            case 177: return new ::Ifc4x3_rc2::IfcClassification(data);
            case 178: return new ::Ifc4x3_rc2::IfcClassificationReference(data);
            case 181: return new ::Ifc4x3_rc2::IfcClosedShell(data);
            case 182: return new ::Ifc4x3_rc2::IfcClothoid(data);
            case 183: return new ::Ifc4x3_rc2::IfcCoil(data);
            case 184: return new ::Ifc4x3_rc2::IfcCoilType(data);
            case 185: return new ::Ifc4x3_rc2::IfcCoilTypeEnum(data);
            case 188: return new ::Ifc4x3_rc2::IfcColourRgb(data);
            case 189: return new ::Ifc4x3_rc2::IfcColourRgbList(data);
            case 190: return new ::Ifc4x3_rc2::IfcColourSpecification(data);
            case 191: return new ::Ifc4x3_rc2::IfcColumn(data);
            case 192: return new ::Ifc4x3_rc2::IfcColumnStandardCase(data);
            case 193: return new ::Ifc4x3_rc2::IfcColumnType(data);
            case 194: return new ::Ifc4x3_rc2::IfcColumnTypeEnum(data);
            case 195: return new ::Ifc4x3_rc2::IfcCommunicationsAppliance(data);
            case 196: return new ::Ifc4x3_rc2::IfcCommunicationsApplianceType(data);
            case 197: return new ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum(data);
            case 198: return new ::Ifc4x3_rc2::IfcComplexNumber(data);
            case 199: return new ::Ifc4x3_rc2::IfcComplexProperty(data);
            case 200: return new ::Ifc4x3_rc2::IfcComplexPropertyTemplate(data);
            case 201: return new ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum(data);
            case 202: return new ::Ifc4x3_rc2::IfcCompositeCurve(data);
            case 203: return new ::Ifc4x3_rc2::IfcCompositeCurveOnSurface(data);
            case 204: return new ::Ifc4x3_rc2::IfcCompositeCurveSegment(data);
            case 205: return new ::Ifc4x3_rc2::IfcCompositeProfileDef(data);
            case 206: return new ::Ifc4x3_rc2::IfcCompoundPlaneAngleMeasure(data);
            case 207: return new ::Ifc4x3_rc2::IfcCompressor(data);
            case 208: return new ::Ifc4x3_rc2::IfcCompressorType(data);
            case 209: return new ::Ifc4x3_rc2::IfcCompressorTypeEnum(data);
            case 210: return new ::Ifc4x3_rc2::IfcCondenser(data);
            case 211: return new ::Ifc4x3_rc2::IfcCondenserType(data);
            case 212: return new ::Ifc4x3_rc2::IfcCondenserTypeEnum(data);
            case 213: return new ::Ifc4x3_rc2::IfcConic(data);
            case 214: return new ::Ifc4x3_rc2::IfcConnectedFaceSet(data);
            case 215: return new ::Ifc4x3_rc2::IfcConnectionCurveGeometry(data);
            case 216: return new ::Ifc4x3_rc2::IfcConnectionGeometry(data);
            case 217: return new ::Ifc4x3_rc2::IfcConnectionPointEccentricity(data);
            case 218: return new ::Ifc4x3_rc2::IfcConnectionPointGeometry(data);
            case 219: return new ::Ifc4x3_rc2::IfcConnectionSurfaceGeometry(data);
            case 220: return new ::Ifc4x3_rc2::IfcConnectionTypeEnum(data);
            case 221: return new ::Ifc4x3_rc2::IfcConnectionVolumeGeometry(data);
            case 222: return new ::Ifc4x3_rc2::IfcConstraint(data);
            case 223: return new ::Ifc4x3_rc2::IfcConstraintEnum(data);
            case 224: return new ::Ifc4x3_rc2::IfcConstructionEquipmentResource(data);
            case 225: return new ::Ifc4x3_rc2::IfcConstructionEquipmentResourceType(data);
            case 226: return new ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum(data);
            case 227: return new ::Ifc4x3_rc2::IfcConstructionMaterialResource(data);
            case 228: return new ::Ifc4x3_rc2::IfcConstructionMaterialResourceType(data);
            case 229: return new ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum(data);
            case 230: return new ::Ifc4x3_rc2::IfcConstructionProductResource(data);
            case 231: return new ::Ifc4x3_rc2::IfcConstructionProductResourceType(data);
            case 232: return new ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum(data);
            case 233: return new ::Ifc4x3_rc2::IfcConstructionResource(data);
            case 234: return new ::Ifc4x3_rc2::IfcConstructionResourceType(data);
            case 235: return new ::Ifc4x3_rc2::IfcContext(data);
            case 236: return new ::Ifc4x3_rc2::IfcContextDependentMeasure(data);
            case 237: return new ::Ifc4x3_rc2::IfcContextDependentUnit(data);
            case 238: return new ::Ifc4x3_rc2::IfcControl(data);
            case 239: return new ::Ifc4x3_rc2::IfcController(data);
            case 240: return new ::Ifc4x3_rc2::IfcControllerType(data);
            case 241: return new ::Ifc4x3_rc2::IfcControllerTypeEnum(data);
            case 242: return new ::Ifc4x3_rc2::IfcConversionBasedUnit(data);
            case 243: return new ::Ifc4x3_rc2::IfcConversionBasedUnitWithOffset(data);
            case 244: return new ::Ifc4x3_rc2::IfcConveyorSegment(data);
            case 245: return new ::Ifc4x3_rc2::IfcConveyorSegmentType(data);
            case 246: return new ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum(data);
            case 247: return new ::Ifc4x3_rc2::IfcCooledBeam(data);
            case 248: return new ::Ifc4x3_rc2::IfcCooledBeamType(data);
            case 249: return new ::Ifc4x3_rc2::IfcCooledBeamTypeEnum(data);
            case 250: return new ::Ifc4x3_rc2::IfcCoolingTower(data);
            case 251: return new ::Ifc4x3_rc2::IfcCoolingTowerType(data);
            case 252: return new ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum(data);
            case 253: return new ::Ifc4x3_rc2::IfcCoordinateOperation(data);
            case 254: return new ::Ifc4x3_rc2::IfcCoordinateReferenceSystem(data);
            case 256: return new ::Ifc4x3_rc2::IfcCostItem(data);
            case 257: return new ::Ifc4x3_rc2::IfcCostItemTypeEnum(data);
            case 258: return new ::Ifc4x3_rc2::IfcCostSchedule(data);
            case 259: return new ::Ifc4x3_rc2::IfcCostScheduleTypeEnum(data);
            case 260: return new ::Ifc4x3_rc2::IfcCostValue(data);
            case 261: return new ::Ifc4x3_rc2::IfcCountMeasure(data);
            case 262: return new ::Ifc4x3_rc2::IfcCourse(data);
            case 263: return new ::Ifc4x3_rc2::IfcCourseType(data);
            case 264: return new ::Ifc4x3_rc2::IfcCourseTypeEnum(data);
            case 265: return new ::Ifc4x3_rc2::IfcCovering(data);
            case 266: return new ::Ifc4x3_rc2::IfcCoveringType(data);
            case 267: return new ::Ifc4x3_rc2::IfcCoveringTypeEnum(data);
            case 268: return new ::Ifc4x3_rc2::IfcCrewResource(data);
            case 269: return new ::Ifc4x3_rc2::IfcCrewResourceType(data);
            case 270: return new ::Ifc4x3_rc2::IfcCrewResourceTypeEnum(data);
            case 271: return new ::Ifc4x3_rc2::IfcCsgPrimitive3D(data);
            case 273: return new ::Ifc4x3_rc2::IfcCsgSolid(data);
            case 274: return new ::Ifc4x3_rc2::IfcCShapeProfileDef(data);
            case 275: return new ::Ifc4x3_rc2::IfcCurrencyRelationship(data);
            case 276: return new ::Ifc4x3_rc2::IfcCurtainWall(data);
            case 277: return new ::Ifc4x3_rc2::IfcCurtainWallType(data);
            case 278: return new ::Ifc4x3_rc2::IfcCurtainWallTypeEnum(data);
            case 279: return new ::Ifc4x3_rc2::IfcCurvatureMeasure(data);
            case 280: return new ::Ifc4x3_rc2::IfcCurve(data);
            case 281: return new ::Ifc4x3_rc2::IfcCurveBoundedPlane(data);
            case 282: return new ::Ifc4x3_rc2::IfcCurveBoundedSurface(data);
            case 284: return new ::Ifc4x3_rc2::IfcCurveInterpolationEnum(data);
            case 288: return new ::Ifc4x3_rc2::IfcCurveSegment(data);
            case 289: return new ::Ifc4x3_rc2::IfcCurveSegment2D(data);
            case 290: return new ::Ifc4x3_rc2::IfcCurveStyle(data);
            case 291: return new ::Ifc4x3_rc2::IfcCurveStyleFont(data);
            case 292: return new ::Ifc4x3_rc2::IfcCurveStyleFontAndScaling(data);
            case 293: return new ::Ifc4x3_rc2::IfcCurveStyleFontPattern(data);
            case 295: return new ::Ifc4x3_rc2::IfcCylindricalSurface(data);
            case 296: return new ::Ifc4x3_rc2::IfcDamper(data);
            case 297: return new ::Ifc4x3_rc2::IfcDamperType(data);
            case 298: return new ::Ifc4x3_rc2::IfcDamperTypeEnum(data);
            case 299: return new ::Ifc4x3_rc2::IfcDataOriginEnum(data);
            case 300: return new ::Ifc4x3_rc2::IfcDate(data);
            case 301: return new ::Ifc4x3_rc2::IfcDateTime(data);
            case 302: return new ::Ifc4x3_rc2::IfcDayInMonthNumber(data);
            case 303: return new ::Ifc4x3_rc2::IfcDayInWeekNumber(data);
            case 304: return new ::Ifc4x3_rc2::IfcDeepFoundation(data);
            case 305: return new ::Ifc4x3_rc2::IfcDeepFoundationType(data);
            case 308: return new ::Ifc4x3_rc2::IfcDerivedProfileDef(data);
            case 309: return new ::Ifc4x3_rc2::IfcDerivedUnit(data);
            case 310: return new ::Ifc4x3_rc2::IfcDerivedUnitElement(data);
            case 311: return new ::Ifc4x3_rc2::IfcDerivedUnitEnum(data);
            case 312: return new ::Ifc4x3_rc2::IfcDescriptiveMeasure(data);
            case 313: return new ::Ifc4x3_rc2::IfcDimensionalExponents(data);
            case 314: return new ::Ifc4x3_rc2::IfcDimensionCount(data);
            case 315: return new ::Ifc4x3_rc2::IfcDirection(data);
            case 316: return new ::Ifc4x3_rc2::IfcDirectionSenseEnum(data);
            case 317: return new ::Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid(data);
            case 318: return new ::Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid(data);
            case 319: return new ::Ifc4x3_rc2::IfcDiscreteAccessory(data);
            case 320: return new ::Ifc4x3_rc2::IfcDiscreteAccessoryType(data);
            case 321: return new ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum(data);
            case 322: return new ::Ifc4x3_rc2::IfcDistributionBoard(data);
            case 323: return new ::Ifc4x3_rc2::IfcDistributionBoardType(data);
            case 324: return new ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum(data);
            case 325: return new ::Ifc4x3_rc2::IfcDistributionChamberElement(data);
            case 326: return new ::Ifc4x3_rc2::IfcDistributionChamberElementType(data);
            case 327: return new ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum(data);
            case 328: return new ::Ifc4x3_rc2::IfcDistributionCircuit(data);
            case 329: return new ::Ifc4x3_rc2::IfcDistributionControlElement(data);
            case 330: return new ::Ifc4x3_rc2::IfcDistributionControlElementType(data);
            case 331: return new ::Ifc4x3_rc2::IfcDistributionElement(data);
            case 332: return new ::Ifc4x3_rc2::IfcDistributionElementType(data);
            case 333: return new ::Ifc4x3_rc2::IfcDistributionFlowElement(data);
            case 334: return new ::Ifc4x3_rc2::IfcDistributionFlowElementType(data);
            case 335: return new ::Ifc4x3_rc2::IfcDistributionPort(data);
            case 336: return new ::Ifc4x3_rc2::IfcDistributionPortTypeEnum(data);
            case 337: return new ::Ifc4x3_rc2::IfcDistributionSystem(data);
            case 338: return new ::Ifc4x3_rc2::IfcDistributionSystemEnum(data);
            case 339: return new ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum(data);
            case 340: return new ::Ifc4x3_rc2::IfcDocumentInformation(data);
            case 341: return new ::Ifc4x3_rc2::IfcDocumentInformationRelationship(data);
            case 342: return new ::Ifc4x3_rc2::IfcDocumentReference(data);
            case 344: return new ::Ifc4x3_rc2::IfcDocumentStatusEnum(data);
            case 345: return new ::Ifc4x3_rc2::IfcDoor(data);
            case 346: return new ::Ifc4x3_rc2::IfcDoorLiningProperties(data);
            case 347: return new ::Ifc4x3_rc2::IfcDoorPanelOperationEnum(data);
            case 348: return new ::Ifc4x3_rc2::IfcDoorPanelPositionEnum(data);
            case 349: return new ::Ifc4x3_rc2::IfcDoorPanelProperties(data);
            case 350: return new ::Ifc4x3_rc2::IfcDoorStandardCase(data);
            case 351: return new ::Ifc4x3_rc2::IfcDoorStyle(data);
            case 352: return new ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum(data);
            case 353: return new ::Ifc4x3_rc2::IfcDoorStyleOperationEnum(data);
            case 354: return new ::Ifc4x3_rc2::IfcDoorType(data);
            case 355: return new ::Ifc4x3_rc2::IfcDoorTypeEnum(data);
            case 356: return new ::Ifc4x3_rc2::IfcDoorTypeOperationEnum(data);
            case 357: return new ::Ifc4x3_rc2::IfcDoseEquivalentMeasure(data);
            case 358: return new ::Ifc4x3_rc2::IfcDraughtingPreDefinedColour(data);
            case 359: return new ::Ifc4x3_rc2::IfcDraughtingPreDefinedCurveFont(data);
            case 360: return new ::Ifc4x3_rc2::IfcDuctFitting(data);
            case 361: return new ::Ifc4x3_rc2::IfcDuctFittingType(data);
            case 362: return new ::Ifc4x3_rc2::IfcDuctFittingTypeEnum(data);
            case 363: return new ::Ifc4x3_rc2::IfcDuctSegment(data);
            case 364: return new ::Ifc4x3_rc2::IfcDuctSegmentType(data);
            case 365: return new ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum(data);
            case 366: return new ::Ifc4x3_rc2::IfcDuctSilencer(data);
            case 367: return new ::Ifc4x3_rc2::IfcDuctSilencerType(data);
            case 368: return new ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum(data);
            case 369: return new ::Ifc4x3_rc2::IfcDuration(data);
            case 370: return new ::Ifc4x3_rc2::IfcDynamicViscosityMeasure(data);
            case 371: return new ::Ifc4x3_rc2::IfcEarthworksCut(data);
            case 372: return new ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum(data);
            case 373: return new ::Ifc4x3_rc2::IfcEarthworksElement(data);
            case 374: return new ::Ifc4x3_rc2::IfcEarthworksFill(data);
            case 375: return new ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum(data);
            case 376: return new ::Ifc4x3_rc2::IfcEdge(data);
            case 377: return new ::Ifc4x3_rc2::IfcEdgeCurve(data);
            case 378: return new ::Ifc4x3_rc2::IfcEdgeLoop(data);
            case 379: return new ::Ifc4x3_rc2::IfcElectricAppliance(data);
            case 380: return new ::Ifc4x3_rc2::IfcElectricApplianceType(data);
            case 381: return new ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum(data);
            case 382: return new ::Ifc4x3_rc2::IfcElectricCapacitanceMeasure(data);
            case 383: return new ::Ifc4x3_rc2::IfcElectricChargeMeasure(data);
            case 384: return new ::Ifc4x3_rc2::IfcElectricConductanceMeasure(data);
            case 385: return new ::Ifc4x3_rc2::IfcElectricCurrentMeasure(data);
            case 386: return new ::Ifc4x3_rc2::IfcElectricDistributionBoard(data);
            case 387: return new ::Ifc4x3_rc2::IfcElectricDistributionBoardType(data);
            case 388: return new ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum(data);
            case 389: return new ::Ifc4x3_rc2::IfcElectricFlowStorageDevice(data);
            case 390: return new ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceType(data);
            case 391: return new ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum(data);
            case 392: return new ::Ifc4x3_rc2::IfcElectricFlowTreatmentDevice(data);
            case 393: return new ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType(data);
            case 394: return new ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum(data);
            case 395: return new ::Ifc4x3_rc2::IfcElectricGenerator(data);
            case 396: return new ::Ifc4x3_rc2::IfcElectricGeneratorType(data);
            case 397: return new ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum(data);
            case 398: return new ::Ifc4x3_rc2::IfcElectricMotor(data);
            case 399: return new ::Ifc4x3_rc2::IfcElectricMotorType(data);
            case 400: return new ::Ifc4x3_rc2::IfcElectricMotorTypeEnum(data);
            case 401: return new ::Ifc4x3_rc2::IfcElectricResistanceMeasure(data);
            case 402: return new ::Ifc4x3_rc2::IfcElectricTimeControl(data);
            case 403: return new ::Ifc4x3_rc2::IfcElectricTimeControlType(data);
            case 404: return new ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum(data);
            case 405: return new ::Ifc4x3_rc2::IfcElectricVoltageMeasure(data);
            case 406: return new ::Ifc4x3_rc2::IfcElement(data);
            case 407: return new ::Ifc4x3_rc2::IfcElementarySurface(data);
            case 408: return new ::Ifc4x3_rc2::IfcElementAssembly(data);
            case 409: return new ::Ifc4x3_rc2::IfcElementAssemblyType(data);
            case 410: return new ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum(data);
            case 411: return new ::Ifc4x3_rc2::IfcElementComponent(data);
            case 412: return new ::Ifc4x3_rc2::IfcElementComponentType(data);
            case 413: return new ::Ifc4x3_rc2::IfcElementCompositionEnum(data);
            case 414: return new ::Ifc4x3_rc2::IfcElementQuantity(data);
            case 415: return new ::Ifc4x3_rc2::IfcElementType(data);
            case 416: return new ::Ifc4x3_rc2::IfcEllipse(data);
            case 417: return new ::Ifc4x3_rc2::IfcEllipseProfileDef(data);
            case 418: return new ::Ifc4x3_rc2::IfcEnergyConversionDevice(data);
            case 419: return new ::Ifc4x3_rc2::IfcEnergyConversionDeviceType(data);
            case 420: return new ::Ifc4x3_rc2::IfcEnergyMeasure(data);
            case 421: return new ::Ifc4x3_rc2::IfcEngine(data);
            case 422: return new ::Ifc4x3_rc2::IfcEngineType(data);
            case 423: return new ::Ifc4x3_rc2::IfcEngineTypeEnum(data);
            case 424: return new ::Ifc4x3_rc2::IfcEvaporativeCooler(data);
            case 425: return new ::Ifc4x3_rc2::IfcEvaporativeCoolerType(data);
            case 426: return new ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum(data);
            case 427: return new ::Ifc4x3_rc2::IfcEvaporator(data);
            case 428: return new ::Ifc4x3_rc2::IfcEvaporatorType(data);
            case 429: return new ::Ifc4x3_rc2::IfcEvaporatorTypeEnum(data);
            case 430: return new ::Ifc4x3_rc2::IfcEvent(data);
            case 431: return new ::Ifc4x3_rc2::IfcEventTime(data);
            case 432: return new ::Ifc4x3_rc2::IfcEventTriggerTypeEnum(data);
            case 433: return new ::Ifc4x3_rc2::IfcEventType(data);
            case 434: return new ::Ifc4x3_rc2::IfcEventTypeEnum(data);
            case 435: return new ::Ifc4x3_rc2::IfcExtendedProperties(data);
            case 436: return new ::Ifc4x3_rc2::IfcExternalInformation(data);
            case 437: return new ::Ifc4x3_rc2::IfcExternallyDefinedHatchStyle(data);
            case 438: return new ::Ifc4x3_rc2::IfcExternallyDefinedSurfaceStyle(data);
            case 439: return new ::Ifc4x3_rc2::IfcExternallyDefinedTextFont(data);
            case 440: return new ::Ifc4x3_rc2::IfcExternalReference(data);
            case 441: return new ::Ifc4x3_rc2::IfcExternalReferenceRelationship(data);
            case 442: return new ::Ifc4x3_rc2::IfcExternalSpatialElement(data);
            case 443: return new ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum(data);
            case 444: return new ::Ifc4x3_rc2::IfcExternalSpatialStructureElement(data);
            case 445: return new ::Ifc4x3_rc2::IfcExtrudedAreaSolid(data);
            case 446: return new ::Ifc4x3_rc2::IfcExtrudedAreaSolidTapered(data);
            case 447: return new ::Ifc4x3_rc2::IfcFace(data);
            case 448: return new ::Ifc4x3_rc2::IfcFaceBasedSurfaceModel(data);
            case 449: return new ::Ifc4x3_rc2::IfcFaceBound(data);
            case 450: return new ::Ifc4x3_rc2::IfcFaceOuterBound(data);
            case 451: return new ::Ifc4x3_rc2::IfcFaceSurface(data);
            case 452: return new ::Ifc4x3_rc2::IfcFacetedBrep(data);
            case 453: return new ::Ifc4x3_rc2::IfcFacetedBrepWithVoids(data);
            case 454: return new ::Ifc4x3_rc2::IfcFacility(data);
            case 455: return new ::Ifc4x3_rc2::IfcFacilityPart(data);
            case 456: return new ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum(data);
            case 458: return new ::Ifc4x3_rc2::IfcFacilityUsageEnum(data);
            case 459: return new ::Ifc4x3_rc2::IfcFailureConnectionCondition(data);
            case 460: return new ::Ifc4x3_rc2::IfcFan(data);
            case 461: return new ::Ifc4x3_rc2::IfcFanType(data);
            case 462: return new ::Ifc4x3_rc2::IfcFanTypeEnum(data);
            case 463: return new ::Ifc4x3_rc2::IfcFastener(data);
            case 464: return new ::Ifc4x3_rc2::IfcFastenerType(data);
            case 465: return new ::Ifc4x3_rc2::IfcFastenerTypeEnum(data);
            case 466: return new ::Ifc4x3_rc2::IfcFeatureElement(data);
            case 467: return new ::Ifc4x3_rc2::IfcFeatureElementAddition(data);
            case 468: return new ::Ifc4x3_rc2::IfcFeatureElementSubtraction(data);
            case 469: return new ::Ifc4x3_rc2::IfcFillAreaStyle(data);
            case 470: return new ::Ifc4x3_rc2::IfcFillAreaStyleHatching(data);
            case 471: return new ::Ifc4x3_rc2::IfcFillAreaStyleTiles(data);
            case 473: return new ::Ifc4x3_rc2::IfcFilter(data);
            case 474: return new ::Ifc4x3_rc2::IfcFilterType(data);
            case 475: return new ::Ifc4x3_rc2::IfcFilterTypeEnum(data);
            case 476: return new ::Ifc4x3_rc2::IfcFireSuppressionTerminal(data);
            case 477: return new ::Ifc4x3_rc2::IfcFireSuppressionTerminalType(data);
            case 478: return new ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum(data);
            case 479: return new ::Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid(data);
            case 480: return new ::Ifc4x3_rc2::IfcFlowController(data);
            case 481: return new ::Ifc4x3_rc2::IfcFlowControllerType(data);
            case 482: return new ::Ifc4x3_rc2::IfcFlowDirectionEnum(data);
            case 483: return new ::Ifc4x3_rc2::IfcFlowFitting(data);
            case 484: return new ::Ifc4x3_rc2::IfcFlowFittingType(data);
            case 485: return new ::Ifc4x3_rc2::IfcFlowInstrument(data);
            case 486: return new ::Ifc4x3_rc2::IfcFlowInstrumentType(data);
            case 487: return new ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum(data);
            case 488: return new ::Ifc4x3_rc2::IfcFlowMeter(data);
            case 489: return new ::Ifc4x3_rc2::IfcFlowMeterType(data);
            case 490: return new ::Ifc4x3_rc2::IfcFlowMeterTypeEnum(data);
            case 491: return new ::Ifc4x3_rc2::IfcFlowMovingDevice(data);
            case 492: return new ::Ifc4x3_rc2::IfcFlowMovingDeviceType(data);
            case 493: return new ::Ifc4x3_rc2::IfcFlowSegment(data);
            case 494: return new ::Ifc4x3_rc2::IfcFlowSegmentType(data);
            case 495: return new ::Ifc4x3_rc2::IfcFlowStorageDevice(data);
            case 496: return new ::Ifc4x3_rc2::IfcFlowStorageDeviceType(data);
            case 497: return new ::Ifc4x3_rc2::IfcFlowTerminal(data);
            case 498: return new ::Ifc4x3_rc2::IfcFlowTerminalType(data);
            case 499: return new ::Ifc4x3_rc2::IfcFlowTreatmentDevice(data);
            case 500: return new ::Ifc4x3_rc2::IfcFlowTreatmentDeviceType(data);
            case 501: return new ::Ifc4x3_rc2::IfcFontStyle(data);
            case 502: return new ::Ifc4x3_rc2::IfcFontVariant(data);
            case 503: return new ::Ifc4x3_rc2::IfcFontWeight(data);
            case 504: return new ::Ifc4x3_rc2::IfcFooting(data);
            case 505: return new ::Ifc4x3_rc2::IfcFootingType(data);
            case 506: return new ::Ifc4x3_rc2::IfcFootingTypeEnum(data);
            case 507: return new ::Ifc4x3_rc2::IfcForceMeasure(data);
            case 508: return new ::Ifc4x3_rc2::IfcFrequencyMeasure(data);
            case 509: return new ::Ifc4x3_rc2::IfcFurnishingElement(data);
            case 510: return new ::Ifc4x3_rc2::IfcFurnishingElementType(data);
            case 511: return new ::Ifc4x3_rc2::IfcFurniture(data);
            case 512: return new ::Ifc4x3_rc2::IfcFurnitureType(data);
            case 513: return new ::Ifc4x3_rc2::IfcFurnitureTypeEnum(data);
            case 514: return new ::Ifc4x3_rc2::IfcGeographicElement(data);
            case 515: return new ::Ifc4x3_rc2::IfcGeographicElementType(data);
            case 516: return new ::Ifc4x3_rc2::IfcGeographicElementTypeEnum(data);
            case 517: return new ::Ifc4x3_rc2::IfcGeometricCurveSet(data);
            case 518: return new ::Ifc4x3_rc2::IfcGeometricProjectionEnum(data);
            case 519: return new ::Ifc4x3_rc2::IfcGeometricRepresentationContext(data);
            case 520: return new ::Ifc4x3_rc2::IfcGeometricRepresentationItem(data);
            case 521: return new ::Ifc4x3_rc2::IfcGeometricRepresentationSubContext(data);
            case 522: return new ::Ifc4x3_rc2::IfcGeometricSet(data);
            case 524: return new ::Ifc4x3_rc2::IfcGeomodel(data);
            case 525: return new ::Ifc4x3_rc2::IfcGeoslice(data);
            case 526: return new ::Ifc4x3_rc2::IfcGeotechnicalAssembly(data);
            case 527: return new ::Ifc4x3_rc2::IfcGeotechnicalElement(data);
            case 528: return new ::Ifc4x3_rc2::IfcGeotechnicalStratum(data);
            case 529: return new ::Ifc4x3_rc2::IfcGloballyUniqueId(data);
            case 530: return new ::Ifc4x3_rc2::IfcGlobalOrLocalEnum(data);
            case 531: return new ::Ifc4x3_rc2::IfcGradientCurve(data);
            case 532: return new ::Ifc4x3_rc2::IfcGrid(data);
            case 533: return new ::Ifc4x3_rc2::IfcGridAxis(data);
            case 534: return new ::Ifc4x3_rc2::IfcGridPlacement(data);
            case 536: return new ::Ifc4x3_rc2::IfcGridTypeEnum(data);
            case 537: return new ::Ifc4x3_rc2::IfcGroup(data);
            case 538: return new ::Ifc4x3_rc2::IfcHalfSpaceSolid(data);
            case 540: return new ::Ifc4x3_rc2::IfcHeatExchanger(data);
            case 541: return new ::Ifc4x3_rc2::IfcHeatExchangerType(data);
            case 542: return new ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum(data);
            case 543: return new ::Ifc4x3_rc2::IfcHeatFluxDensityMeasure(data);
            case 544: return new ::Ifc4x3_rc2::IfcHeatingValueMeasure(data);
            case 545: return new ::Ifc4x3_rc2::IfcHumidifier(data);
            case 546: return new ::Ifc4x3_rc2::IfcHumidifierType(data);
            case 547: return new ::Ifc4x3_rc2::IfcHumidifierTypeEnum(data);
            case 548: return new ::Ifc4x3_rc2::IfcIdentifier(data);
            case 549: return new ::Ifc4x3_rc2::IfcIlluminanceMeasure(data);
            case 550: return new ::Ifc4x3_rc2::IfcImageTexture(data);
            case 551: return new ::Ifc4x3_rc2::IfcImpactProtectionDevice(data);
            case 552: return new ::Ifc4x3_rc2::IfcImpactProtectionDeviceType(data);
            case 553: return new ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum(data);
            case 555: return new ::Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid(data);
            case 556: return new ::Ifc4x3_rc2::IfcIndexedColourMap(data);
            case 557: return new ::Ifc4x3_rc2::IfcIndexedPolyCurve(data);
            case 558: return new ::Ifc4x3_rc2::IfcIndexedPolygonalFace(data);
            case 559: return new ::Ifc4x3_rc2::IfcIndexedPolygonalFaceWithVoids(data);
            case 560: return new ::Ifc4x3_rc2::IfcIndexedTextureMap(data);
            case 561: return new ::Ifc4x3_rc2::IfcIndexedTriangleTextureMap(data);
            case 562: return new ::Ifc4x3_rc2::IfcInductanceMeasure(data);
            case 563: return new ::Ifc4x3_rc2::IfcInteger(data);
            case 564: return new ::Ifc4x3_rc2::IfcIntegerCountRateMeasure(data);
            case 565: return new ::Ifc4x3_rc2::IfcInterceptor(data);
            case 566: return new ::Ifc4x3_rc2::IfcInterceptorType(data);
            case 567: return new ::Ifc4x3_rc2::IfcInterceptorTypeEnum(data);
            case 569: return new ::Ifc4x3_rc2::IfcInternalOrExternalEnum(data);
            case 570: return new ::Ifc4x3_rc2::IfcIntersectionCurve(data);
            case 571: return new ::Ifc4x3_rc2::IfcInventory(data);
            case 572: return new ::Ifc4x3_rc2::IfcInventoryTypeEnum(data);
            case 573: return new ::Ifc4x3_rc2::IfcIonConcentrationMeasure(data);
            case 574: return new ::Ifc4x3_rc2::IfcIrregularTimeSeries(data);
            case 575: return new ::Ifc4x3_rc2::IfcIrregularTimeSeriesValue(data);
            case 576: return new ::Ifc4x3_rc2::IfcIShapeProfileDef(data);
            case 577: return new ::Ifc4x3_rc2::IfcIsothermalMoistureCapacityMeasure(data);
            case 578: return new ::Ifc4x3_rc2::IfcJunctionBox(data);
            case 579: return new ::Ifc4x3_rc2::IfcJunctionBoxType(data);
            case 580: return new ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum(data);
            case 581: return new ::Ifc4x3_rc2::IfcKerb(data);
            case 582: return new ::Ifc4x3_rc2::IfcKerbType(data);
            case 583: return new ::Ifc4x3_rc2::IfcKinematicViscosityMeasure(data);
            case 584: return new ::Ifc4x3_rc2::IfcKnotType(data);
            case 585: return new ::Ifc4x3_rc2::IfcLabel(data);
            case 586: return new ::Ifc4x3_rc2::IfcLaborResource(data);
            case 587: return new ::Ifc4x3_rc2::IfcLaborResourceType(data);
            case 588: return new ::Ifc4x3_rc2::IfcLaborResourceTypeEnum(data);
            case 589: return new ::Ifc4x3_rc2::IfcLagTime(data);
            case 590: return new ::Ifc4x3_rc2::IfcLamp(data);
            case 591: return new ::Ifc4x3_rc2::IfcLampType(data);
            case 592: return new ::Ifc4x3_rc2::IfcLampTypeEnum(data);
            case 593: return new ::Ifc4x3_rc2::IfcLanguageId(data);
            case 595: return new ::Ifc4x3_rc2::IfcLayerSetDirectionEnum(data);
            case 596: return new ::Ifc4x3_rc2::IfcLengthMeasure(data);
            case 597: return new ::Ifc4x3_rc2::IfcLibraryInformation(data);
            case 598: return new ::Ifc4x3_rc2::IfcLibraryReference(data);
            case 600: return new ::Ifc4x3_rc2::IfcLightDistributionCurveEnum(data);
            case 601: return new ::Ifc4x3_rc2::IfcLightDistributionData(data);
            case 603: return new ::Ifc4x3_rc2::IfcLightEmissionSourceEnum(data);
            case 604: return new ::Ifc4x3_rc2::IfcLightFixture(data);
            case 605: return new ::Ifc4x3_rc2::IfcLightFixtureType(data);
            case 606: return new ::Ifc4x3_rc2::IfcLightFixtureTypeEnum(data);
            case 607: return new ::Ifc4x3_rc2::IfcLightIntensityDistribution(data);
            case 608: return new ::Ifc4x3_rc2::IfcLightSource(data);
            case 609: return new ::Ifc4x3_rc2::IfcLightSourceAmbient(data);
            case 610: return new ::Ifc4x3_rc2::IfcLightSourceDirectional(data);
            case 611: return new ::Ifc4x3_rc2::IfcLightSourceGoniometric(data);
            case 612: return new ::Ifc4x3_rc2::IfcLightSourcePositional(data);
            case 613: return new ::Ifc4x3_rc2::IfcLightSourceSpot(data);
            case 614: return new ::Ifc4x3_rc2::IfcLine(data);
            case 616: return new ::Ifc4x3_rc2::IfcLinearAxisWithInclination(data);
            case 617: return new ::Ifc4x3_rc2::IfcLinearElement(data);
            case 618: return new ::Ifc4x3_rc2::IfcLinearForceMeasure(data);
            case 619: return new ::Ifc4x3_rc2::IfcLinearMomentMeasure(data);
            case 620: return new ::Ifc4x3_rc2::IfcLinearPlacement(data);
            case 621: return new ::Ifc4x3_rc2::IfcLinearPlacementWithInclination(data);
            case 622: return new ::Ifc4x3_rc2::IfcLinearPositioningElement(data);
            case 623: return new ::Ifc4x3_rc2::IfcLinearSpanPlacement(data);
            case 624: return new ::Ifc4x3_rc2::IfcLinearStiffnessMeasure(data);
            case 625: return new ::Ifc4x3_rc2::IfcLinearVelocityMeasure(data);
            case 626: return new ::Ifc4x3_rc2::IfcLineIndex(data);
            case 627: return new ::Ifc4x3_rc2::IfcLineSegment2D(data);
            case 628: return new ::Ifc4x3_rc2::IfcLiquidTerminal(data);
            case 629: return new ::Ifc4x3_rc2::IfcLiquidTerminalType(data);
            case 630: return new ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum(data);
            case 631: return new ::Ifc4x3_rc2::IfcLoadGroupTypeEnum(data);
            case 632: return new ::Ifc4x3_rc2::IfcLocalPlacement(data);
            case 633: return new ::Ifc4x3_rc2::IfcLogical(data);
            case 634: return new ::Ifc4x3_rc2::IfcLogicalOperatorEnum(data);
            case 635: return new ::Ifc4x3_rc2::IfcLoop(data);
            case 636: return new ::Ifc4x3_rc2::IfcLShapeProfileDef(data);
            case 637: return new ::Ifc4x3_rc2::IfcLuminousFluxMeasure(data);
            case 638: return new ::Ifc4x3_rc2::IfcLuminousIntensityDistributionMeasure(data);
            case 639: return new ::Ifc4x3_rc2::IfcLuminousIntensityMeasure(data);
            case 640: return new ::Ifc4x3_rc2::IfcMagneticFluxDensityMeasure(data);
            case 641: return new ::Ifc4x3_rc2::IfcMagneticFluxMeasure(data);
            case 642: return new ::Ifc4x3_rc2::IfcManifoldSolidBrep(data);
            case 643: return new ::Ifc4x3_rc2::IfcMapConversion(data);
            case 644: return new ::Ifc4x3_rc2::IfcMappedItem(data);
            case 645: return new ::Ifc4x3_rc2::IfcMarineFacility(data);
            case 646: return new ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum(data);
            case 647: return new ::Ifc4x3_rc2::IfcMarinePartTypeEnum(data);
            case 648: return new ::Ifc4x3_rc2::IfcMassDensityMeasure(data);
            case 649: return new ::Ifc4x3_rc2::IfcMassFlowRateMeasure(data);
            case 650: return new ::Ifc4x3_rc2::IfcMassMeasure(data);
            case 651: return new ::Ifc4x3_rc2::IfcMassPerLengthMeasure(data);
            case 652: return new ::Ifc4x3_rc2::IfcMaterial(data);
            case 653: return new ::Ifc4x3_rc2::IfcMaterialClassificationRelationship(data);
            case 654: return new ::Ifc4x3_rc2::IfcMaterialConstituent(data);
            case 655: return new ::Ifc4x3_rc2::IfcMaterialConstituentSet(data);
            case 656: return new ::Ifc4x3_rc2::IfcMaterialDefinition(data);
            case 657: return new ::Ifc4x3_rc2::IfcMaterialDefinitionRepresentation(data);
            case 658: return new ::Ifc4x3_rc2::IfcMaterialLayer(data);
            case 659: return new ::Ifc4x3_rc2::IfcMaterialLayerSet(data);
            case 660: return new ::Ifc4x3_rc2::IfcMaterialLayerSetUsage(data);
            case 661: return new ::Ifc4x3_rc2::IfcMaterialLayerWithOffsets(data);
            case 662: return new ::Ifc4x3_rc2::IfcMaterialList(data);
            case 663: return new ::Ifc4x3_rc2::IfcMaterialProfile(data);
            case 664: return new ::Ifc4x3_rc2::IfcMaterialProfileSet(data);
            case 665: return new ::Ifc4x3_rc2::IfcMaterialProfileSetUsage(data);
            case 666: return new ::Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering(data);
            case 667: return new ::Ifc4x3_rc2::IfcMaterialProfileWithOffsets(data);
            case 668: return new ::Ifc4x3_rc2::IfcMaterialProperties(data);
            case 669: return new ::Ifc4x3_rc2::IfcMaterialRelationship(data);
            case 671: return new ::Ifc4x3_rc2::IfcMaterialUsageDefinition(data);
            case 673: return new ::Ifc4x3_rc2::IfcMeasureWithUnit(data);
            case 674: return new ::Ifc4x3_rc2::IfcMechanicalFastener(data);
            case 675: return new ::Ifc4x3_rc2::IfcMechanicalFastenerType(data);
            case 676: return new ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum(data);
            case 677: return new ::Ifc4x3_rc2::IfcMedicalDevice(data);
            case 678: return new ::Ifc4x3_rc2::IfcMedicalDeviceType(data);
            case 679: return new ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum(data);
            case 680: return new ::Ifc4x3_rc2::IfcMember(data);
            case 681: return new ::Ifc4x3_rc2::IfcMemberStandardCase(data);
            case 682: return new ::Ifc4x3_rc2::IfcMemberType(data);
            case 683: return new ::Ifc4x3_rc2::IfcMemberTypeEnum(data);
            case 684: return new ::Ifc4x3_rc2::IfcMetric(data);
            case 686: return new ::Ifc4x3_rc2::IfcMirroredProfileDef(data);
            case 687: return new ::Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance(data);
            case 688: return new ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType(data);
            case 689: return new ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum(data);
            case 690: return new ::Ifc4x3_rc2::IfcModulusOfElasticityMeasure(data);
            case 691: return new ::Ifc4x3_rc2::IfcModulusOfLinearSubgradeReactionMeasure(data);
            case 692: return new ::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionMeasure(data);
            case 694: return new ::Ifc4x3_rc2::IfcModulusOfSubgradeReactionMeasure(data);
            case 697: return new ::Ifc4x3_rc2::IfcMoistureDiffusivityMeasure(data);
            case 698: return new ::Ifc4x3_rc2::IfcMolecularWeightMeasure(data);
            case 699: return new ::Ifc4x3_rc2::IfcMomentOfInertiaMeasure(data);
            case 700: return new ::Ifc4x3_rc2::IfcMonetaryMeasure(data);
            case 701: return new ::Ifc4x3_rc2::IfcMonetaryUnit(data);
            case 702: return new ::Ifc4x3_rc2::IfcMonthInYearNumber(data);
            case 703: return new ::Ifc4x3_rc2::IfcMooringDevice(data);
            case 704: return new ::Ifc4x3_rc2::IfcMooringDeviceType(data);
            case 705: return new ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum(data);
            case 706: return new ::Ifc4x3_rc2::IfcMotorConnection(data);
            case 707: return new ::Ifc4x3_rc2::IfcMotorConnectionType(data);
            case 708: return new ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum(data);
            case 709: return new ::Ifc4x3_rc2::IfcNamedUnit(data);
            case 710: return new ::Ifc4x3_rc2::IfcNavigationElement(data);
            case 711: return new ::Ifc4x3_rc2::IfcNavigationElementType(data);
            case 712: return new ::Ifc4x3_rc2::IfcNavigationElementTypeEnum(data);
            case 713: return new ::Ifc4x3_rc2::IfcNonNegativeLengthMeasure(data);
            case 714: return new ::Ifc4x3_rc2::IfcNormalisedRatioMeasure(data);
            case 715: return new ::Ifc4x3_rc2::IfcNullStyle(data);
            case 716: return new ::Ifc4x3_rc2::IfcNumericMeasure(data);
            case 717: return new ::Ifc4x3_rc2::IfcObject(data);
            case 718: return new ::Ifc4x3_rc2::IfcObjectDefinition(data);
            case 719: return new ::Ifc4x3_rc2::IfcObjective(data);
            case 720: return new ::Ifc4x3_rc2::IfcObjectiveEnum(data);
            case 721: return new ::Ifc4x3_rc2::IfcObjectPlacement(data);
            case 723: return new ::Ifc4x3_rc2::IfcObjectTypeEnum(data);
            case 724: return new ::Ifc4x3_rc2::IfcOccupant(data);
            case 725: return new ::Ifc4x3_rc2::IfcOccupantTypeEnum(data);
            case 726: return new ::Ifc4x3_rc2::IfcOffsetCurve(data);
            case 727: return new ::Ifc4x3_rc2::IfcOffsetCurve2D(data);
            case 728: return new ::Ifc4x3_rc2::IfcOffsetCurve3D(data);
            case 729: return new ::Ifc4x3_rc2::IfcOffsetCurveByDistances(data);
            case 730: return new ::Ifc4x3_rc2::IfcOpenCrossProfileDef(data);
            case 731: return new ::Ifc4x3_rc2::IfcOpeningElement(data);
            case 732: return new ::Ifc4x3_rc2::IfcOpeningElementTypeEnum(data);
            case 733: return new ::Ifc4x3_rc2::IfcOpeningStandardCase(data);
            case 734: return new ::Ifc4x3_rc2::IfcOpenShell(data);
            case 735: return new ::Ifc4x3_rc2::IfcOrganization(data);
            case 736: return new ::Ifc4x3_rc2::IfcOrganizationRelationship(data);
            case 737: return new ::Ifc4x3_rc2::IfcOrientedEdge(data);
            case 738: return new ::Ifc4x3_rc2::IfcOuterBoundaryCurve(data);
            case 739: return new ::Ifc4x3_rc2::IfcOutlet(data);
            case 740: return new ::Ifc4x3_rc2::IfcOutletType(data);
            case 741: return new ::Ifc4x3_rc2::IfcOutletTypeEnum(data);
            case 742: return new ::Ifc4x3_rc2::IfcOwnerHistory(data);
            case 743: return new ::Ifc4x3_rc2::IfcParameterizedProfileDef(data);
            case 744: return new ::Ifc4x3_rc2::IfcParameterValue(data);
            case 745: return new ::Ifc4x3_rc2::IfcPath(data);
            case 746: return new ::Ifc4x3_rc2::IfcPavement(data);
            case 747: return new ::Ifc4x3_rc2::IfcPavementType(data);
            case 748: return new ::Ifc4x3_rc2::IfcPcurve(data);
            case 749: return new ::Ifc4x3_rc2::IfcPerformanceHistory(data);
            case 750: return new ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum(data);
            case 751: return new ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum(data);
            case 752: return new ::Ifc4x3_rc2::IfcPermeableCoveringProperties(data);
            case 753: return new ::Ifc4x3_rc2::IfcPermit(data);
            case 754: return new ::Ifc4x3_rc2::IfcPermitTypeEnum(data);
            case 755: return new ::Ifc4x3_rc2::IfcPerson(data);
            case 756: return new ::Ifc4x3_rc2::IfcPersonAndOrganization(data);
            case 757: return new ::Ifc4x3_rc2::IfcPHMeasure(data);
            case 758: return new ::Ifc4x3_rc2::IfcPhysicalComplexQuantity(data);
            case 759: return new ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum(data);
            case 760: return new ::Ifc4x3_rc2::IfcPhysicalQuantity(data);
            case 761: return new ::Ifc4x3_rc2::IfcPhysicalSimpleQuantity(data);
            case 762: return new ::Ifc4x3_rc2::IfcPile(data);
            case 763: return new ::Ifc4x3_rc2::IfcPileConstructionEnum(data);
            case 764: return new ::Ifc4x3_rc2::IfcPileType(data);
            case 765: return new ::Ifc4x3_rc2::IfcPileTypeEnum(data);
            case 766: return new ::Ifc4x3_rc2::IfcPipeFitting(data);
            case 767: return new ::Ifc4x3_rc2::IfcPipeFittingType(data);
            case 768: return new ::Ifc4x3_rc2::IfcPipeFittingTypeEnum(data);
            case 769: return new ::Ifc4x3_rc2::IfcPipeSegment(data);
            case 770: return new ::Ifc4x3_rc2::IfcPipeSegmentType(data);
            case 771: return new ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum(data);
            case 772: return new ::Ifc4x3_rc2::IfcPixelTexture(data);
            case 773: return new ::Ifc4x3_rc2::IfcPlacement(data);
            case 774: return new ::Ifc4x3_rc2::IfcPlanarBox(data);
            case 775: return new ::Ifc4x3_rc2::IfcPlanarExtent(data);
            case 776: return new ::Ifc4x3_rc2::IfcPlanarForceMeasure(data);
            case 777: return new ::Ifc4x3_rc2::IfcPlane(data);
            case 778: return new ::Ifc4x3_rc2::IfcPlaneAngleMeasure(data);
            case 779: return new ::Ifc4x3_rc2::IfcPlant(data);
            case 780: return new ::Ifc4x3_rc2::IfcPlate(data);
            case 781: return new ::Ifc4x3_rc2::IfcPlateStandardCase(data);
            case 782: return new ::Ifc4x3_rc2::IfcPlateType(data);
            case 783: return new ::Ifc4x3_rc2::IfcPlateTypeEnum(data);
            case 784: return new ::Ifc4x3_rc2::IfcPoint(data);
            case 785: return new ::Ifc4x3_rc2::IfcPointByDistanceExpression(data);
            case 786: return new ::Ifc4x3_rc2::IfcPointOnCurve(data);
            case 787: return new ::Ifc4x3_rc2::IfcPointOnSurface(data);
            case 789: return new ::Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace(data);
            case 790: return new ::Ifc4x3_rc2::IfcPolygonalFaceSet(data);
            case 791: return new ::Ifc4x3_rc2::IfcPolyline(data);
            case 792: return new ::Ifc4x3_rc2::IfcPolyLoop(data);
            case 793: return new ::Ifc4x3_rc2::IfcPort(data);
            case 794: return new ::Ifc4x3_rc2::IfcPositioningElement(data);
            case 795: return new ::Ifc4x3_rc2::IfcPositiveInteger(data);
            case 796: return new ::Ifc4x3_rc2::IfcPositiveLengthMeasure(data);
            case 797: return new ::Ifc4x3_rc2::IfcPositivePlaneAngleMeasure(data);
            case 798: return new ::Ifc4x3_rc2::IfcPositiveRatioMeasure(data);
            case 799: return new ::Ifc4x3_rc2::IfcPostalAddress(data);
            case 800: return new ::Ifc4x3_rc2::IfcPowerMeasure(data);
            case 801: return new ::Ifc4x3_rc2::IfcPreDefinedColour(data);
            case 802: return new ::Ifc4x3_rc2::IfcPreDefinedCurveFont(data);
            case 803: return new ::Ifc4x3_rc2::IfcPreDefinedItem(data);
            case 804: return new ::Ifc4x3_rc2::IfcPreDefinedProperties(data);
            case 805: return new ::Ifc4x3_rc2::IfcPreDefinedPropertySet(data);
            case 806: return new ::Ifc4x3_rc2::IfcPreDefinedTextFont(data);
            case 807: return new ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation(data);
            case 808: return new ::Ifc4x3_rc2::IfcPresentableText(data);
            case 809: return new ::Ifc4x3_rc2::IfcPresentationItem(data);
            case 810: return new ::Ifc4x3_rc2::IfcPresentationLayerAssignment(data);
            case 811: return new ::Ifc4x3_rc2::IfcPresentationLayerWithStyle(data);
            case 812: return new ::Ifc4x3_rc2::IfcPresentationStyle(data);
            case 813: return new ::Ifc4x3_rc2::IfcPresentationStyleAssignment(data);
            case 815: return new ::Ifc4x3_rc2::IfcPressureMeasure(data);
            case 816: return new ::Ifc4x3_rc2::IfcProcedure(data);
            case 817: return new ::Ifc4x3_rc2::IfcProcedureType(data);
            case 818: return new ::Ifc4x3_rc2::IfcProcedureTypeEnum(data);
            case 819: return new ::Ifc4x3_rc2::IfcProcess(data);
            case 821: return new ::Ifc4x3_rc2::IfcProduct(data);
            case 822: return new ::Ifc4x3_rc2::IfcProductDefinitionShape(data);
            case 823: return new ::Ifc4x3_rc2::IfcProductRepresentation(data);
            case 826: return new ::Ifc4x3_rc2::IfcProfileDef(data);
            case 827: return new ::Ifc4x3_rc2::IfcProfileProperties(data);
            case 828: return new ::Ifc4x3_rc2::IfcProfileTypeEnum(data);
            case 829: return new ::Ifc4x3_rc2::IfcProject(data);
            case 830: return new ::Ifc4x3_rc2::IfcProjectedCRS(data);
            case 831: return new ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum(data);
            case 832: return new ::Ifc4x3_rc2::IfcProjectionElement(data);
            case 833: return new ::Ifc4x3_rc2::IfcProjectionElementTypeEnum(data);
            case 834: return new ::Ifc4x3_rc2::IfcProjectLibrary(data);
            case 835: return new ::Ifc4x3_rc2::IfcProjectOrder(data);
            case 836: return new ::Ifc4x3_rc2::IfcProjectOrderTypeEnum(data);
            case 837: return new ::Ifc4x3_rc2::IfcProperty(data);
            case 838: return new ::Ifc4x3_rc2::IfcPropertyAbstraction(data);
            case 839: return new ::Ifc4x3_rc2::IfcPropertyBoundedValue(data);
            case 840: return new ::Ifc4x3_rc2::IfcPropertyDefinition(data);
            case 841: return new ::Ifc4x3_rc2::IfcPropertyDependencyRelationship(data);
            case 842: return new ::Ifc4x3_rc2::IfcPropertyEnumeratedValue(data);
            case 843: return new ::Ifc4x3_rc2::IfcPropertyEnumeration(data);
            case 844: return new ::Ifc4x3_rc2::IfcPropertyListValue(data);
            case 845: return new ::Ifc4x3_rc2::IfcPropertyReferenceValue(data);
            case 846: return new ::Ifc4x3_rc2::IfcPropertySet(data);
            case 847: return new ::Ifc4x3_rc2::IfcPropertySetDefinition(data);
            case 849: return new ::Ifc4x3_rc2::IfcPropertySetDefinitionSet(data);
            case 850: return new ::Ifc4x3_rc2::IfcPropertySetTemplate(data);
            case 851: return new ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum(data);
            case 852: return new ::Ifc4x3_rc2::IfcPropertySingleValue(data);
            case 853: return new ::Ifc4x3_rc2::IfcPropertyTableValue(data);
            case 854: return new ::Ifc4x3_rc2::IfcPropertyTemplate(data);
            case 855: return new ::Ifc4x3_rc2::IfcPropertyTemplateDefinition(data);
            case 856: return new ::Ifc4x3_rc2::IfcProtectiveDevice(data);
            case 857: return new ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit(data);
            case 858: return new ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType(data);
            case 859: return new ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum(data);
            case 860: return new ::Ifc4x3_rc2::IfcProtectiveDeviceType(data);
            case 861: return new ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum(data);
            case 862: return new ::Ifc4x3_rc2::IfcProxy(data);
            case 863: return new ::Ifc4x3_rc2::IfcPump(data);
            case 864: return new ::Ifc4x3_rc2::IfcPumpType(data);
            case 865: return new ::Ifc4x3_rc2::IfcPumpTypeEnum(data);
            case 866: return new ::Ifc4x3_rc2::IfcQuantityArea(data);
            case 867: return new ::Ifc4x3_rc2::IfcQuantityCount(data);
            case 868: return new ::Ifc4x3_rc2::IfcQuantityLength(data);
            case 869: return new ::Ifc4x3_rc2::IfcQuantitySet(data);
            case 870: return new ::Ifc4x3_rc2::IfcQuantityTime(data);
            case 871: return new ::Ifc4x3_rc2::IfcQuantityVolume(data);
            case 872: return new ::Ifc4x3_rc2::IfcQuantityWeight(data);
            case 873: return new ::Ifc4x3_rc2::IfcRadioActivityMeasure(data);
            case 874: return new ::Ifc4x3_rc2::IfcRail(data);
            case 875: return new ::Ifc4x3_rc2::IfcRailing(data);
            case 876: return new ::Ifc4x3_rc2::IfcRailingType(data);
            case 877: return new ::Ifc4x3_rc2::IfcRailingTypeEnum(data);
            case 878: return new ::Ifc4x3_rc2::IfcRailType(data);
            case 879: return new ::Ifc4x3_rc2::IfcRailTypeEnum(data);
            case 880: return new ::Ifc4x3_rc2::IfcRailway(data);
            case 881: return new ::Ifc4x3_rc2::IfcRailwayPartTypeEnum(data);
            case 882: return new ::Ifc4x3_rc2::IfcRamp(data);
            case 883: return new ::Ifc4x3_rc2::IfcRampFlight(data);
            case 884: return new ::Ifc4x3_rc2::IfcRampFlightType(data);
            case 885: return new ::Ifc4x3_rc2::IfcRampFlightTypeEnum(data);
            case 886: return new ::Ifc4x3_rc2::IfcRampType(data);
            case 887: return new ::Ifc4x3_rc2::IfcRampTypeEnum(data);
            case 888: return new ::Ifc4x3_rc2::IfcRatioMeasure(data);
            case 889: return new ::Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots(data);
            case 890: return new ::Ifc4x3_rc2::IfcRationalBSplineSurfaceWithKnots(data);
            case 891: return new ::Ifc4x3_rc2::IfcReal(data);
            case 892: return new ::Ifc4x3_rc2::IfcRectangleHollowProfileDef(data);
            case 893: return new ::Ifc4x3_rc2::IfcRectangleProfileDef(data);
            case 894: return new ::Ifc4x3_rc2::IfcRectangularPyramid(data);
            case 895: return new ::Ifc4x3_rc2::IfcRectangularTrimmedSurface(data);
            case 896: return new ::Ifc4x3_rc2::IfcRecurrencePattern(data);
            case 897: return new ::Ifc4x3_rc2::IfcRecurrenceTypeEnum(data);
            case 898: return new ::Ifc4x3_rc2::IfcReference(data);
            case 899: return new ::Ifc4x3_rc2::IfcReferent(data);
            case 900: return new ::Ifc4x3_rc2::IfcReferentTypeEnum(data);
            case 901: return new ::Ifc4x3_rc2::IfcReflectanceMethodEnum(data);
            case 902: return new ::Ifc4x3_rc2::IfcRegularTimeSeries(data);
            case 903: return new ::Ifc4x3_rc2::IfcReinforcedSoil(data);
            case 904: return new ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum(data);
            case 905: return new ::Ifc4x3_rc2::IfcReinforcementBarProperties(data);
            case 906: return new ::Ifc4x3_rc2::IfcReinforcementDefinitionProperties(data);
            case 907: return new ::Ifc4x3_rc2::IfcReinforcingBar(data);
            case 908: return new ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum(data);
            case 909: return new ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum(data);
            case 910: return new ::Ifc4x3_rc2::IfcReinforcingBarType(data);
            case 911: return new ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum(data);
            case 912: return new ::Ifc4x3_rc2::IfcReinforcingElement(data);
            case 913: return new ::Ifc4x3_rc2::IfcReinforcingElementType(data);
            case 914: return new ::Ifc4x3_rc2::IfcReinforcingMesh(data);
            case 915: return new ::Ifc4x3_rc2::IfcReinforcingMeshType(data);
            case 916: return new ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum(data);
            case 917: return new ::Ifc4x3_rc2::IfcRelAggregates(data);
            case 918: return new ::Ifc4x3_rc2::IfcRelAssigns(data);
            case 919: return new ::Ifc4x3_rc2::IfcRelAssignsToActor(data);
            case 920: return new ::Ifc4x3_rc2::IfcRelAssignsToControl(data);
            case 921: return new ::Ifc4x3_rc2::IfcRelAssignsToGroup(data);
            case 922: return new ::Ifc4x3_rc2::IfcRelAssignsToGroupByFactor(data);
            case 923: return new ::Ifc4x3_rc2::IfcRelAssignsToProcess(data);
            case 924: return new ::Ifc4x3_rc2::IfcRelAssignsToProduct(data);
            case 925: return new ::Ifc4x3_rc2::IfcRelAssignsToResource(data);
            case 926: return new ::Ifc4x3_rc2::IfcRelAssociates(data);
            case 927: return new ::Ifc4x3_rc2::IfcRelAssociatesApproval(data);
            case 928: return new ::Ifc4x3_rc2::IfcRelAssociatesClassification(data);
            case 929: return new ::Ifc4x3_rc2::IfcRelAssociatesConstraint(data);
            case 930: return new ::Ifc4x3_rc2::IfcRelAssociatesDocument(data);
            case 931: return new ::Ifc4x3_rc2::IfcRelAssociatesLibrary(data);
            case 932: return new ::Ifc4x3_rc2::IfcRelAssociatesMaterial(data);
            case 933: return new ::Ifc4x3_rc2::IfcRelAssociatesProfileDef(data);
            case 934: return new ::Ifc4x3_rc2::IfcRelationship(data);
            case 935: return new ::Ifc4x3_rc2::IfcRelConnects(data);
            case 936: return new ::Ifc4x3_rc2::IfcRelConnectsElements(data);
            case 937: return new ::Ifc4x3_rc2::IfcRelConnectsPathElements(data);
            case 938: return new ::Ifc4x3_rc2::IfcRelConnectsPorts(data);
            case 939: return new ::Ifc4x3_rc2::IfcRelConnectsPortToElement(data);
            case 940: return new ::Ifc4x3_rc2::IfcRelConnectsStructuralActivity(data);
            case 941: return new ::Ifc4x3_rc2::IfcRelConnectsStructuralMember(data);
            case 942: return new ::Ifc4x3_rc2::IfcRelConnectsWithEccentricity(data);
            case 943: return new ::Ifc4x3_rc2::IfcRelConnectsWithRealizingElements(data);
            case 944: return new ::Ifc4x3_rc2::IfcRelContainedInSpatialStructure(data);
            case 945: return new ::Ifc4x3_rc2::IfcRelCoversBldgElements(data);
            case 946: return new ::Ifc4x3_rc2::IfcRelCoversSpaces(data);
            case 947: return new ::Ifc4x3_rc2::IfcRelDeclares(data);
            case 948: return new ::Ifc4x3_rc2::IfcRelDecomposes(data);
            case 949: return new ::Ifc4x3_rc2::IfcRelDefines(data);
            case 950: return new ::Ifc4x3_rc2::IfcRelDefinesByObject(data);
            case 951: return new ::Ifc4x3_rc2::IfcRelDefinesByProperties(data);
            case 952: return new ::Ifc4x3_rc2::IfcRelDefinesByTemplate(data);
            case 953: return new ::Ifc4x3_rc2::IfcRelDefinesByType(data);
            case 954: return new ::Ifc4x3_rc2::IfcRelFillsElement(data);
            case 955: return new ::Ifc4x3_rc2::IfcRelFlowControlElements(data);
            case 956: return new ::Ifc4x3_rc2::IfcRelInterferesElements(data);
            case 957: return new ::Ifc4x3_rc2::IfcRelNests(data);
            case 958: return new ::Ifc4x3_rc2::IfcRelPositions(data);
            case 959: return new ::Ifc4x3_rc2::IfcRelProjectsElement(data);
            case 960: return new ::Ifc4x3_rc2::IfcRelReferencedInSpatialStructure(data);
            case 961: return new ::Ifc4x3_rc2::IfcRelSequence(data);
            case 962: return new ::Ifc4x3_rc2::IfcRelServicesBuildings(data);
            case 963: return new ::Ifc4x3_rc2::IfcRelSpaceBoundary(data);
            case 964: return new ::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel(data);
            case 965: return new ::Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel(data);
            case 966: return new ::Ifc4x3_rc2::IfcRelVoidsElement(data);
            case 967: return new ::Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment(data);
            case 968: return new ::Ifc4x3_rc2::IfcRepresentation(data);
            case 969: return new ::Ifc4x3_rc2::IfcRepresentationContext(data);
            case 970: return new ::Ifc4x3_rc2::IfcRepresentationItem(data);
            case 971: return new ::Ifc4x3_rc2::IfcRepresentationMap(data);
            case 972: return new ::Ifc4x3_rc2::IfcResource(data);
            case 973: return new ::Ifc4x3_rc2::IfcResourceApprovalRelationship(data);
            case 974: return new ::Ifc4x3_rc2::IfcResourceConstraintRelationship(data);
            case 975: return new ::Ifc4x3_rc2::IfcResourceLevelRelationship(data);
            case 978: return new ::Ifc4x3_rc2::IfcResourceTime(data);
            case 979: return new ::Ifc4x3_rc2::IfcRevolvedAreaSolid(data);
            case 980: return new ::Ifc4x3_rc2::IfcRevolvedAreaSolidTapered(data);
            case 981: return new ::Ifc4x3_rc2::IfcRightCircularCone(data);
            case 982: return new ::Ifc4x3_rc2::IfcRightCircularCylinder(data);
            case 983: return new ::Ifc4x3_rc2::IfcRoad(data);
            case 984: return new ::Ifc4x3_rc2::IfcRoadPartTypeEnum(data);
            case 985: return new ::Ifc4x3_rc2::IfcRoleEnum(data);
            case 986: return new ::Ifc4x3_rc2::IfcRoof(data);
            case 987: return new ::Ifc4x3_rc2::IfcRoofType(data);
            case 988: return new ::Ifc4x3_rc2::IfcRoofTypeEnum(data);
            case 989: return new ::Ifc4x3_rc2::IfcRoot(data);
            case 990: return new ::Ifc4x3_rc2::IfcRotationalFrequencyMeasure(data);
            case 991: return new ::Ifc4x3_rc2::IfcRotationalMassMeasure(data);
            case 992: return new ::Ifc4x3_rc2::IfcRotationalStiffnessMeasure(data);
            case 994: return new ::Ifc4x3_rc2::IfcRoundedRectangleProfileDef(data);
            case 995: return new ::Ifc4x3_rc2::IfcSanitaryTerminal(data);
            case 996: return new ::Ifc4x3_rc2::IfcSanitaryTerminalType(data);
            case 997: return new ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum(data);
            case 998: return new ::Ifc4x3_rc2::IfcSchedulingTime(data);
            case 999: return new ::Ifc4x3_rc2::IfcSeamCurve(data);
            case 1000: return new ::Ifc4x3_rc2::IfcSectionalAreaIntegralMeasure(data);
            case 1001: return new ::Ifc4x3_rc2::IfcSectionedSolid(data);
            case 1002: return new ::Ifc4x3_rc2::IfcSectionedSolidHorizontal(data);
            case 1003: return new ::Ifc4x3_rc2::IfcSectionedSpine(data);
            case 1004: return new ::Ifc4x3_rc2::IfcSectionedSurface(data);
            case 1005: return new ::Ifc4x3_rc2::IfcSectionModulusMeasure(data);
            case 1006: return new ::Ifc4x3_rc2::IfcSectionProperties(data);
            case 1007: return new ::Ifc4x3_rc2::IfcSectionReinforcementProperties(data);
            case 1008: return new ::Ifc4x3_rc2::IfcSectionTypeEnum(data);
            case 1009: return new ::Ifc4x3_rc2::IfcSegment(data);
            case 1010: return new ::Ifc4x3_rc2::IfcSegmentedReferenceCurve(data);
            case 1012: return new ::Ifc4x3_rc2::IfcSensor(data);
            case 1013: return new ::Ifc4x3_rc2::IfcSensorType(data);
            case 1014: return new ::Ifc4x3_rc2::IfcSensorTypeEnum(data);
            case 1015: return new ::Ifc4x3_rc2::IfcSequenceEnum(data);
            case 1016: return new ::Ifc4x3_rc2::IfcSeriesParameterCurve(data);
            case 1017: return new ::Ifc4x3_rc2::IfcShadingDevice(data);
            case 1018: return new ::Ifc4x3_rc2::IfcShadingDeviceType(data);
            case 1019: return new ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum(data);
            case 1020: return new ::Ifc4x3_rc2::IfcShapeAspect(data);
            case 1021: return new ::Ifc4x3_rc2::IfcShapeModel(data);
            case 1022: return new ::Ifc4x3_rc2::IfcShapeRepresentation(data);
            case 1023: return new ::Ifc4x3_rc2::IfcShearModulusMeasure(data);
            case 1025: return new ::Ifc4x3_rc2::IfcShellBasedSurfaceModel(data);
            case 1026: return new ::Ifc4x3_rc2::IfcSign(data);
            case 1027: return new ::Ifc4x3_rc2::IfcSignal(data);
            case 1028: return new ::Ifc4x3_rc2::IfcSignalType(data);
            case 1029: return new ::Ifc4x3_rc2::IfcSignalTypeEnum(data);
            case 1030: return new ::Ifc4x3_rc2::IfcSignType(data);
            case 1031: return new ::Ifc4x3_rc2::IfcSignTypeEnum(data);
            case 1032: return new ::Ifc4x3_rc2::IfcSimpleProperty(data);
            case 1033: return new ::Ifc4x3_rc2::IfcSimplePropertyTemplate(data);
            case 1034: return new ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum(data);
            case 1036: return new ::Ifc4x3_rc2::IfcSIPrefix(data);
            case 1037: return new ::Ifc4x3_rc2::IfcSite(data);
            case 1038: return new ::Ifc4x3_rc2::IfcSIUnit(data);
            case 1039: return new ::Ifc4x3_rc2::IfcSIUnitName(data);
            case 1041: return new ::Ifc4x3_rc2::IfcSlab(data);
            case 1042: return new ::Ifc4x3_rc2::IfcSlabElementedCase(data);
            case 1043: return new ::Ifc4x3_rc2::IfcSlabStandardCase(data);
            case 1044: return new ::Ifc4x3_rc2::IfcSlabType(data);
            case 1045: return new ::Ifc4x3_rc2::IfcSlabTypeEnum(data);
            case 1046: return new ::Ifc4x3_rc2::IfcSlippageConnectionCondition(data);
            case 1047: return new ::Ifc4x3_rc2::IfcSolarDevice(data);
            case 1048: return new ::Ifc4x3_rc2::IfcSolarDeviceType(data);
            case 1049: return new ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum(data);
            case 1050: return new ::Ifc4x3_rc2::IfcSolidAngleMeasure(data);
            case 1051: return new ::Ifc4x3_rc2::IfcSolidModel(data);
            case 1053: return new ::Ifc4x3_rc2::IfcSolidStratum(data);
            case 1054: return new ::Ifc4x3_rc2::IfcSoundPowerLevelMeasure(data);
            case 1055: return new ::Ifc4x3_rc2::IfcSoundPowerMeasure(data);
            case 1056: return new ::Ifc4x3_rc2::IfcSoundPressureLevelMeasure(data);
            case 1057: return new ::Ifc4x3_rc2::IfcSoundPressureMeasure(data);
            case 1058: return new ::Ifc4x3_rc2::IfcSpace(data);
            case 1060: return new ::Ifc4x3_rc2::IfcSpaceHeater(data);
            case 1061: return new ::Ifc4x3_rc2::IfcSpaceHeaterType(data);
            case 1062: return new ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum(data);
            case 1063: return new ::Ifc4x3_rc2::IfcSpaceType(data);
            case 1064: return new ::Ifc4x3_rc2::IfcSpaceTypeEnum(data);
            case 1065: return new ::Ifc4x3_rc2::IfcSpatialElement(data);
            case 1066: return new ::Ifc4x3_rc2::IfcSpatialElementType(data);
            case 1068: return new ::Ifc4x3_rc2::IfcSpatialStructureElement(data);
            case 1069: return new ::Ifc4x3_rc2::IfcSpatialStructureElementType(data);
            case 1070: return new ::Ifc4x3_rc2::IfcSpatialZone(data);
            case 1071: return new ::Ifc4x3_rc2::IfcSpatialZoneType(data);
            case 1072: return new ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum(data);
            case 1073: return new ::Ifc4x3_rc2::IfcSpecificHeatCapacityMeasure(data);
            case 1074: return new ::Ifc4x3_rc2::IfcSpecularExponent(data);
            case 1076: return new ::Ifc4x3_rc2::IfcSpecularRoughness(data);
            case 1077: return new ::Ifc4x3_rc2::IfcSphere(data);
            case 1078: return new ::Ifc4x3_rc2::IfcSphericalSurface(data);
            case 1079: return new ::Ifc4x3_rc2::IfcStackTerminal(data);
            case 1080: return new ::Ifc4x3_rc2::IfcStackTerminalType(data);
            case 1081: return new ::Ifc4x3_rc2::IfcStackTerminalTypeEnum(data);
            case 1082: return new ::Ifc4x3_rc2::IfcStair(data);
            case 1083: return new ::Ifc4x3_rc2::IfcStairFlight(data);
            case 1084: return new ::Ifc4x3_rc2::IfcStairFlightType(data);
            case 1085: return new ::Ifc4x3_rc2::IfcStairFlightTypeEnum(data);
            case 1086: return new ::Ifc4x3_rc2::IfcStairType(data);
            case 1087: return new ::Ifc4x3_rc2::IfcStairTypeEnum(data);
            case 1088: return new ::Ifc4x3_rc2::IfcStateEnum(data);
            case 1089: return new ::Ifc4x3_rc2::IfcStructuralAction(data);
            case 1090: return new ::Ifc4x3_rc2::IfcStructuralActivity(data);
            case 1092: return new ::Ifc4x3_rc2::IfcStructuralAnalysisModel(data);
            case 1093: return new ::Ifc4x3_rc2::IfcStructuralConnection(data);
            case 1094: return new ::Ifc4x3_rc2::IfcStructuralConnectionCondition(data);
            case 1095: return new ::Ifc4x3_rc2::IfcStructuralCurveAction(data);
            case 1096: return new ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum(data);
            case 1097: return new ::Ifc4x3_rc2::IfcStructuralCurveConnection(data);
            case 1098: return new ::Ifc4x3_rc2::IfcStructuralCurveMember(data);
            case 1099: return new ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum(data);
            case 1100: return new ::Ifc4x3_rc2::IfcStructuralCurveMemberVarying(data);
            case 1101: return new ::Ifc4x3_rc2::IfcStructuralCurveReaction(data);
            case 1102: return new ::Ifc4x3_rc2::IfcStructuralItem(data);
            case 1103: return new ::Ifc4x3_rc2::IfcStructuralLinearAction(data);
            case 1104: return new ::Ifc4x3_rc2::IfcStructuralLoad(data);
            case 1105: return new ::Ifc4x3_rc2::IfcStructuralLoadCase(data);
            case 1106: return new ::Ifc4x3_rc2::IfcStructuralLoadConfiguration(data);
            case 1107: return new ::Ifc4x3_rc2::IfcStructuralLoadGroup(data);
            case 1108: return new ::Ifc4x3_rc2::IfcStructuralLoadLinearForce(data);
            case 1109: return new ::Ifc4x3_rc2::IfcStructuralLoadOrResult(data);
            case 1110: return new ::Ifc4x3_rc2::IfcStructuralLoadPlanarForce(data);
            case 1111: return new ::Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement(data);
            case 1112: return new ::Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion(data);
            case 1113: return new ::Ifc4x3_rc2::IfcStructuralLoadSingleForce(data);
            case 1114: return new ::Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping(data);
            case 1115: return new ::Ifc4x3_rc2::IfcStructuralLoadStatic(data);
            case 1116: return new ::Ifc4x3_rc2::IfcStructuralLoadTemperature(data);
            case 1117: return new ::Ifc4x3_rc2::IfcStructuralMember(data);
            case 1118: return new ::Ifc4x3_rc2::IfcStructuralPlanarAction(data);
            case 1119: return new ::Ifc4x3_rc2::IfcStructuralPointAction(data);
            case 1120: return new ::Ifc4x3_rc2::IfcStructuralPointConnection(data);
            case 1121: return new ::Ifc4x3_rc2::IfcStructuralPointReaction(data);
            case 1122: return new ::Ifc4x3_rc2::IfcStructuralReaction(data);
            case 1123: return new ::Ifc4x3_rc2::IfcStructuralResultGroup(data);
            case 1124: return new ::Ifc4x3_rc2::IfcStructuralSurfaceAction(data);
            case 1125: return new ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum(data);
            case 1126: return new ::Ifc4x3_rc2::IfcStructuralSurfaceConnection(data);
            case 1127: return new ::Ifc4x3_rc2::IfcStructuralSurfaceMember(data);
            case 1128: return new ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum(data);
            case 1129: return new ::Ifc4x3_rc2::IfcStructuralSurfaceMemberVarying(data);
            case 1130: return new ::Ifc4x3_rc2::IfcStructuralSurfaceReaction(data);
            case 1132: return new ::Ifc4x3_rc2::IfcStyledItem(data);
            case 1133: return new ::Ifc4x3_rc2::IfcStyledRepresentation(data);
            case 1134: return new ::Ifc4x3_rc2::IfcStyleModel(data);
            case 1135: return new ::Ifc4x3_rc2::IfcSubContractResource(data);
            case 1136: return new ::Ifc4x3_rc2::IfcSubContractResourceType(data);
            case 1137: return new ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum(data);
            case 1138: return new ::Ifc4x3_rc2::IfcSubedge(data);
            case 1139: return new ::Ifc4x3_rc2::IfcSurface(data);
            case 1140: return new ::Ifc4x3_rc2::IfcSurfaceCurve(data);
            case 1141: return new ::Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid(data);
            case 1142: return new ::Ifc4x3_rc2::IfcSurfaceFeature(data);
            case 1143: return new ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum(data);
            case 1144: return new ::Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion(data);
            case 1145: return new ::Ifc4x3_rc2::IfcSurfaceOfRevolution(data);
            case 1147: return new ::Ifc4x3_rc2::IfcSurfaceReinforcementArea(data);
            case 1148: return new ::Ifc4x3_rc2::IfcSurfaceSide(data);
            case 1149: return new ::Ifc4x3_rc2::IfcSurfaceStyle(data);
            case 1151: return new ::Ifc4x3_rc2::IfcSurfaceStyleLighting(data);
            case 1152: return new ::Ifc4x3_rc2::IfcSurfaceStyleRefraction(data);
            case 1153: return new ::Ifc4x3_rc2::IfcSurfaceStyleRendering(data);
            case 1154: return new ::Ifc4x3_rc2::IfcSurfaceStyleShading(data);
            case 1155: return new ::Ifc4x3_rc2::IfcSurfaceStyleWithTextures(data);
            case 1156: return new ::Ifc4x3_rc2::IfcSurfaceTexture(data);
            case 1157: return new ::Ifc4x3_rc2::IfcSweptAreaSolid(data);
            case 1158: return new ::Ifc4x3_rc2::IfcSweptDiskSolid(data);
            case 1159: return new ::Ifc4x3_rc2::IfcSweptDiskSolidPolygonal(data);
            case 1160: return new ::Ifc4x3_rc2::IfcSweptSurface(data);
            case 1161: return new ::Ifc4x3_rc2::IfcSwitchingDevice(data);
            case 1162: return new ::Ifc4x3_rc2::IfcSwitchingDeviceType(data);
            case 1163: return new ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum(data);
            case 1164: return new ::Ifc4x3_rc2::IfcSystem(data);
            case 1165: return new ::Ifc4x3_rc2::IfcSystemFurnitureElement(data);
            case 1166: return new ::Ifc4x3_rc2::IfcSystemFurnitureElementType(data);
            case 1167: return new ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum(data);
            case 1168: return new ::Ifc4x3_rc2::IfcTable(data);
            case 1169: return new ::Ifc4x3_rc2::IfcTableColumn(data);
            case 1170: return new ::Ifc4x3_rc2::IfcTableRow(data);
            case 1171: return new ::Ifc4x3_rc2::IfcTank(data);
            case 1172: return new ::Ifc4x3_rc2::IfcTankType(data);
            case 1173: return new ::Ifc4x3_rc2::IfcTankTypeEnum(data);
            case 1174: return new ::Ifc4x3_rc2::IfcTask(data);
            case 1175: return new ::Ifc4x3_rc2::IfcTaskDurationEnum(data);
            case 1176: return new ::Ifc4x3_rc2::IfcTaskTime(data);
            case 1177: return new ::Ifc4x3_rc2::IfcTaskTimeRecurring(data);
            case 1178: return new ::Ifc4x3_rc2::IfcTaskType(data);
            case 1179: return new ::Ifc4x3_rc2::IfcTaskTypeEnum(data);
            case 1180: return new ::Ifc4x3_rc2::IfcTelecomAddress(data);
            case 1181: return new ::Ifc4x3_rc2::IfcTemperatureGradientMeasure(data);
            case 1182: return new ::Ifc4x3_rc2::IfcTemperatureRateOfChangeMeasure(data);
            case 1183: return new ::Ifc4x3_rc2::IfcTendon(data);
            case 1184: return new ::Ifc4x3_rc2::IfcTendonAnchor(data);
            case 1185: return new ::Ifc4x3_rc2::IfcTendonAnchorType(data);
            case 1186: return new ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum(data);
            case 1187: return new ::Ifc4x3_rc2::IfcTendonConduit(data);
            case 1188: return new ::Ifc4x3_rc2::IfcTendonConduitType(data);
            case 1189: return new ::Ifc4x3_rc2::IfcTendonConduitTypeEnum(data);
            case 1190: return new ::Ifc4x3_rc2::IfcTendonType(data);
            case 1191: return new ::Ifc4x3_rc2::IfcTendonTypeEnum(data);
            case 1192: return new ::Ifc4x3_rc2::IfcTessellatedFaceSet(data);
            case 1193: return new ::Ifc4x3_rc2::IfcTessellatedItem(data);
            case 1194: return new ::Ifc4x3_rc2::IfcText(data);
            case 1195: return new ::Ifc4x3_rc2::IfcTextAlignment(data);
            case 1196: return new ::Ifc4x3_rc2::IfcTextDecoration(data);
            case 1197: return new ::Ifc4x3_rc2::IfcTextFontName(data);
            case 1199: return new ::Ifc4x3_rc2::IfcTextLiteral(data);
            case 1200: return new ::Ifc4x3_rc2::IfcTextLiteralWithExtent(data);
            case 1201: return new ::Ifc4x3_rc2::IfcTextPath(data);
            case 1202: return new ::Ifc4x3_rc2::IfcTextStyle(data);
            case 1203: return new ::Ifc4x3_rc2::IfcTextStyleFontModel(data);
            case 1204: return new ::Ifc4x3_rc2::IfcTextStyleForDefinedFont(data);
            case 1205: return new ::Ifc4x3_rc2::IfcTextStyleTextModel(data);
            case 1206: return new ::Ifc4x3_rc2::IfcTextTransformation(data);
            case 1207: return new ::Ifc4x3_rc2::IfcTextureCoordinate(data);
            case 1208: return new ::Ifc4x3_rc2::IfcTextureCoordinateGenerator(data);
            case 1209: return new ::Ifc4x3_rc2::IfcTextureMap(data);
            case 1210: return new ::Ifc4x3_rc2::IfcTextureVertex(data);
            case 1211: return new ::Ifc4x3_rc2::IfcTextureVertexList(data);
            case 1212: return new ::Ifc4x3_rc2::IfcThermalAdmittanceMeasure(data);
            case 1213: return new ::Ifc4x3_rc2::IfcThermalConductivityMeasure(data);
            case 1214: return new ::Ifc4x3_rc2::IfcThermalExpansionCoefficientMeasure(data);
            case 1215: return new ::Ifc4x3_rc2::IfcThermalResistanceMeasure(data);
            case 1216: return new ::Ifc4x3_rc2::IfcThermalTransmittanceMeasure(data);
            case 1217: return new ::Ifc4x3_rc2::IfcThermodynamicTemperatureMeasure(data);
            case 1218: return new ::Ifc4x3_rc2::IfcTime(data);
            case 1219: return new ::Ifc4x3_rc2::IfcTimeMeasure(data);
            case 1221: return new ::Ifc4x3_rc2::IfcTimePeriod(data);
            case 1222: return new ::Ifc4x3_rc2::IfcTimeSeries(data);
            case 1223: return new ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum(data);
            case 1224: return new ::Ifc4x3_rc2::IfcTimeSeriesValue(data);
            case 1225: return new ::Ifc4x3_rc2::IfcTimeStamp(data);
            case 1226: return new ::Ifc4x3_rc2::IfcTopologicalRepresentationItem(data);
            case 1227: return new ::Ifc4x3_rc2::IfcTopologyRepresentation(data);
            case 1228: return new ::Ifc4x3_rc2::IfcToroidalSurface(data);
            case 1229: return new ::Ifc4x3_rc2::IfcTorqueMeasure(data);
            case 1230: return new ::Ifc4x3_rc2::IfcTrackElement(data);
            case 1231: return new ::Ifc4x3_rc2::IfcTrackElementType(data);
            case 1232: return new ::Ifc4x3_rc2::IfcTrackElementTypeEnum(data);
            case 1233: return new ::Ifc4x3_rc2::IfcTransformer(data);
            case 1234: return new ::Ifc4x3_rc2::IfcTransformerType(data);
            case 1235: return new ::Ifc4x3_rc2::IfcTransformerTypeEnum(data);
            case 1236: return new ::Ifc4x3_rc2::IfcTransitionCode(data);
            case 1237: return new ::Ifc4x3_rc2::IfcTransitionCurveSegment2D(data);
            case 1238: return new ::Ifc4x3_rc2::IfcTransitionCurveType(data);
            case 1240: return new ::Ifc4x3_rc2::IfcTransportElement(data);
            case 1241: return new ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum(data);
            case 1242: return new ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum(data);
            case 1243: return new ::Ifc4x3_rc2::IfcTransportElementType(data);
            case 1245: return new ::Ifc4x3_rc2::IfcTrapeziumProfileDef(data);
            case 1246: return new ::Ifc4x3_rc2::IfcTriangulatedFaceSet(data);
            case 1247: return new ::Ifc4x3_rc2::IfcTriangulatedIrregularNetwork(data);
            case 1248: return new ::Ifc4x3_rc2::IfcTrimmedCurve(data);
            case 1249: return new ::Ifc4x3_rc2::IfcTrimmingPreference(data);
            case 1251: return new ::Ifc4x3_rc2::IfcTShapeProfileDef(data);
            case 1252: return new ::Ifc4x3_rc2::IfcTubeBundle(data);
            case 1253: return new ::Ifc4x3_rc2::IfcTubeBundleType(data);
            case 1254: return new ::Ifc4x3_rc2::IfcTubeBundleTypeEnum(data);
            case 1255: return new ::Ifc4x3_rc2::IfcTypeObject(data);
            case 1256: return new ::Ifc4x3_rc2::IfcTypeProcess(data);
            case 1257: return new ::Ifc4x3_rc2::IfcTypeProduct(data);
            case 1258: return new ::Ifc4x3_rc2::IfcTypeResource(data);
            case 1260: return new ::Ifc4x3_rc2::IfcUnitaryControlElement(data);
            case 1261: return new ::Ifc4x3_rc2::IfcUnitaryControlElementType(data);
            case 1262: return new ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum(data);
            case 1263: return new ::Ifc4x3_rc2::IfcUnitaryEquipment(data);
            case 1264: return new ::Ifc4x3_rc2::IfcUnitaryEquipmentType(data);
            case 1265: return new ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum(data);
            case 1266: return new ::Ifc4x3_rc2::IfcUnitAssignment(data);
            case 1267: return new ::Ifc4x3_rc2::IfcUnitEnum(data);
            case 1268: return new ::Ifc4x3_rc2::IfcURIReference(data);
            case 1269: return new ::Ifc4x3_rc2::IfcUShapeProfileDef(data);
            case 1271: return new ::Ifc4x3_rc2::IfcValve(data);
            case 1272: return new ::Ifc4x3_rc2::IfcValveType(data);
            case 1273: return new ::Ifc4x3_rc2::IfcValveTypeEnum(data);
            case 1274: return new ::Ifc4x3_rc2::IfcVaporPermeabilityMeasure(data);
            case 1275: return new ::Ifc4x3_rc2::IfcVector(data);
            case 1277: return new ::Ifc4x3_rc2::IfcVertex(data);
            case 1278: return new ::Ifc4x3_rc2::IfcVertexLoop(data);
            case 1279: return new ::Ifc4x3_rc2::IfcVertexPoint(data);
            case 1280: return new ::Ifc4x3_rc2::IfcVibrationDamper(data);
            case 1281: return new ::Ifc4x3_rc2::IfcVibrationDamperType(data);
            case 1282: return new ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum(data);
            case 1283: return new ::Ifc4x3_rc2::IfcVibrationIsolator(data);
            case 1284: return new ::Ifc4x3_rc2::IfcVibrationIsolatorType(data);
            case 1285: return new ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum(data);
            case 1286: return new ::Ifc4x3_rc2::IfcVirtualElement(data);
            case 1287: return new ::Ifc4x3_rc2::IfcVirtualGridIntersection(data);
            case 1288: return new ::Ifc4x3_rc2::IfcVoidingFeature(data);
            case 1289: return new ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum(data);
            case 1290: return new ::Ifc4x3_rc2::IfcVoidStratum(data);
            case 1291: return new ::Ifc4x3_rc2::IfcVolumeMeasure(data);
            case 1292: return new ::Ifc4x3_rc2::IfcVolumetricFlowRateMeasure(data);
            case 1293: return new ::Ifc4x3_rc2::IfcWall(data);
            case 1294: return new ::Ifc4x3_rc2::IfcWallElementedCase(data);
            case 1295: return new ::Ifc4x3_rc2::IfcWallStandardCase(data);
            case 1296: return new ::Ifc4x3_rc2::IfcWallType(data);
            case 1297: return new ::Ifc4x3_rc2::IfcWallTypeEnum(data);
            case 1298: return new ::Ifc4x3_rc2::IfcWarpingConstantMeasure(data);
            case 1299: return new ::Ifc4x3_rc2::IfcWarpingMomentMeasure(data);
            case 1301: return new ::Ifc4x3_rc2::IfcWasteTerminal(data);
            case 1302: return new ::Ifc4x3_rc2::IfcWasteTerminalType(data);
            case 1303: return new ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum(data);
            case 1304: return new ::Ifc4x3_rc2::IfcWaterStratum(data);
            case 1305: return new ::Ifc4x3_rc2::IfcWindow(data);
            case 1306: return new ::Ifc4x3_rc2::IfcWindowLiningProperties(data);
            case 1307: return new ::Ifc4x3_rc2::IfcWindowPanelOperationEnum(data);
            case 1308: return new ::Ifc4x3_rc2::IfcWindowPanelPositionEnum(data);
            case 1309: return new ::Ifc4x3_rc2::IfcWindowPanelProperties(data);
            case 1310: return new ::Ifc4x3_rc2::IfcWindowStandardCase(data);
            case 1311: return new ::Ifc4x3_rc2::IfcWindowStyle(data);
            case 1312: return new ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum(data);
            case 1313: return new ::Ifc4x3_rc2::IfcWindowStyleOperationEnum(data);
            case 1314: return new ::Ifc4x3_rc2::IfcWindowType(data);
            case 1315: return new ::Ifc4x3_rc2::IfcWindowTypeEnum(data);
            case 1316: return new ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum(data);
            case 1317: return new ::Ifc4x3_rc2::IfcWorkCalendar(data);
            case 1318: return new ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum(data);
            case 1319: return new ::Ifc4x3_rc2::IfcWorkControl(data);
            case 1320: return new ::Ifc4x3_rc2::IfcWorkPlan(data);
            case 1321: return new ::Ifc4x3_rc2::IfcWorkPlanTypeEnum(data);
            case 1322: return new ::Ifc4x3_rc2::IfcWorkSchedule(data);
            case 1323: return new ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum(data);
            case 1324: return new ::Ifc4x3_rc2::IfcWorkTime(data);
            case 1325: return new ::Ifc4x3_rc2::IfcZone(data);
            case 1326: return new ::Ifc4x3_rc2::IfcZShapeProfileDef(data);
            default: throw IfcParse::IfcException(data->type()->name() + " cannot be instantiated");
        }

    }
};


#if defined(__clang__)
__attribute__((optnone))
#elif defined(__GNUC__) || defined(__GNUG__)
#pragma GCC push_options
#pragma GCC optimize ("O0")
#elif defined(_MSC_VER)
#pragma optimize("", off)
#endif
        
IfcParse::schema_definition* IFC4X3_RC2_populate_schema() {
    IFC4X3_RC2_IfcAbsorbedDoseMeasure_type = new type_declaration("IfcAbsorbedDoseMeasure", 0, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcAccelerationMeasure_type = new type_declaration("IfcAccelerationMeasure", 1, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("EMAIL");
        items.push_back("FAX");
        items.push_back("NOTDEFINED");
        items.push_back("PHONE");
        items.push_back("POST");
        items.push_back("USERDEFINED");
        items.push_back("VERBAL");
        IFC4X3_RC2_IfcActionRequestTypeEnum_type = new enumeration_type("IfcActionRequestTypeEnum", 3, items);
    }
    {
        std::vector<std::string> items; items.reserve(27);
        items.push_back("BRAKES");
        items.push_back("BUOYANCY");
        items.push_back("COMPLETION_G1");
        items.push_back("CREEP");
        items.push_back("CURRENT");
        items.push_back("DEAD_LOAD_G");
        items.push_back("EARTHQUAKE_E");
        items.push_back("ERECTION");
        items.push_back("FIRE");
        items.push_back("ICE");
        items.push_back("IMPACT");
        items.push_back("IMPULSE");
        items.push_back("LACK_OF_FIT");
        items.push_back("LIVE_LOAD_Q");
        items.push_back("NOTDEFINED");
        items.push_back("PRESTRESSING_P");
        items.push_back("PROPPING");
        items.push_back("RAIN");
        items.push_back("SETTLEMENT_U");
        items.push_back("SHRINKAGE");
        items.push_back("SNOW_S");
        items.push_back("SYSTEM_IMPERFECTION");
        items.push_back("TEMPERATURE_T");
        items.push_back("TRANSPORT");
        items.push_back("USERDEFINED");
        items.push_back("WAVE");
        items.push_back("WIND_W");
        IFC4X3_RC2_IfcActionSourceTypeEnum_type = new enumeration_type("IfcActionSourceTypeEnum", 4, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("EXTRAORDINARY_A");
        items.push_back("NOTDEFINED");
        items.push_back("PERMANENT_G");
        items.push_back("USERDEFINED");
        items.push_back("VARIABLE_Q");
        IFC4X3_RC2_IfcActionTypeEnum_type = new enumeration_type("IfcActionTypeEnum", 5, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("ELECTRICACTUATOR");
        items.push_back("HANDOPERATEDACTUATOR");
        items.push_back("HYDRAULICACTUATOR");
        items.push_back("NOTDEFINED");
        items.push_back("PNEUMATICACTUATOR");
        items.push_back("THERMOSTATICACTUATOR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcActuatorTypeEnum_type = new enumeration_type("IfcActuatorTypeEnum", 11, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("DISTRIBUTIONPOINT");
        items.push_back("HOME");
        items.push_back("OFFICE");
        items.push_back("SITE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAddressTypeEnum_type = new enumeration_type("IfcAddressTypeEnum", 13, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("CONSTANTFLOW");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("VARIABLEFLOWPRESSUREDEPENDANT");
        items.push_back("VARIABLEFLOWPRESSUREINDEPENDANT");
        IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type = new enumeration_type("IfcAirTerminalBoxTypeEnum", 20, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("DIFFUSER");
        items.push_back("GRILLE");
        items.push_back("LOUVRE");
        items.push_back("NOTDEFINED");
        items.push_back("REGISTER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAirTerminalTypeEnum_type = new enumeration_type("IfcAirTerminalTypeEnum", 22, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("FIXEDPLATECOUNTERFLOWEXCHANGER");
        items.push_back("FIXEDPLATECROSSFLOWEXCHANGER");
        items.push_back("FIXEDPLATEPARALLELFLOWEXCHANGER");
        items.push_back("HEATPIPE");
        items.push_back("NOTDEFINED");
        items.push_back("ROTARYWHEEL");
        items.push_back("RUNAROUNDCOILLOOP");
        items.push_back("THERMOSIPHONCOILTYPEHEATEXCHANGERS");
        items.push_back("THERMOSIPHONSEALEDTUBEHEATEXCHANGERS");
        items.push_back("TWINTOWERENTHALPYRECOVERYLOOPS");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type = new enumeration_type("IfcAirToAirHeatRecoveryTypeEnum", 25, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("BELL");
        items.push_back("BREAKGLASSBUTTON");
        items.push_back("LIGHT");
        items.push_back("MANUALPULLBOX");
        items.push_back("NOTDEFINED");
        items.push_back("RAILWAYCROCODILE");
        items.push_back("RAILWAYDETONATOR");
        items.push_back("SIREN");
        items.push_back("USERDEFINED");
        items.push_back("WHISTLE");
        IFC4X3_RC2_IfcAlarmTypeEnum_type = new enumeration_type("IfcAlarmTypeEnum", 28, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("BIQUADRATICPARABOLA");
        items.push_back("BLOSSCURVE");
        items.push_back("CONSTANTCANT");
        items.push_back("COSINECURVE");
        items.push_back("LINEARTRANSITION");
        items.push_back("SINECURVE");
        items.push_back("VIENNESEBEND");
        IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type = new enumeration_type("IfcAlignmentCantSegmentTypeEnum", 35, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("BIQUADRATICPARABOLA");
        items.push_back("BLOSSCURVE");
        items.push_back("CIRCULARARC");
        items.push_back("CLOTHOID");
        items.push_back("COSINECURVE");
        items.push_back("CUBICSPIRAL");
        items.push_back("LINE");
        items.push_back("SINECURVE");
        items.push_back("VIENNESEBEND");
        IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type = new enumeration_type("IfcAlignmentHorizontalSegmentTypeEnum", 39, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAlignmentTypeEnum_type = new enumeration_type("IfcAlignmentTypeEnum", 42, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("CIRCULARARC");
        items.push_back("CLOTHOID");
        items.push_back("CONSTANTGRADIENT");
        items.push_back("PARABOLICARC");
        IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type = new enumeration_type("IfcAlignmentVerticalSegmentTypeEnum", 45, items);
    }
    IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type = new type_declaration("IfcAmountOfSubstanceMeasure", 46, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("IN_PLANE_LOADING_2D");
        items.push_back("LOADING_3D");
        items.push_back("NOTDEFINED");
        items.push_back("OUT_PLANE_LOADING_2D");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAnalysisModelTypeEnum_type = new enumeration_type("IfcAnalysisModelTypeEnum", 47, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("FIRST_ORDER_THEORY");
        items.push_back("FULL_NONLINEAR_THEORY");
        items.push_back("NOTDEFINED");
        items.push_back("SECOND_ORDER_THEORY");
        items.push_back("THIRD_ORDER_THEORY");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type = new enumeration_type("IfcAnalysisTheoryTypeEnum", 48, items);
    }
    IFC4X3_RC2_IfcAngularVelocityMeasure_type = new type_declaration("IfcAngularVelocityMeasure", 49, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("ASBUILTAREA");
        items.push_back("ASBUILTLINE");
        items.push_back("ASBUILTPOINT");
        items.push_back("ASSUMEDAREA");
        items.push_back("ASSUMEDLINE");
        items.push_back("ASSUMEDPOINT");
        items.push_back("NON_PHYSICAL_SIGNAL");
        items.push_back("NOTDEFINED");
        items.push_back("SUPERELEVATIONEVENT");
        items.push_back("USERDEFINED");
        items.push_back("WIDTHEVENT");
        IFC4X3_RC2_IfcAnnotationTypeEnum_type = new enumeration_type("IfcAnnotationTypeEnum", 52, items);
    }
    IFC4X3_RC2_IfcAreaDensityMeasure_type = new type_declaration("IfcAreaDensityMeasure", 62, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcAreaMeasure_type = new type_declaration("IfcAreaMeasure", 63, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("ADD");
        items.push_back("DIVIDE");
        items.push_back("MULTIPLY");
        items.push_back("SUBTRACT");
        IFC4X3_RC2_IfcArithmeticOperatorEnum_type = new enumeration_type("IfcArithmeticOperatorEnum", 64, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("FACTORY");
        items.push_back("NOTDEFINED");
        items.push_back("SITE");
        IFC4X3_RC2_IfcAssemblyPlaceEnum_type = new enumeration_type("IfcAssemblyPlaceEnum", 65, items);
    }
    {
        std::vector<std::string> items; items.reserve(14);
        items.push_back("AMPLIFIER");
        items.push_back("CAMERA");
        items.push_back("DISPLAY");
        items.push_back("MICROPHONE");
        items.push_back("NOTDEFINED");
        items.push_back("PLAYER");
        items.push_back("PROJECTOR");
        items.push_back("RAILWAY_COMMUNICATION_TERMINAL");
        items.push_back("RECEIVER");
        items.push_back("SPEAKER");
        items.push_back("SWITCHER");
        items.push_back("TELEPHONE");
        items.push_back("TUNER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type = new enumeration_type("IfcAudioVisualApplianceTypeEnum", 70, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("CIRCULAR_ARC");
        items.push_back("ELLIPTIC_ARC");
        items.push_back("HYPERBOLIC_ARC");
        items.push_back("PARABOLIC_ARC");
        items.push_back("POLYLINE_FORM");
        items.push_back("UNSPECIFIED");
        IFC4X3_RC2_IfcBSplineCurveForm_type = new enumeration_type("IfcBSplineCurveForm", 116, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("CONICAL_SURF");
        items.push_back("CYLINDRICAL_SURF");
        items.push_back("GENERALISED_CONE");
        items.push_back("PLANE_SURF");
        items.push_back("QUADRIC_SURF");
        items.push_back("RULED_SURF");
        items.push_back("SPHERICAL_SURF");
        items.push_back("SURF_OF_LINEAR_EXTRUSION");
        items.push_back("SURF_OF_REVOLUTION");
        items.push_back("TOROIDAL_SURF");
        items.push_back("UNSPECIFIED");
        IFC4X3_RC2_IfcBSplineSurfaceForm_type = new enumeration_type("IfcBSplineSurfaceForm", 119, items);
    }
    {
        std::vector<std::string> items; items.reserve(14);
        items.push_back("BEAM");
        items.push_back("CORNICE");
        items.push_back("DIAPHRAGM");
        items.push_back("EDGEBEAM");
        items.push_back("GIRDER_SEGMENT");
        items.push_back("HATSTONE");
        items.push_back("HOLLOWCORE");
        items.push_back("JOIST");
        items.push_back("LINTEL");
        items.push_back("NOTDEFINED");
        items.push_back("PIERCAP");
        items.push_back("SPANDREL");
        items.push_back("T_BEAM");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBeamTypeEnum_type = new enumeration_type("IfcBeamTypeEnum", 80, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("FIXED_MOVEMENT");
        items.push_back("FREE_MOVEMENT");
        items.push_back("GUIDED_LONGITUDINAL");
        items.push_back("GUIDED_TRANSVERSAL");
        items.push_back("NOTDEFINED");
        IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type = new enumeration_type("IfcBearingTypeDisplacementEnum", 83, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("CYLINDRICAL");
        items.push_back("DISK");
        items.push_back("ELASTOMERIC");
        items.push_back("GUIDE");
        items.push_back("NOTDEFINED");
        items.push_back("POT");
        items.push_back("ROCKER");
        items.push_back("ROLLER");
        items.push_back("SPHERICAL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBearingTypeEnum_type = new enumeration_type("IfcBearingTypeEnum", 84, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("EQUALTO");
        items.push_back("GREATERTHAN");
        items.push_back("GREATERTHANOREQUALTO");
        items.push_back("INCLUDEDIN");
        items.push_back("INCLUDES");
        items.push_back("LESSTHAN");
        items.push_back("LESSTHANOREQUALTO");
        items.push_back("NOTEQUALTO");
        items.push_back("NOTINCLUDEDIN");
        items.push_back("NOTINCLUDES");
        IFC4X3_RC2_IfcBenchmarkEnum_type = new enumeration_type("IfcBenchmarkEnum", 85, items);
    }
    IFC4X3_RC2_IfcBinary_type = new type_declaration("IfcBinary", 87, new simple_type(simple_type::binary_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("STEAM");
        items.push_back("USERDEFINED");
        items.push_back("WATER");
        IFC4X3_RC2_IfcBoilerTypeEnum_type = new enumeration_type("IfcBoilerTypeEnum", 93, items);
    }
    IFC4X3_RC2_IfcBoolean_type = new type_declaration("IfcBoolean", 94, new simple_type(simple_type::boolean_type));
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("DIFFERENCE");
        items.push_back("INTERSECTION");
        items.push_back("UNION");
        IFC4X3_RC2_IfcBooleanOperator_type = new enumeration_type("IfcBooleanOperator", 97, items);
    }
    {
        std::vector<std::string> items; items.reserve(12);
        items.push_back("ABUTMENT");
        items.push_back("DECK");
        items.push_back("DECK_SEGMENT");
        items.push_back("FOUNDATION");
        items.push_back("NOTDEFINED");
        items.push_back("PIER");
        items.push_back("PIER_SEGMENT");
        items.push_back("PYLON");
        items.push_back("SUBSTRUCTURE");
        items.push_back("SUPERSTRUCTURE");
        items.push_back("SURFACESTRUCTURE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBridgePartTypeEnum_type = new enumeration_type("IfcBridgePartTypeEnum", 113, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("ARCHED");
        items.push_back("CABLE_STAYED");
        items.push_back("CANTILEVER");
        items.push_back("CULVERT");
        items.push_back("FRAMEWORK");
        items.push_back("GIRDER");
        items.push_back("NOTDEFINED");
        items.push_back("SUSPENSION");
        items.push_back("TRUSS");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBridgeTypeEnum_type = new enumeration_type("IfcBridgeTypeEnum", 114, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("APRON");
        items.push_back("ARMOURUNIT");
        items.push_back("INSULATION");
        items.push_back("NOTDEFINED");
        items.push_back("PRECASTPANEL");
        items.push_back("SAFETYCAGE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type = new enumeration_type("IfcBuildingElementPartTypeEnum", 124, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("COMPLEX");
        items.push_back("ELEMENT");
        items.push_back("NOTDEFINED");
        items.push_back("PARTIAL");
        items.push_back("PROVISIONFORSPACE");
        items.push_back("PROVISIONFORVOID");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type = new enumeration_type("IfcBuildingElementProxyTypeEnum", 127, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("EROSIONPREVENTION");
        items.push_back("FENESTRATION");
        items.push_back("FOUNDATION");
        items.push_back("LOADBEARING");
        items.push_back("NOTDEFINED");
        items.push_back("OUTERSHELL");
        items.push_back("PRESTRESSING");
        items.push_back("REINFORCING");
        items.push_back("SHADING");
        items.push_back("TRANSPORT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBuildingSystemTypeEnum_type = new enumeration_type("IfcBuildingSystemTypeEnum", 130, items);
    }
    {
        std::vector<std::string> items; items.reserve(14);
        items.push_back("EROSIONPREVENTION");
        items.push_back("FENESTRATION");
        items.push_back("FOUNDATION");
        items.push_back("LOADBEARING");
        items.push_back("MOORING");
        items.push_back("MOORINGSYSTEM");
        items.push_back("NOTDEFINED");
        items.push_back("OUTERSHELL");
        items.push_back("PRESTRESSING");
        items.push_back("REINFORCING");
        items.push_back("SHADING");
        items.push_back("TRACKCIRCUIT");
        items.push_back("TRANSPORT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBuiltSystemTypeEnum_type = new enumeration_type("IfcBuiltSystemTypeEnum", 134, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcBurnerTypeEnum_type = new enumeration_type("IfcBurnerTypeEnum", 137, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BEND");
        items.push_back("CROSS");
        items.push_back("NOTDEFINED");
        items.push_back("REDUCER");
        items.push_back("TEE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type = new enumeration_type("IfcCableCarrierFittingTypeEnum", 140, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("CABLEBRACKET");
        items.push_back("CABLELADDERSEGMENT");
        items.push_back("CABLETRAYSEGMENT");
        items.push_back("CABLETRUNKINGSEGMENT");
        items.push_back("CATENARYWIRE");
        items.push_back("CONDUITSEGMENT");
        items.push_back("DROPPER");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type = new enumeration_type("IfcCableCarrierSegmentTypeEnum", 143, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("CONNECTOR");
        items.push_back("ENTRY");
        items.push_back("EXIT");
        items.push_back("FANOUT");
        items.push_back("JUNCTION");
        items.push_back("NOTDEFINED");
        items.push_back("TRANSITION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCableFittingTypeEnum_type = new enumeration_type("IfcCableFittingTypeEnum", 146, items);
    }
    {
        std::vector<std::string> items; items.reserve(12);
        items.push_back("BUSBARSEGMENT");
        items.push_back("CABLESEGMENT");
        items.push_back("CONDUCTORSEGMENT");
        items.push_back("CONTACTWIRESEGMENT");
        items.push_back("CORESEGMENT");
        items.push_back("FIBERSEGMENT");
        items.push_back("FIBERTUBE");
        items.push_back("NOTDEFINED");
        items.push_back("OPTICALCABLESEGMENT");
        items.push_back("STITCHWIRE");
        items.push_back("USERDEFINED");
        items.push_back("WIREPAIRSEGMENT");
        IFC4X3_RC2_IfcCableSegmentTypeEnum_type = new enumeration_type("IfcCableSegmentTypeEnum", 149, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("CAISSON");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("WELL");
        IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type = new enumeration_type("IfcCaissonFoundationTypeEnum", 152, items);
    }
    IFC4X3_RC2_IfcCardinalPointReference_type = new type_declaration("IfcCardinalPointReference", 153, new simple_type(simple_type::integer_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ADDED");
        items.push_back("DELETED");
        items.push_back("MODIFIED");
        items.push_back("NOCHANGE");
        items.push_back("NOTDEFINED");
        IFC4X3_RC2_IfcChangeActionEnum_type = new enumeration_type("IfcChangeActionEnum", 164, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("AIRCOOLED");
        items.push_back("HEATRECOVERY");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("WATERCOOLED");
        IFC4X3_RC2_IfcChillerTypeEnum_type = new enumeration_type("IfcChillerTypeEnum", 167, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcChimneyTypeEnum_type = new enumeration_type("IfcChimneyTypeEnum", 170, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("DXCOOLINGCOIL");
        items.push_back("ELECTRICHEATINGCOIL");
        items.push_back("GASHEATINGCOIL");
        items.push_back("HYDRONICCOIL");
        items.push_back("NOTDEFINED");
        items.push_back("STEAMHEATINGCOIL");
        items.push_back("USERDEFINED");
        items.push_back("WATERCOOLINGCOIL");
        items.push_back("WATERHEATINGCOIL");
        IFC4X3_RC2_IfcCoilTypeEnum_type = new enumeration_type("IfcCoilTypeEnum", 185, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("COLUMN");
        items.push_back("NOTDEFINED");
        items.push_back("PIERSTEM");
        items.push_back("PIERSTEM_SEGMENT");
        items.push_back("PILASTER");
        items.push_back("STANDCOLUMN");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcColumnTypeEnum_type = new enumeration_type("IfcColumnTypeEnum", 194, items);
    }
    {
        std::vector<std::string> items; items.reserve(23);
        items.push_back("ANTENNA");
        items.push_back("AUTOMATON");
        items.push_back("COMPUTER");
        items.push_back("FAX");
        items.push_back("GATEWAY");
        items.push_back("INTELLIGENT_PERIPHERAL");
        items.push_back("IP_NETWORK_EQUIPMENT");
        items.push_back("MODEM");
        items.push_back("NETWORKAPPLIANCE");
        items.push_back("NETWORKBRIDGE");
        items.push_back("NETWORKHUB");
        items.push_back("NOTDEFINED");
        items.push_back("OPTICAL_NETWORK_UNIT");
        items.push_back("PRINTER");
        items.push_back("REPEATER");
        items.push_back("ROUTER");
        items.push_back("SCANNER");
        items.push_back("TELECOMMAND");
        items.push_back("TELEPHONYEXCHANGE");
        items.push_back("TRANSITIONCOMPONENT");
        items.push_back("TRANSPONDER");
        items.push_back("TRANSPORTEQUIPMENT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type = new enumeration_type("IfcCommunicationsApplianceTypeEnum", 197, items);
    }
    IFC4X3_RC2_IfcComplexNumber_type = new type_declaration("IfcComplexNumber", 198, new aggregation_type(aggregation_type::array_type, 1, 2, new simple_type(simple_type::real_type)));
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("P_COMPLEX");
        items.push_back("Q_COMPLEX");
        IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type = new enumeration_type("IfcComplexPropertyTemplateTypeEnum", 201, items);
    }
    IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type = new type_declaration("IfcCompoundPlaneAngleMeasure", 206, new aggregation_type(aggregation_type::list_type, 3, 4, new simple_type(simple_type::integer_type)));
    {
        std::vector<std::string> items; items.reserve(17);
        items.push_back("BOOSTER");
        items.push_back("DYNAMIC");
        items.push_back("HERMETIC");
        items.push_back("NOTDEFINED");
        items.push_back("OPENTYPE");
        items.push_back("RECIPROCATING");
        items.push_back("ROLLINGPISTON");
        items.push_back("ROTARY");
        items.push_back("ROTARYVANE");
        items.push_back("SCROLL");
        items.push_back("SEMIHERMETIC");
        items.push_back("SINGLESCREW");
        items.push_back("SINGLESTAGE");
        items.push_back("TROCHOIDAL");
        items.push_back("TWINSCREW");
        items.push_back("USERDEFINED");
        items.push_back("WELDEDSHELLHERMETIC");
        IFC4X3_RC2_IfcCompressorTypeEnum_type = new enumeration_type("IfcCompressorTypeEnum", 209, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("AIRCOOLED");
        items.push_back("EVAPORATIVECOOLED");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("WATERCOOLED");
        items.push_back("WATERCOOLEDBRAZEDPLATE");
        items.push_back("WATERCOOLEDSHELLCOIL");
        items.push_back("WATERCOOLEDSHELLTUBE");
        items.push_back("WATERCOOLEDTUBEINTUBE");
        IFC4X3_RC2_IfcCondenserTypeEnum_type = new enumeration_type("IfcCondenserTypeEnum", 212, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("ATEND");
        items.push_back("ATPATH");
        items.push_back("ATSTART");
        items.push_back("NOTDEFINED");
        IFC4X3_RC2_IfcConnectionTypeEnum_type = new enumeration_type("IfcConnectionTypeEnum", 220, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ADVISORY");
        items.push_back("HARD");
        items.push_back("NOTDEFINED");
        items.push_back("SOFT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcConstraintEnum_type = new enumeration_type("IfcConstraintEnum", 223, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("DEMOLISHING");
        items.push_back("EARTHMOVING");
        items.push_back("ERECTING");
        items.push_back("HEATING");
        items.push_back("LIGHTING");
        items.push_back("NOTDEFINED");
        items.push_back("PAVING");
        items.push_back("PUMPING");
        items.push_back("TRANSPORTING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type = new enumeration_type("IfcConstructionEquipmentResourceTypeEnum", 226, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("AGGREGATES");
        items.push_back("CONCRETE");
        items.push_back("DRYWALL");
        items.push_back("FUEL");
        items.push_back("GYPSUM");
        items.push_back("MASONRY");
        items.push_back("METAL");
        items.push_back("NOTDEFINED");
        items.push_back("PLASTIC");
        items.push_back("USERDEFINED");
        items.push_back("WOOD");
        IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type = new enumeration_type("IfcConstructionMaterialResourceTypeEnum", 229, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("ASSEMBLY");
        items.push_back("FORMWORK");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type = new enumeration_type("IfcConstructionProductResourceTypeEnum", 232, items);
    }
    IFC4X3_RC2_IfcContextDependentMeasure_type = new type_declaration("IfcContextDependentMeasure", 236, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("FLOATING");
        items.push_back("MULTIPOSITION");
        items.push_back("NOTDEFINED");
        items.push_back("PROGRAMMABLE");
        items.push_back("PROPORTIONAL");
        items.push_back("TWOPOSITION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcControllerTypeEnum_type = new enumeration_type("IfcControllerTypeEnum", 241, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BELTCONVEYOR");
        items.push_back("BUCKETCONVEYOR");
        items.push_back("CHUTECONVEYOR");
        items.push_back("NOTDEFINED");
        items.push_back("SCREWCONVEYOR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type = new enumeration_type("IfcConveyorSegmentTypeEnum", 246, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("ACTIVE");
        items.push_back("NOTDEFINED");
        items.push_back("PASSIVE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCooledBeamTypeEnum_type = new enumeration_type("IfcCooledBeamTypeEnum", 249, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("MECHANICALFORCEDDRAFT");
        items.push_back("MECHANICALINDUCEDDRAFT");
        items.push_back("NATURALDRAFT");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCoolingTowerTypeEnum_type = new enumeration_type("IfcCoolingTowerTypeEnum", 252, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCostItemTypeEnum_type = new enumeration_type("IfcCostItemTypeEnum", 257, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("BUDGET");
        items.push_back("COSTPLAN");
        items.push_back("ESTIMATE");
        items.push_back("NOTDEFINED");
        items.push_back("PRICEDBILLOFQUANTITIES");
        items.push_back("SCHEDULEOFRATES");
        items.push_back("TENDER");
        items.push_back("UNPRICEDBILLOFQUANTITIES");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCostScheduleTypeEnum_type = new enumeration_type("IfcCostScheduleTypeEnum", 259, items);
    }
    IFC4X3_RC2_IfcCountMeasure_type = new type_declaration("IfcCountMeasure", 261, new simple_type(simple_type::number_type));
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("ARMOUR");
        items.push_back("BALLASTBED");
        items.push_back("CORE");
        items.push_back("FILTER");
        items.push_back("NOTDEFINED");
        items.push_back("PAVEMENT");
        items.push_back("PROTECTION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCourseTypeEnum_type = new enumeration_type("IfcCourseTypeEnum", 264, items);
    }
    {
        std::vector<std::string> items; items.reserve(13);
        items.push_back("CEILING");
        items.push_back("CLADDING");
        items.push_back("COPING");
        items.push_back("FLOORING");
        items.push_back("INSULATION");
        items.push_back("MEMBRANE");
        items.push_back("MOLDING");
        items.push_back("NOTDEFINED");
        items.push_back("ROOFING");
        items.push_back("SKIRTINGBOARD");
        items.push_back("SLEEVING");
        items.push_back("USERDEFINED");
        items.push_back("WRAPPING");
        IFC4X3_RC2_IfcCoveringTypeEnum_type = new enumeration_type("IfcCoveringTypeEnum", 267, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("OFFICE");
        items.push_back("SITE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCrewResourceTypeEnum_type = new enumeration_type("IfcCrewResourceTypeEnum", 270, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcCurtainWallTypeEnum_type = new enumeration_type("IfcCurtainWallTypeEnum", 278, items);
    }
    IFC4X3_RC2_IfcCurvatureMeasure_type = new type_declaration("IfcCurvatureMeasure", 279, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("LINEAR");
        items.push_back("LOG_LINEAR");
        items.push_back("LOG_LOG");
        items.push_back("NOTDEFINED");
        IFC4X3_RC2_IfcCurveInterpolationEnum_type = new enumeration_type("IfcCurveInterpolationEnum", 284, items);
    }
    {
        std::vector<std::string> items; items.reserve(13);
        items.push_back("BACKDRAFTDAMPER");
        items.push_back("BALANCINGDAMPER");
        items.push_back("BLASTDAMPER");
        items.push_back("CONTROLDAMPER");
        items.push_back("FIREDAMPER");
        items.push_back("FIRESMOKEDAMPER");
        items.push_back("FUMEHOODEXHAUST");
        items.push_back("GRAVITYDAMPER");
        items.push_back("GRAVITYRELIEFDAMPER");
        items.push_back("NOTDEFINED");
        items.push_back("RELIEFDAMPER");
        items.push_back("SMOKEDAMPER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDamperTypeEnum_type = new enumeration_type("IfcDamperTypeEnum", 298, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("MEASURED");
        items.push_back("NOTDEFINED");
        items.push_back("PREDICTED");
        items.push_back("SIMULATED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDataOriginEnum_type = new enumeration_type("IfcDataOriginEnum", 299, items);
    }
    IFC4X3_RC2_IfcDate_type = new type_declaration("IfcDate", 300, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcDateTime_type = new type_declaration("IfcDateTime", 301, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcDayInMonthNumber_type = new type_declaration("IfcDayInMonthNumber", 302, new simple_type(simple_type::integer_type));
    IFC4X3_RC2_IfcDayInWeekNumber_type = new type_declaration("IfcDayInWeekNumber", 303, new simple_type(simple_type::integer_type));
    {
        std::vector<std::string> items; items.reserve(53);
        items.push_back("ACCELERATIONUNIT");
        items.push_back("ANGULARVELOCITYUNIT");
        items.push_back("AREADENSITYUNIT");
        items.push_back("COMPOUNDPLANEANGLEUNIT");
        items.push_back("CURVATUREUNIT");
        items.push_back("DYNAMICVISCOSITYUNIT");
        items.push_back("HEATFLUXDENSITYUNIT");
        items.push_back("HEATINGVALUEUNIT");
        items.push_back("INTEGERCOUNTRATEUNIT");
        items.push_back("IONCONCENTRATIONUNIT");
        items.push_back("ISOTHERMALMOISTURECAPACITYUNIT");
        items.push_back("KINEMATICVISCOSITYUNIT");
        items.push_back("LINEARFORCEUNIT");
        items.push_back("LINEARMOMENTUNIT");
        items.push_back("LINEARSTIFFNESSUNIT");
        items.push_back("LINEARVELOCITYUNIT");
        items.push_back("LUMINOUSINTENSITYDISTRIBUTIONUNIT");
        items.push_back("MASSDENSITYUNIT");
        items.push_back("MASSFLOWRATEUNIT");
        items.push_back("MASSPERLENGTHUNIT");
        items.push_back("MODULUSOFELASTICITYUNIT");
        items.push_back("MODULUSOFLINEARSUBGRADEREACTIONUNIT");
        items.push_back("MODULUSOFROTATIONALSUBGRADEREACTIONUNIT");
        items.push_back("MODULUSOFSUBGRADEREACTIONUNIT");
        items.push_back("MOISTUREDIFFUSIVITYUNIT");
        items.push_back("MOLECULARWEIGHTUNIT");
        items.push_back("MOMENTOFINERTIAUNIT");
        items.push_back("PHUNIT");
        items.push_back("PLANARFORCEUNIT");
        items.push_back("ROTATIONALFREQUENCYUNIT");
        items.push_back("ROTATIONALMASSUNIT");
        items.push_back("ROTATIONALSTIFFNESSUNIT");
        items.push_back("SECTIONAREAINTEGRALUNIT");
        items.push_back("SECTIONMODULUSUNIT");
        items.push_back("SHEARMODULUSUNIT");
        items.push_back("SOUNDPOWERLEVELUNIT");
        items.push_back("SOUNDPOWERUNIT");
        items.push_back("SOUNDPRESSURELEVELUNIT");
        items.push_back("SOUNDPRESSUREUNIT");
        items.push_back("SPECIFICHEATCAPACITYUNIT");
        items.push_back("TEMPERATUREGRADIENTUNIT");
        items.push_back("TEMPERATURERATEOFCHANGEUNIT");
        items.push_back("THERMALADMITTANCEUNIT");
        items.push_back("THERMALCONDUCTANCEUNIT");
        items.push_back("THERMALEXPANSIONCOEFFICIENTUNIT");
        items.push_back("THERMALRESISTANCEUNIT");
        items.push_back("THERMALTRANSMITTANCEUNIT");
        items.push_back("TORQUEUNIT");
        items.push_back("USERDEFINED");
        items.push_back("VAPORPERMEABILITYUNIT");
        items.push_back("VOLUMETRICFLOWRATEUNIT");
        items.push_back("WARPINGCONSTANTUNIT");
        items.push_back("WARPINGMOMENTUNIT");
        IFC4X3_RC2_IfcDerivedUnitEnum_type = new enumeration_type("IfcDerivedUnitEnum", 311, items);
    }
    IFC4X3_RC2_IfcDescriptiveMeasure_type = new type_declaration("IfcDescriptiveMeasure", 312, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcDimensionCount_type = new type_declaration("IfcDimensionCount", 314, new simple_type(simple_type::integer_type));
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NEGATIVE");
        items.push_back("POSITIVE");
        IFC4X3_RC2_IfcDirectionSenseEnum_type = new enumeration_type("IfcDirectionSenseEnum", 316, items);
    }
    {
        std::vector<std::string> items; items.reserve(19);
        items.push_back("ANCHORPLATE");
        items.push_back("BIRDPROTECTION");
        items.push_back("BRACKET");
        items.push_back("CABLEARRANGER");
        items.push_back("ELASTIC_CUSHION");
        items.push_back("EXPANSION_JOINT_DEVICE");
        items.push_back("INSULATOR");
        items.push_back("LOCK");
        items.push_back("NOTDEFINED");
        items.push_back("PANEL_STRENGTHENING");
        items.push_back("RAILBRACE");
        items.push_back("RAILPAD");
        items.push_back("RAIL_LUBRICATION");
        items.push_back("RAIL_MECHANICAL_EQUIPMENT");
        items.push_back("SHOE");
        items.push_back("SLIDINGCHAIR");
        items.push_back("SOUNDABSORPTION");
        items.push_back("TENSIONINGEQUIPMENT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type = new enumeration_type("IfcDiscreteAccessoryTypeEnum", 321, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CONSUMERUNIT");
        items.push_back("DISTRIBUTIONBOARD");
        items.push_back("DISTRIBUTIONFRAME");
        items.push_back("MOTORCONTROLCENTRE");
        items.push_back("NOTDEFINED");
        items.push_back("SWITCHBOARD");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDistributionBoardTypeEnum_type = new enumeration_type("IfcDistributionBoardTypeEnum", 324, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("FORMEDDUCT");
        items.push_back("INSPECTIONCHAMBER");
        items.push_back("INSPECTIONPIT");
        items.push_back("MANHOLE");
        items.push_back("METERCHAMBER");
        items.push_back("NOTDEFINED");
        items.push_back("SUMP");
        items.push_back("TRENCH");
        items.push_back("USERDEFINED");
        items.push_back("VALVECHAMBER");
        IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type = new enumeration_type("IfcDistributionChamberElementTypeEnum", 327, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CABLE");
        items.push_back("CABLECARRIER");
        items.push_back("DUCT");
        items.push_back("NOTDEFINED");
        items.push_back("PIPE");
        items.push_back("USERDEFINED");
        items.push_back("WIRELESS");
        IFC4X3_RC2_IfcDistributionPortTypeEnum_type = new enumeration_type("IfcDistributionPortTypeEnum", 336, items);
    }
    {
        std::vector<std::string> items; items.reserve(47);
        items.push_back("AIRCONDITIONING");
        items.push_back("AUDIOVISUAL");
        items.push_back("CATENARY_SYSTEM");
        items.push_back("CHEMICAL");
        items.push_back("CHILLEDWATER");
        items.push_back("COMMUNICATION");
        items.push_back("COMPRESSEDAIR");
        items.push_back("CONDENSERWATER");
        items.push_back("CONTROL");
        items.push_back("CONVEYING");
        items.push_back("DATA");
        items.push_back("DISPOSAL");
        items.push_back("DOMESTICCOLDWATER");
        items.push_back("DOMESTICHOTWATER");
        items.push_back("DRAINAGE");
        items.push_back("EARTHING");
        items.push_back("ELECTRICAL");
        items.push_back("ELECTROACOUSTIC");
        items.push_back("EXHAUST");
        items.push_back("FIREPROTECTION");
        items.push_back("FUEL");
        items.push_back("GAS");
        items.push_back("HAZARDOUS");
        items.push_back("HEATING");
        items.push_back("LIGHTING");
        items.push_back("LIGHTNINGPROTECTION");
        items.push_back("MUNICIPALSOLIDWASTE");
        items.push_back("NOTDEFINED");
        items.push_back("OIL");
        items.push_back("OPERATIONAL");
        items.push_back("OVERHEAD_CONTACTLINE_SYSTEM");
        items.push_back("POWERGENERATION");
        items.push_back("RAINWATER");
        items.push_back("REFRIGERATION");
        items.push_back("RETURN_CIRCUIT");
        items.push_back("SECURITY");
        items.push_back("SEWAGE");
        items.push_back("SIGNAL");
        items.push_back("STORMWATER");
        items.push_back("TELEPHONE");
        items.push_back("TV");
        items.push_back("USERDEFINED");
        items.push_back("VACUUM");
        items.push_back("VENT");
        items.push_back("VENTILATION");
        items.push_back("WASTEWATER");
        items.push_back("WATERSUPPLY");
        IFC4X3_RC2_IfcDistributionSystemEnum_type = new enumeration_type("IfcDistributionSystemEnum", 338, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("CONFIDENTIAL");
        items.push_back("NOTDEFINED");
        items.push_back("PERSONAL");
        items.push_back("PUBLIC");
        items.push_back("RESTRICTED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDocumentConfidentialityEnum_type = new enumeration_type("IfcDocumentConfidentialityEnum", 339, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("DRAFT");
        items.push_back("FINAL");
        items.push_back("FINALDRAFT");
        items.push_back("NOTDEFINED");
        items.push_back("REVISION");
        IFC4X3_RC2_IfcDocumentStatusEnum_type = new enumeration_type("IfcDocumentStatusEnum", 344, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("DOUBLE_ACTING");
        items.push_back("FIXEDPANEL");
        items.push_back("FOLDING");
        items.push_back("NOTDEFINED");
        items.push_back("REVOLVING");
        items.push_back("ROLLINGUP");
        items.push_back("SLIDING");
        items.push_back("SWINGING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDoorPanelOperationEnum_type = new enumeration_type("IfcDoorPanelOperationEnum", 347, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("LEFT");
        items.push_back("MIDDLE");
        items.push_back("NOTDEFINED");
        items.push_back("RIGHT");
        IFC4X3_RC2_IfcDoorPanelPositionEnum_type = new enumeration_type("IfcDoorPanelPositionEnum", 348, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("ALUMINIUM");
        items.push_back("ALUMINIUM_PLASTIC");
        items.push_back("ALUMINIUM_WOOD");
        items.push_back("HIGH_GRADE_STEEL");
        items.push_back("NOTDEFINED");
        items.push_back("PLASTIC");
        items.push_back("STEEL");
        items.push_back("USERDEFINED");
        items.push_back("WOOD");
        IFC4X3_RC2_IfcDoorStyleConstructionEnum_type = new enumeration_type("IfcDoorStyleConstructionEnum", 352, items);
    }
    {
        std::vector<std::string> items; items.reserve(18);
        items.push_back("DOUBLE_DOOR_DOUBLE_SWING");
        items.push_back("DOUBLE_DOOR_FOLDING");
        items.push_back("DOUBLE_DOOR_SINGLE_SWING");
        items.push_back("DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT");
        items.push_back("DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT");
        items.push_back("DOUBLE_DOOR_SLIDING");
        items.push_back("DOUBLE_SWING_LEFT");
        items.push_back("DOUBLE_SWING_RIGHT");
        items.push_back("FOLDING_TO_LEFT");
        items.push_back("FOLDING_TO_RIGHT");
        items.push_back("NOTDEFINED");
        items.push_back("REVOLVING");
        items.push_back("ROLLINGUP");
        items.push_back("SINGLE_SWING_LEFT");
        items.push_back("SINGLE_SWING_RIGHT");
        items.push_back("SLIDING_TO_LEFT");
        items.push_back("SLIDING_TO_RIGHT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDoorStyleOperationEnum_type = new enumeration_type("IfcDoorStyleOperationEnum", 353, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("BOOM_BARRIER");
        items.push_back("DOOR");
        items.push_back("GATE");
        items.push_back("NOTDEFINED");
        items.push_back("TRAPDOOR");
        items.push_back("TURNSTILE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDoorTypeEnum_type = new enumeration_type("IfcDoorTypeEnum", 355, items);
    }
    {
        std::vector<std::string> items; items.reserve(20);
        items.push_back("DOUBLE_DOOR_DOUBLE_SWING");
        items.push_back("DOUBLE_DOOR_FOLDING");
        items.push_back("DOUBLE_DOOR_SINGLE_SWING");
        items.push_back("DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT");
        items.push_back("DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT");
        items.push_back("DOUBLE_DOOR_SLIDING");
        items.push_back("DOUBLE_SWING_LEFT");
        items.push_back("DOUBLE_SWING_RIGHT");
        items.push_back("FOLDING_TO_LEFT");
        items.push_back("FOLDING_TO_RIGHT");
        items.push_back("NOTDEFINED");
        items.push_back("REVOLVING");
        items.push_back("ROLLINGUP");
        items.push_back("SINGLE_SWING_LEFT");
        items.push_back("SINGLE_SWING_RIGHT");
        items.push_back("SLIDING_TO_LEFT");
        items.push_back("SLIDING_TO_RIGHT");
        items.push_back("SWING_FIXED_LEFT");
        items.push_back("SWING_FIXED_RIGHT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDoorTypeOperationEnum_type = new enumeration_type("IfcDoorTypeOperationEnum", 356, items);
    }
    IFC4X3_RC2_IfcDoseEquivalentMeasure_type = new type_declaration("IfcDoseEquivalentMeasure", 357, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("BEND");
        items.push_back("CONNECTOR");
        items.push_back("ENTRY");
        items.push_back("EXIT");
        items.push_back("JUNCTION");
        items.push_back("NOTDEFINED");
        items.push_back("OBSTRUCTION");
        items.push_back("TRANSITION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDuctFittingTypeEnum_type = new enumeration_type("IfcDuctFittingTypeEnum", 362, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("FLEXIBLESEGMENT");
        items.push_back("NOTDEFINED");
        items.push_back("RIGIDSEGMENT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDuctSegmentTypeEnum_type = new enumeration_type("IfcDuctSegmentTypeEnum", 365, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("FLATOVAL");
        items.push_back("NOTDEFINED");
        items.push_back("RECTANGULAR");
        items.push_back("ROUND");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcDuctSilencerTypeEnum_type = new enumeration_type("IfcDuctSilencerTypeEnum", 368, items);
    }
    IFC4X3_RC2_IfcDuration_type = new type_declaration("IfcDuration", 369, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcDynamicViscosityMeasure_type = new type_declaration("IfcDynamicViscosityMeasure", 370, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("BASE_EXCAVATION");
        items.push_back("CUT");
        items.push_back("DREDGING");
        items.push_back("EXCAVATION");
        items.push_back("NOTDEFINED");
        items.push_back("OVEREXCAVATION");
        items.push_back("PAVEMENTMILLING");
        items.push_back("STEPEXCAVATION");
        items.push_back("TOPSOILREMOVAL");
        items.push_back("TRENCH");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEarthworksCutTypeEnum_type = new enumeration_type("IfcEarthworksCutTypeEnum", 372, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("BACKFILL");
        items.push_back("COUNTERWEIGHT");
        items.push_back("EMBANKMENT");
        items.push_back("NOTDEFINED");
        items.push_back("SLOPEFILL");
        items.push_back("SUBGRADE");
        items.push_back("SUBGRADEBED");
        items.push_back("TRANSITIONSECTION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEarthworksFillTypeEnum_type = new enumeration_type("IfcEarthworksFillTypeEnum", 375, items);
    }
    {
        std::vector<std::string> items; items.reserve(18);
        items.push_back("DISHWASHER");
        items.push_back("ELECTRICCOOKER");
        items.push_back("FREESTANDINGELECTRICHEATER");
        items.push_back("FREESTANDINGFAN");
        items.push_back("FREESTANDINGWATERCOOLER");
        items.push_back("FREESTANDINGWATERHEATER");
        items.push_back("FREEZER");
        items.push_back("FRIDGE_FREEZER");
        items.push_back("HANDDRYER");
        items.push_back("KITCHENMACHINE");
        items.push_back("MICROWAVE");
        items.push_back("NOTDEFINED");
        items.push_back("PHOTOCOPIER");
        items.push_back("REFRIGERATOR");
        items.push_back("TUMBLEDRYER");
        items.push_back("USERDEFINED");
        items.push_back("VENDINGMACHINE");
        items.push_back("WASHINGMACHINE");
        IFC4X3_RC2_IfcElectricApplianceTypeEnum_type = new enumeration_type("IfcElectricApplianceTypeEnum", 381, items);
    }
    IFC4X3_RC2_IfcElectricCapacitanceMeasure_type = new type_declaration("IfcElectricCapacitanceMeasure", 382, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcElectricChargeMeasure_type = new type_declaration("IfcElectricChargeMeasure", 383, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcElectricConductanceMeasure_type = new type_declaration("IfcElectricConductanceMeasure", 384, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcElectricCurrentMeasure_type = new type_declaration("IfcElectricCurrentMeasure", 385, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("CONSUMERUNIT");
        items.push_back("DISTRIBUTIONBOARD");
        items.push_back("MOTORCONTROLCENTRE");
        items.push_back("NOTDEFINED");
        items.push_back("SWITCHBOARD");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type = new enumeration_type("IfcElectricDistributionBoardTypeEnum", 388, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("BATTERY");
        items.push_back("CAPACITOR");
        items.push_back("CAPACITORBANK");
        items.push_back("COMPENSATOR");
        items.push_back("HARMONICFILTER");
        items.push_back("INDUCTOR");
        items.push_back("INDUCTORBANK");
        items.push_back("NOTDEFINED");
        items.push_back("RECHARGER");
        items.push_back("UPS");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type = new enumeration_type("IfcElectricFlowStorageDeviceTypeEnum", 391, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("ELECTRONICFILTER");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type = new enumeration_type("IfcElectricFlowTreatmentDeviceTypeEnum", 394, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("CHP");
        items.push_back("ENGINEGENERATOR");
        items.push_back("NOTDEFINED");
        items.push_back("STANDALONE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type = new enumeration_type("IfcElectricGeneratorTypeEnum", 397, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("DC");
        items.push_back("INDUCTION");
        items.push_back("NOTDEFINED");
        items.push_back("POLYPHASE");
        items.push_back("RELUCTANCESYNCHRONOUS");
        items.push_back("SYNCHRONOUS");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElectricMotorTypeEnum_type = new enumeration_type("IfcElectricMotorTypeEnum", 400, items);
    }
    IFC4X3_RC2_IfcElectricResistanceMeasure_type = new type_declaration("IfcElectricResistanceMeasure", 401, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("NOTDEFINED");
        items.push_back("RELAY");
        items.push_back("TIMECLOCK");
        items.push_back("TIMEDELAY");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type = new enumeration_type("IfcElectricTimeControlTypeEnum", 404, items);
    }
    IFC4X3_RC2_IfcElectricVoltageMeasure_type = new type_declaration("IfcElectricVoltageMeasure", 405, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(30);
        items.push_back("ABUTMENT");
        items.push_back("ACCESSORY_ASSEMBLY");
        items.push_back("ARCH");
        items.push_back("BEAM_GRID");
        items.push_back("BRACED_FRAME");
        items.push_back("CROSS_BRACING");
        items.push_back("DECK");
        items.push_back("DILATATIONPANEL");
        items.push_back("ENTRANCEWORKS");
        items.push_back("GIRDER");
        items.push_back("GRID");
        items.push_back("MAST");
        items.push_back("NOTDEFINED");
        items.push_back("PIER");
        items.push_back("PYLON");
        items.push_back("RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY");
        items.push_back("REINFORCEMENT_UNIT");
        items.push_back("RIGID_FRAME");
        items.push_back("SHELTER");
        items.push_back("SIGNALASSEMBLY");
        items.push_back("SLAB_FIELD");
        items.push_back("SUMPBUSTER");
        items.push_back("SUPPORTINGASSEMBLY");
        items.push_back("SUSPENSIONASSEMBLY");
        items.push_back("TRACKPANEL");
        items.push_back("TRACTION_SWITCHING_ASSEMBLY");
        items.push_back("TRAFFIC_CALMING_DEVICE");
        items.push_back("TRUSS");
        items.push_back("TURNOUTPANEL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcElementAssemblyTypeEnum_type = new enumeration_type("IfcElementAssemblyTypeEnum", 410, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("COMPLEX");
        items.push_back("ELEMENT");
        items.push_back("PARTIAL");
        IFC4X3_RC2_IfcElementCompositionEnum_type = new enumeration_type("IfcElementCompositionEnum", 413, items);
    }
    IFC4X3_RC2_IfcEnergyMeasure_type = new type_declaration("IfcEnergyMeasure", 420, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("EXTERNALCOMBUSTION");
        items.push_back("INTERNALCOMBUSTION");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEngineTypeEnum_type = new enumeration_type("IfcEngineTypeEnum", 423, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("DIRECTEVAPORATIVEAIRWASHER");
        items.push_back("DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER");
        items.push_back("DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER");
        items.push_back("DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER");
        items.push_back("DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER");
        items.push_back("INDIRECTDIRECTCOMBINATION");
        items.push_back("INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER");
        items.push_back("INDIRECTEVAPORATIVEPACKAGEAIRCOOLER");
        items.push_back("INDIRECTEVAPORATIVEWETCOIL");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type = new enumeration_type("IfcEvaporativeCoolerTypeEnum", 426, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("DIRECTEXPANSION");
        items.push_back("DIRECTEXPANSIONBRAZEDPLATE");
        items.push_back("DIRECTEXPANSIONSHELLANDTUBE");
        items.push_back("DIRECTEXPANSIONTUBEINTUBE");
        items.push_back("FLOODEDSHELLANDTUBE");
        items.push_back("NOTDEFINED");
        items.push_back("SHELLANDCOIL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEvaporatorTypeEnum_type = new enumeration_type("IfcEvaporatorTypeEnum", 429, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("EVENTCOMPLEX");
        items.push_back("EVENTMESSAGE");
        items.push_back("EVENTRULE");
        items.push_back("EVENTTIME");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEventTriggerTypeEnum_type = new enumeration_type("IfcEventTriggerTypeEnum", 432, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ENDEVENT");
        items.push_back("INTERMEDIATEEVENT");
        items.push_back("NOTDEFINED");
        items.push_back("STARTEVENT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcEventTypeEnum_type = new enumeration_type("IfcEventTypeEnum", 434, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("EXTERNAL");
        items.push_back("EXTERNAL_EARTH");
        items.push_back("EXTERNAL_FIRE");
        items.push_back("EXTERNAL_WATER");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type = new enumeration_type("IfcExternalSpatialElementTypeEnum", 443, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("ABOVEGROUND");
        items.push_back("BELOWGROUND");
        items.push_back("JUNCTION");
        items.push_back("LEVELCROSSING");
        items.push_back("NOTDEFINED");
        items.push_back("SEGMENT");
        items.push_back("SUBSTRUCTURE");
        items.push_back("SUPERSTRUCTURE");
        items.push_back("TERMINAL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type = new enumeration_type("IfcFacilityPartCommonTypeEnum", 456, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("LATERAL");
        items.push_back("LONGITUDINAL");
        items.push_back("NOTDEFINED");
        items.push_back("REGION");
        items.push_back("USERDEFINED");
        items.push_back("VERTICAL");
        IFC4X3_RC2_IfcFacilityUsageEnum_type = new enumeration_type("IfcFacilityUsageEnum", 458, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("CENTRIFUGALAIRFOIL");
        items.push_back("CENTRIFUGALBACKWARDINCLINEDCURVED");
        items.push_back("CENTRIFUGALFORWARDCURVED");
        items.push_back("CENTRIFUGALRADIAL");
        items.push_back("NOTDEFINED");
        items.push_back("PROPELLORAXIAL");
        items.push_back("TUBEAXIAL");
        items.push_back("USERDEFINED");
        items.push_back("VANEAXIAL");
        IFC4X3_RC2_IfcFanTypeEnum_type = new enumeration_type("IfcFanTypeEnum", 462, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("GLUE");
        items.push_back("MORTAR");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("WELD");
        IFC4X3_RC2_IfcFastenerTypeEnum_type = new enumeration_type("IfcFastenerTypeEnum", 465, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("AIRPARTICLEFILTER");
        items.push_back("COMPRESSEDAIRFILTER");
        items.push_back("NOTDEFINED");
        items.push_back("ODORFILTER");
        items.push_back("OILFILTER");
        items.push_back("STRAINER");
        items.push_back("USERDEFINED");
        items.push_back("WATERFILTER");
        IFC4X3_RC2_IfcFilterTypeEnum_type = new enumeration_type("IfcFilterTypeEnum", 475, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("BREECHINGINLET");
        items.push_back("FIREHYDRANT");
        items.push_back("HOSEREEL");
        items.push_back("NOTDEFINED");
        items.push_back("SPRINKLER");
        items.push_back("SPRINKLERDEFLECTOR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type = new enumeration_type("IfcFireSuppressionTerminalTypeEnum", 478, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("SINK");
        items.push_back("SOURCE");
        items.push_back("SOURCEANDSINK");
        IFC4X3_RC2_IfcFlowDirectionEnum_type = new enumeration_type("IfcFlowDirectionEnum", 482, items);
    }
    {
        std::vector<std::string> items; items.reserve(12);
        items.push_back("AMMETER");
        items.push_back("COMBINED");
        items.push_back("FREQUENCYMETER");
        items.push_back("NOTDEFINED");
        items.push_back("PHASEANGLEMETER");
        items.push_back("POWERFACTORMETER");
        items.push_back("PRESSUREGAUGE");
        items.push_back("THERMOMETER");
        items.push_back("USERDEFINED");
        items.push_back("VOLTMETER");
        items.push_back("VOLTMETER_PEAK");
        items.push_back("VOLTMETER_RMS");
        IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type = new enumeration_type("IfcFlowInstrumentTypeEnum", 487, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("ENERGYMETER");
        items.push_back("GASMETER");
        items.push_back("NOTDEFINED");
        items.push_back("OILMETER");
        items.push_back("USERDEFINED");
        items.push_back("WATERMETER");
        IFC4X3_RC2_IfcFlowMeterTypeEnum_type = new enumeration_type("IfcFlowMeterTypeEnum", 490, items);
    }
    IFC4X3_RC2_IfcFontStyle_type = new type_declaration("IfcFontStyle", 501, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcFontVariant_type = new type_declaration("IfcFontVariant", 502, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcFontWeight_type = new type_declaration("IfcFontWeight", 503, new simple_type(simple_type::string_type));
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CAISSON_FOUNDATION");
        items.push_back("FOOTING_BEAM");
        items.push_back("NOTDEFINED");
        items.push_back("PAD_FOOTING");
        items.push_back("PILE_CAP");
        items.push_back("STRIP_FOOTING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcFootingTypeEnum_type = new enumeration_type("IfcFootingTypeEnum", 506, items);
    }
    IFC4X3_RC2_IfcForceMeasure_type = new type_declaration("IfcForceMeasure", 507, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcFrequencyMeasure_type = new type_declaration("IfcFrequencyMeasure", 508, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("BED");
        items.push_back("CHAIR");
        items.push_back("DESK");
        items.push_back("FILECABINET");
        items.push_back("NOTDEFINED");
        items.push_back("SHELF");
        items.push_back("SOFA");
        items.push_back("TABLE");
        items.push_back("TECHNICALCABINET");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcFurnitureTypeEnum_type = new enumeration_type("IfcFurnitureTypeEnum", 513, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("SOIL_BORING_POINT");
        items.push_back("TERRAIN");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcGeographicElementTypeEnum_type = new enumeration_type("IfcGeographicElementTypeEnum", 516, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("ELEVATION_VIEW");
        items.push_back("GRAPH_VIEW");
        items.push_back("MODEL_VIEW");
        items.push_back("NOTDEFINED");
        items.push_back("PLAN_VIEW");
        items.push_back("REFLECTED_PLAN_VIEW");
        items.push_back("SECTION_VIEW");
        items.push_back("SKETCH_VIEW");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcGeometricProjectionEnum_type = new enumeration_type("IfcGeometricProjectionEnum", 518, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("GLOBAL_COORDS");
        items.push_back("LOCAL_COORDS");
        IFC4X3_RC2_IfcGlobalOrLocalEnum_type = new enumeration_type("IfcGlobalOrLocalEnum", 530, items);
    }
    IFC4X3_RC2_IfcGloballyUniqueId_type = new type_declaration("IfcGloballyUniqueId", 529, new simple_type(simple_type::string_type));
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("IRREGULAR");
        items.push_back("NOTDEFINED");
        items.push_back("RADIAL");
        items.push_back("RECTANGULAR");
        items.push_back("TRIANGULAR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcGridTypeEnum_type = new enumeration_type("IfcGridTypeEnum", 536, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("NOTDEFINED");
        items.push_back("PLATE");
        items.push_back("SHELLANDTUBE");
        items.push_back("TURNOUTHEATING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcHeatExchangerTypeEnum_type = new enumeration_type("IfcHeatExchangerTypeEnum", 542, items);
    }
    IFC4X3_RC2_IfcHeatFluxDensityMeasure_type = new type_declaration("IfcHeatFluxDensityMeasure", 543, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcHeatingValueMeasure_type = new type_declaration("IfcHeatingValueMeasure", 544, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(15);
        items.push_back("ADIABATICAIRWASHER");
        items.push_back("ADIABATICATOMIZING");
        items.push_back("ADIABATICCOMPRESSEDAIRNOZZLE");
        items.push_back("ADIABATICPAN");
        items.push_back("ADIABATICRIGIDMEDIA");
        items.push_back("ADIABATICULTRASONIC");
        items.push_back("ADIABATICWETTEDELEMENT");
        items.push_back("ASSISTEDBUTANE");
        items.push_back("ASSISTEDELECTRIC");
        items.push_back("ASSISTEDNATURALGAS");
        items.push_back("ASSISTEDPROPANE");
        items.push_back("ASSISTEDSTEAM");
        items.push_back("NOTDEFINED");
        items.push_back("STEAMINJECTION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcHumidifierTypeEnum_type = new enumeration_type("IfcHumidifierTypeEnum", 547, items);
    }
    IFC4X3_RC2_IfcIdentifier_type = new type_declaration("IfcIdentifier", 548, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcIlluminanceMeasure_type = new type_declaration("IfcIlluminanceMeasure", 549, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BUMPER");
        items.push_back("CRASHCUSHION");
        items.push_back("DAMPINGSYSTEM");
        items.push_back("FENDER");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type = new enumeration_type("IfcImpactProtectionDeviceTypeEnum", 553, items);
    }
    IFC4X3_RC2_IfcInductanceMeasure_type = new type_declaration("IfcInductanceMeasure", 562, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcInteger_type = new type_declaration("IfcInteger", 563, new simple_type(simple_type::integer_type));
    IFC4X3_RC2_IfcIntegerCountRateMeasure_type = new type_declaration("IfcIntegerCountRateMeasure", 564, new simple_type(simple_type::integer_type));
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("CYCLONIC");
        items.push_back("GREASE");
        items.push_back("NOTDEFINED");
        items.push_back("OIL");
        items.push_back("PETROL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcInterceptorTypeEnum_type = new enumeration_type("IfcInterceptorTypeEnum", 567, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("EXTERNAL");
        items.push_back("EXTERNAL_EARTH");
        items.push_back("EXTERNAL_FIRE");
        items.push_back("EXTERNAL_WATER");
        items.push_back("INTERNAL");
        items.push_back("NOTDEFINED");
        IFC4X3_RC2_IfcInternalOrExternalEnum_type = new enumeration_type("IfcInternalOrExternalEnum", 569, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ASSETINVENTORY");
        items.push_back("FURNITUREINVENTORY");
        items.push_back("NOTDEFINED");
        items.push_back("SPACEINVENTORY");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcInventoryTypeEnum_type = new enumeration_type("IfcInventoryTypeEnum", 572, items);
    }
    IFC4X3_RC2_IfcIonConcentrationMeasure_type = new type_declaration("IfcIonConcentrationMeasure", 573, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type = new type_declaration("IfcIsothermalMoistureCapacityMeasure", 577, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("DATA");
        items.push_back("NOTDEFINED");
        items.push_back("POWER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcJunctionBoxTypeEnum_type = new enumeration_type("IfcJunctionBoxTypeEnum", 580, items);
    }
    IFC4X3_RC2_IfcKinematicViscosityMeasure_type = new type_declaration("IfcKinematicViscosityMeasure", 583, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("PIECEWISE_BEZIER_KNOTS");
        items.push_back("QUASI_UNIFORM_KNOTS");
        items.push_back("UNIFORM_KNOTS");
        items.push_back("UNSPECIFIED");
        IFC4X3_RC2_IfcKnotType_type = new enumeration_type("IfcKnotType", 584, items);
    }
    IFC4X3_RC2_IfcLabel_type = new type_declaration("IfcLabel", 585, new simple_type(simple_type::string_type));
    {
        std::vector<std::string> items; items.reserve(21);
        items.push_back("ADMINISTRATION");
        items.push_back("CARPENTRY");
        items.push_back("CLEANING");
        items.push_back("CONCRETE");
        items.push_back("DRYWALL");
        items.push_back("ELECTRIC");
        items.push_back("FINISHING");
        items.push_back("FLOORING");
        items.push_back("GENERAL");
        items.push_back("HVAC");
        items.push_back("LANDSCAPING");
        items.push_back("MASONRY");
        items.push_back("NOTDEFINED");
        items.push_back("PAINTING");
        items.push_back("PAVING");
        items.push_back("PLUMBING");
        items.push_back("ROOFING");
        items.push_back("SITEGRADING");
        items.push_back("STEELWORK");
        items.push_back("SURVEYING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcLaborResourceTypeEnum_type = new enumeration_type("IfcLaborResourceTypeEnum", 588, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("COMPACTFLUORESCENT");
        items.push_back("FLUORESCENT");
        items.push_back("HALOGEN");
        items.push_back("HIGHPRESSUREMERCURY");
        items.push_back("HIGHPRESSURESODIUM");
        items.push_back("LED");
        items.push_back("METALHALIDE");
        items.push_back("NOTDEFINED");
        items.push_back("OLED");
        items.push_back("TUNGSTENFILAMENT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcLampTypeEnum_type = new enumeration_type("IfcLampTypeEnum", 592, items);
    }
    IFC4X3_RC2_IfcLanguageId_type = new type_declaration("IfcLanguageId", 593, new named_type(IFC4X3_RC2_IfcIdentifier_type));
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("AXIS1");
        items.push_back("AXIS2");
        items.push_back("AXIS3");
        IFC4X3_RC2_IfcLayerSetDirectionEnum_type = new enumeration_type("IfcLayerSetDirectionEnum", 595, items);
    }
    IFC4X3_RC2_IfcLengthMeasure_type = new type_declaration("IfcLengthMeasure", 596, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("TYPE_A");
        items.push_back("TYPE_B");
        items.push_back("TYPE_C");
        IFC4X3_RC2_IfcLightDistributionCurveEnum_type = new enumeration_type("IfcLightDistributionCurveEnum", 600, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("COMPACTFLUORESCENT");
        items.push_back("FLUORESCENT");
        items.push_back("HIGHPRESSUREMERCURY");
        items.push_back("HIGHPRESSURESODIUM");
        items.push_back("LIGHTEMITTINGDIODE");
        items.push_back("LOWPRESSURESODIUM");
        items.push_back("LOWVOLTAGEHALOGEN");
        items.push_back("MAINVOLTAGEHALOGEN");
        items.push_back("METALHALIDE");
        items.push_back("NOTDEFINED");
        items.push_back("TUNGSTENFILAMENT");
        IFC4X3_RC2_IfcLightEmissionSourceEnum_type = new enumeration_type("IfcLightEmissionSourceEnum", 603, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("DIRECTIONSOURCE");
        items.push_back("NOTDEFINED");
        items.push_back("POINTSOURCE");
        items.push_back("SECURITYLIGHTING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcLightFixtureTypeEnum_type = new enumeration_type("IfcLightFixtureTypeEnum", 606, items);
    }
    IFC4X3_RC2_IfcLinearForceMeasure_type = new type_declaration("IfcLinearForceMeasure", 618, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcLinearMomentMeasure_type = new type_declaration("IfcLinearMomentMeasure", 619, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcLinearStiffnessMeasure_type = new type_declaration("IfcLinearStiffnessMeasure", 624, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcLinearVelocityMeasure_type = new type_declaration("IfcLinearVelocityMeasure", 625, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("HOSEREEL");
        items.push_back("LOADINGARM");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type = new enumeration_type("IfcLiquidTerminalTypeEnum", 630, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("LOAD_CASE");
        items.push_back("LOAD_COMBINATION");
        items.push_back("LOAD_GROUP");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcLoadGroupTypeEnum_type = new enumeration_type("IfcLoadGroupTypeEnum", 631, items);
    }
    IFC4X3_RC2_IfcLogical_type = new type_declaration("IfcLogical", 633, new simple_type(simple_type::logical_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("LOGICALAND");
        items.push_back("LOGICALNOTAND");
        items.push_back("LOGICALNOTOR");
        items.push_back("LOGICALOR");
        items.push_back("LOGICALXOR");
        IFC4X3_RC2_IfcLogicalOperatorEnum_type = new enumeration_type("IfcLogicalOperatorEnum", 634, items);
    }
    IFC4X3_RC2_IfcLuminousFluxMeasure_type = new type_declaration("IfcLuminousFluxMeasure", 637, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type = new type_declaration("IfcLuminousIntensityDistributionMeasure", 638, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcLuminousIntensityMeasure_type = new type_declaration("IfcLuminousIntensityMeasure", 639, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type = new type_declaration("IfcMagneticFluxDensityMeasure", 640, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMagneticFluxMeasure_type = new type_declaration("IfcMagneticFluxMeasure", 641, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(21);
        items.push_back("BARRIERBEACH");
        items.push_back("BREAKWATER");
        items.push_back("CANAL");
        items.push_back("DRYDOCK");
        items.push_back("EMBANKMENT");
        items.push_back("FLOATINGDOCK");
        items.push_back("HYDROLIFT");
        items.push_back("JETTY");
        items.push_back("LAUNCHRECOVERY");
        items.push_back("MARINEDEFENCE");
        items.push_back("NAVIGATIONALCHANNEL");
        items.push_back("NOTDEFINED");
        items.push_back("PORT");
        items.push_back("QUAY");
        items.push_back("SHIPLIFT");
        items.push_back("SHIPLOCK");
        items.push_back("SHIPYARD");
        items.push_back("SLIPWAY");
        items.push_back("USERDEFINED");
        items.push_back("WATERWAY");
        items.push_back("WATERWAYSHIPLIFT");
        IFC4X3_RC2_IfcMarineFacilityTypeEnum_type = new enumeration_type("IfcMarineFacilityTypeEnum", 646, items);
    }
    {
        std::vector<std::string> items; items.reserve(26);
        items.push_back("ABOVEWATERLINE");
        items.push_back("ANCHORAGE");
        items.push_back("APPROACHCHANNEL");
        items.push_back("BELOWWATERLINE");
        items.push_back("BERTHINGSTRUCTURE");
        items.push_back("CHAMBER");
        items.push_back("CILL_LEVEL");
        items.push_back("COPELEVEL");
        items.push_back("CORE");
        items.push_back("CREST");
        items.push_back("GATEHEAD");
        items.push_back("GUDINGSTRUCTURE");
        items.push_back("HIGHWATERLINE");
        items.push_back("LANDFIELD");
        items.push_back("LEEWARDSIDE");
        items.push_back("LOWWATERLINE");
        items.push_back("MANUFACTURING");
        items.push_back("NAVIGATIONALAREA");
        items.push_back("NOTDEFINED");
        items.push_back("PROTECTION");
        items.push_back("SHIPTRANSFER");
        items.push_back("STORAGE");
        items.push_back("USERDEFINED");
        items.push_back("VEHICLESERVICING");
        items.push_back("WATERFIELD");
        items.push_back("WEATHERSIDE");
        IFC4X3_RC2_IfcMarinePartTypeEnum_type = new enumeration_type("IfcMarinePartTypeEnum", 647, items);
    }
    IFC4X3_RC2_IfcMassDensityMeasure_type = new type_declaration("IfcMassDensityMeasure", 648, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMassFlowRateMeasure_type = new type_declaration("IfcMassFlowRateMeasure", 649, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMassMeasure_type = new type_declaration("IfcMassMeasure", 650, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMassPerLengthMeasure_type = new type_declaration("IfcMassPerLengthMeasure", 651, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(17);
        items.push_back("ANCHORBOLT");
        items.push_back("BOLT");
        items.push_back("CHAIN");
        items.push_back("COUPLER");
        items.push_back("DOWEL");
        items.push_back("NAIL");
        items.push_back("NAILPLATE");
        items.push_back("NOTDEFINED");
        items.push_back("RAILFASTENING");
        items.push_back("RAILJOINT");
        items.push_back("RIVET");
        items.push_back("ROPE");
        items.push_back("SCREW");
        items.push_back("SHEARCONNECTOR");
        items.push_back("STAPLE");
        items.push_back("STUDSHEARCONNECTOR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type = new enumeration_type("IfcMechanicalFastenerTypeEnum", 676, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("AIRSTATION");
        items.push_back("FEEDAIRUNIT");
        items.push_back("NOTDEFINED");
        items.push_back("OXYGENGENERATOR");
        items.push_back("OXYGENPLANT");
        items.push_back("USERDEFINED");
        items.push_back("VACUUMSTATION");
        IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type = new enumeration_type("IfcMedicalDeviceTypeEnum", 679, items);
    }
    {
        std::vector<std::string> items; items.reserve(21);
        items.push_back("ARCH_SEGMENT");
        items.push_back("BRACE");
        items.push_back("CHORD");
        items.push_back("COLLAR");
        items.push_back("MEMBER");
        items.push_back("MULLION");
        items.push_back("NOTDEFINED");
        items.push_back("PLATE");
        items.push_back("POST");
        items.push_back("PURLIN");
        items.push_back("RAFTER");
        items.push_back("STAY_CABLE");
        items.push_back("STIFFENING_RIB");
        items.push_back("STRINGER");
        items.push_back("STRUCTURALCABLE");
        items.push_back("STRUT");
        items.push_back("STUD");
        items.push_back("SUSPENDER");
        items.push_back("SUSPENSION_CABLE");
        items.push_back("TIEBAR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcMemberTypeEnum_type = new enumeration_type("IfcMemberTypeEnum", 683, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("ACCESSPOINT");
        items.push_back("BASEBANDUNIT");
        items.push_back("BASETRANSCEIVERSTATION");
        items.push_back("E_UTRAN_NODE_B");
        items.push_back("MASTERUNIT");
        items.push_back("NOTDEFINED");
        items.push_back("REMOTEUNIT");
        items.push_back("REMOTE_RADIO_UNIT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type = new enumeration_type("IfcMobileTelecommunicationsApplianceTypeEnum", 689, items);
    }
    IFC4X3_RC2_IfcModulusOfElasticityMeasure_type = new type_declaration("IfcModulusOfElasticityMeasure", 690, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type = new type_declaration("IfcModulusOfLinearSubgradeReactionMeasure", 691, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type = new type_declaration("IfcModulusOfRotationalSubgradeReactionMeasure", 692, new simple_type(simple_type::real_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type);
        IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type = new select_type("IfcModulusOfRotationalSubgradeReactionSelect", 693, items);
    }
    IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type = new type_declaration("IfcModulusOfSubgradeReactionMeasure", 694, new simple_type(simple_type::real_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type);
        IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type = new select_type("IfcModulusOfSubgradeReactionSelect", 695, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type);
        IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type = new select_type("IfcModulusOfTranslationalSubgradeReactionSelect", 696, items);
    }
    IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type = new type_declaration("IfcMoistureDiffusivityMeasure", 697, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMolecularWeightMeasure_type = new type_declaration("IfcMolecularWeightMeasure", 698, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMomentOfInertiaMeasure_type = new type_declaration("IfcMomentOfInertiaMeasure", 699, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMonetaryMeasure_type = new type_declaration("IfcMonetaryMeasure", 700, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcMonthInYearNumber_type = new type_declaration("IfcMonthInYearNumber", 702, new simple_type(simple_type::integer_type));
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("BOLLARD");
        items.push_back("LINETENSIONER");
        items.push_back("MAGNETICDEVICE");
        items.push_back("MOORINGHOOKS");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("VACUUMDEVICE");
        IFC4X3_RC2_IfcMooringDeviceTypeEnum_type = new enumeration_type("IfcMooringDeviceTypeEnum", 705, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("BELTDRIVE");
        items.push_back("COUPLING");
        items.push_back("DIRECTDRIVE");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcMotorConnectionTypeEnum_type = new enumeration_type("IfcMotorConnectionTypeEnum", 708, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("BEACON");
        items.push_back("BUOY");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcNavigationElementTypeEnum_type = new enumeration_type("IfcNavigationElementTypeEnum", 712, items);
    }
    IFC4X3_RC2_IfcNonNegativeLengthMeasure_type = new type_declaration("IfcNonNegativeLengthMeasure", 713, new named_type(IFC4X3_RC2_IfcLengthMeasure_type));
    {
        std::vector<std::string> items; items.reserve(1);
        items.push_back("NULL");
        IFC4X3_RC2_IfcNullStyle_type = new enumeration_type("IfcNullStyle", 715, items);
    }
    IFC4X3_RC2_IfcNumericMeasure_type = new type_declaration("IfcNumericMeasure", 716, new simple_type(simple_type::number_type));
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("ACTOR");
        items.push_back("CONTROL");
        items.push_back("GROUP");
        items.push_back("NOTDEFINED");
        items.push_back("PROCESS");
        items.push_back("PRODUCT");
        items.push_back("PROJECT");
        items.push_back("RESOURCE");
        IFC4X3_RC2_IfcObjectTypeEnum_type = new enumeration_type("IfcObjectTypeEnum", 723, items);
    }
    {
        std::vector<std::string> items; items.reserve(13);
        items.push_back("CODECOMPLIANCE");
        items.push_back("CODEWAIVER");
        items.push_back("DESIGNINTENT");
        items.push_back("EXTERNAL");
        items.push_back("HEALTHANDSAFETY");
        items.push_back("MERGECONFLICT");
        items.push_back("MODELVIEW");
        items.push_back("NOTDEFINED");
        items.push_back("PARAMETER");
        items.push_back("REQUIREMENT");
        items.push_back("SPECIFICATION");
        items.push_back("TRIGGERCONDITION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcObjectiveEnum_type = new enumeration_type("IfcObjectiveEnum", 720, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("ASSIGNEE");
        items.push_back("ASSIGNOR");
        items.push_back("LESSEE");
        items.push_back("LESSOR");
        items.push_back("LETTINGAGENT");
        items.push_back("NOTDEFINED");
        items.push_back("OWNER");
        items.push_back("TENANT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcOccupantTypeEnum_type = new enumeration_type("IfcOccupantTypeEnum", 725, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("OPENING");
        items.push_back("RECESS");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcOpeningElementTypeEnum_type = new enumeration_type("IfcOpeningElementTypeEnum", 732, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("AUDIOVISUALOUTLET");
        items.push_back("COMMUNICATIONSOUTLET");
        items.push_back("DATAOUTLET");
        items.push_back("NOTDEFINED");
        items.push_back("POWEROUTLET");
        items.push_back("TELEPHONEOUTLET");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcOutletTypeEnum_type = new enumeration_type("IfcOutletTypeEnum", 741, items);
    }
    IFC4X3_RC2_IfcPHMeasure_type = new type_declaration("IfcPHMeasure", 757, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcParameterValue_type = new type_declaration("IfcParameterValue", 744, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type = new enumeration_type("IfcPerformanceHistoryTypeEnum", 750, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("GRILL");
        items.push_back("LOUVER");
        items.push_back("NOTDEFINED");
        items.push_back("SCREEN");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type = new enumeration_type("IfcPermeableCoveringOperationEnum", 751, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ACCESS");
        items.push_back("BUILDING");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("WORK");
        IFC4X3_RC2_IfcPermitTypeEnum_type = new enumeration_type("IfcPermitTypeEnum", 754, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("NOTDEFINED");
        items.push_back("PHYSICAL");
        items.push_back("VIRTUAL");
        IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type = new enumeration_type("IfcPhysicalOrVirtualEnum", 759, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("CAST_IN_PLACE");
        items.push_back("COMPOSITE");
        items.push_back("NOTDEFINED");
        items.push_back("PRECAST_CONCRETE");
        items.push_back("PREFAB_STEEL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcPileConstructionEnum_type = new enumeration_type("IfcPileConstructionEnum", 763, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("BORED");
        items.push_back("COHESION");
        items.push_back("DRIVEN");
        items.push_back("FRICTION");
        items.push_back("JETGROUTING");
        items.push_back("NOTDEFINED");
        items.push_back("SUPPORT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcPileTypeEnum_type = new enumeration_type("IfcPileTypeEnum", 765, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("BEND");
        items.push_back("CONNECTOR");
        items.push_back("ENTRY");
        items.push_back("EXIT");
        items.push_back("JUNCTION");
        items.push_back("NOTDEFINED");
        items.push_back("OBSTRUCTION");
        items.push_back("TRANSITION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcPipeFittingTypeEnum_type = new enumeration_type("IfcPipeFittingTypeEnum", 768, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CULVERT");
        items.push_back("FLEXIBLESEGMENT");
        items.push_back("GUTTER");
        items.push_back("NOTDEFINED");
        items.push_back("RIGIDSEGMENT");
        items.push_back("SPOOL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcPipeSegmentTypeEnum_type = new enumeration_type("IfcPipeSegmentTypeEnum", 771, items);
    }
    IFC4X3_RC2_IfcPlanarForceMeasure_type = new type_declaration("IfcPlanarForceMeasure", 776, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcPlaneAngleMeasure_type = new type_declaration("IfcPlaneAngleMeasure", 778, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("BASE_PLATE");
        items.push_back("COVER_PLATE");
        items.push_back("CURTAIN_PANEL");
        items.push_back("FLANGE_PLATE");
        items.push_back("GUSSET_PLATE");
        items.push_back("NOTDEFINED");
        items.push_back("SHEET");
        items.push_back("SPLICE_PLATE");
        items.push_back("STIFFENER_PLATE");
        items.push_back("USERDEFINED");
        items.push_back("WEB_PLATE");
        IFC4X3_RC2_IfcPlateTypeEnum_type = new enumeration_type("IfcPlateTypeEnum", 783, items);
    }
    IFC4X3_RC2_IfcPositiveInteger_type = new type_declaration("IfcPositiveInteger", 795, new named_type(IFC4X3_RC2_IfcInteger_type));
    IFC4X3_RC2_IfcPositiveLengthMeasure_type = new type_declaration("IfcPositiveLengthMeasure", 796, new named_type(IFC4X3_RC2_IfcLengthMeasure_type));
    IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type = new type_declaration("IfcPositivePlaneAngleMeasure", 797, new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type));
    IFC4X3_RC2_IfcPowerMeasure_type = new type_declaration("IfcPowerMeasure", 800, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("CURVE3D");
        items.push_back("PCURVE_S1");
        items.push_back("PCURVE_S2");
        IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type = new enumeration_type("IfcPreferredSurfaceCurveRepresentation", 807, items);
    }
    IFC4X3_RC2_IfcPresentableText_type = new type_declaration("IfcPresentableText", 808, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcPressureMeasure_type = new type_declaration("IfcPressureMeasure", 815, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("ADVICE_CAUTION");
        items.push_back("ADVICE_NOTE");
        items.push_back("ADVICE_WARNING");
        items.push_back("CALIBRATION");
        items.push_back("DIAGNOSTIC");
        items.push_back("NOTDEFINED");
        items.push_back("SHUTDOWN");
        items.push_back("STARTUP");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcProcedureTypeEnum_type = new enumeration_type("IfcProcedureTypeEnum", 818, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("AREA");
        items.push_back("CURVE");
        IFC4X3_RC2_IfcProfileTypeEnum_type = new enumeration_type("IfcProfileTypeEnum", 828, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CHANGEORDER");
        items.push_back("MAINTENANCEWORKORDER");
        items.push_back("MOVEORDER");
        items.push_back("NOTDEFINED");
        items.push_back("PURCHASEORDER");
        items.push_back("USERDEFINED");
        items.push_back("WORKORDER");
        IFC4X3_RC2_IfcProjectOrderTypeEnum_type = new enumeration_type("IfcProjectOrderTypeEnum", 836, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("PROJECTED_LENGTH");
        items.push_back("TRUE_LENGTH");
        IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type = new enumeration_type("IfcProjectedOrTrueLengthEnum", 831, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("BLISTER");
        items.push_back("DEVIATOR");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcProjectionElementTypeEnum_type = new enumeration_type("IfcProjectionElementTypeEnum", 833, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("NOTDEFINED");
        items.push_back("PSET_OCCURRENCEDRIVEN");
        items.push_back("PSET_PERFORMANCEDRIVEN");
        items.push_back("PSET_TYPEDRIVENONLY");
        items.push_back("PSET_TYPEDRIVENOVERRIDE");
        items.push_back("QTO_OCCURRENCEDRIVEN");
        items.push_back("QTO_TYPEDRIVENONLY");
        items.push_back("QTO_TYPEDRIVENOVERRIDE");
        IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type = new enumeration_type("IfcPropertySetTemplateTypeEnum", 851, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("ELECTROMAGNETIC");
        items.push_back("ELECTRONIC");
        items.push_back("NOTDEFINED");
        items.push_back("RESIDUALCURRENT");
        items.push_back("THERMAL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type = new enumeration_type("IfcProtectiveDeviceTrippingUnitTypeEnum", 859, items);
    }
    {
        std::vector<std::string> items; items.reserve(12);
        items.push_back("ANTI_ARCING_DEVICE");
        items.push_back("CIRCUITBREAKER");
        items.push_back("EARTHINGSWITCH");
        items.push_back("EARTHLEAKAGECIRCUITBREAKER");
        items.push_back("FUSEDISCONNECTOR");
        items.push_back("NOTDEFINED");
        items.push_back("RESIDUALCURRENTCIRCUITBREAKER");
        items.push_back("RESIDUALCURRENTSWITCH");
        items.push_back("SPARKGAP");
        items.push_back("USERDEFINED");
        items.push_back("VARISTOR");
        items.push_back("VOLTAGELIMITER");
        IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type = new enumeration_type("IfcProtectiveDeviceTypeEnum", 861, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("CIRCULATOR");
        items.push_back("ENDSUCTION");
        items.push_back("NOTDEFINED");
        items.push_back("SPLITCASE");
        items.push_back("SUBMERSIBLEPUMP");
        items.push_back("SUMPPUMP");
        items.push_back("USERDEFINED");
        items.push_back("VERTICALINLINE");
        items.push_back("VERTICALTURBINE");
        IFC4X3_RC2_IfcPumpTypeEnum_type = new enumeration_type("IfcPumpTypeEnum", 865, items);
    }
    IFC4X3_RC2_IfcRadioActivityMeasure_type = new type_declaration("IfcRadioActivityMeasure", 873, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("BLADE");
        items.push_back("CHECKRAIL");
        items.push_back("GUARDRAIL");
        items.push_back("NOTDEFINED");
        items.push_back("RACKRAIL");
        items.push_back("RAIL");
        items.push_back("STOCKRAIL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRailTypeEnum_type = new enumeration_type("IfcRailTypeEnum", 879, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BALUSTRADE");
        items.push_back("FENCE");
        items.push_back("GUARDRAIL");
        items.push_back("HANDRAIL");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRailingTypeEnum_type = new enumeration_type("IfcRailingTypeEnum", 877, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("DILATATIONSUPERSTRUCTURE");
        items.push_back("LINESIDESTRUCTURE");
        items.push_back("LINESIDESTRUCTUREPART");
        items.push_back("NOTDEFINED");
        items.push_back("PLAINTRACKSUPESTRUCTURE");
        items.push_back("SUPERSTRUCTURE");
        items.push_back("TRACKSTRUCTURE");
        items.push_back("TRACKSTRUCTUREPART");
        items.push_back("TURNOUTSUPERSTRUCTURE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRailwayPartTypeEnum_type = new enumeration_type("IfcRailwayPartTypeEnum", 881, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("SPIRAL");
        items.push_back("STRAIGHT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRampFlightTypeEnum_type = new enumeration_type("IfcRampFlightTypeEnum", 885, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("HALF_TURN_RAMP");
        items.push_back("NOTDEFINED");
        items.push_back("QUARTER_TURN_RAMP");
        items.push_back("SPIRAL_RAMP");
        items.push_back("STRAIGHT_RUN_RAMP");
        items.push_back("TWO_QUARTER_TURN_RAMP");
        items.push_back("TWO_STRAIGHT_RUN_RAMP");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRampTypeEnum_type = new enumeration_type("IfcRampTypeEnum", 887, items);
    }
    IFC4X3_RC2_IfcRatioMeasure_type = new type_declaration("IfcRatioMeasure", 888, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcReal_type = new type_declaration("IfcReal", 891, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("BY_DAY_COUNT");
        items.push_back("BY_WEEKDAY_COUNT");
        items.push_back("DAILY");
        items.push_back("MONTHLY_BY_DAY_OF_MONTH");
        items.push_back("MONTHLY_BY_POSITION");
        items.push_back("WEEKLY");
        items.push_back("YEARLY_BY_DAY_OF_MONTH");
        items.push_back("YEARLY_BY_POSITION");
        IFC4X3_RC2_IfcRecurrenceTypeEnum_type = new enumeration_type("IfcRecurrenceTypeEnum", 897, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("KILOPOINT");
        items.push_back("MILEPOINT");
        items.push_back("NOTDEFINED");
        items.push_back("REFERENCEMARKER");
        items.push_back("STATION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcReferentTypeEnum_type = new enumeration_type("IfcReferentTypeEnum", 900, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("BLINN");
        items.push_back("FLAT");
        items.push_back("GLASS");
        items.push_back("MATT");
        items.push_back("METAL");
        items.push_back("MIRROR");
        items.push_back("NOTDEFINED");
        items.push_back("PHONG");
        items.push_back("PLASTIC");
        items.push_back("STRAUSS");
        IFC4X3_RC2_IfcReflectanceMethodEnum_type = new enumeration_type("IfcReflectanceMethodEnum", 901, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("DYNAMICALLYCOMPACTED");
        items.push_back("GROUTED");
        items.push_back("NOTDEFINED");
        items.push_back("REPLACED");
        items.push_back("ROLLERCOMPACTED");
        items.push_back("SURCHARGEPRELOADED");
        items.push_back("USERDEFINED");
        items.push_back("VERTICALLYDRAINED");
        IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type = new enumeration_type("IfcReinforcedSoilTypeEnum", 904, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("ANCHORING");
        items.push_back("EDGE");
        items.push_back("LIGATURE");
        items.push_back("MAIN");
        items.push_back("NOTDEFINED");
        items.push_back("PUNCHING");
        items.push_back("RING");
        items.push_back("SHEAR");
        items.push_back("STUD");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcReinforcingBarRoleEnum_type = new enumeration_type("IfcReinforcingBarRoleEnum", 908, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("PLAIN");
        items.push_back("TEXTURED");
        IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type = new enumeration_type("IfcReinforcingBarSurfaceEnum", 909, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("ANCHORING");
        items.push_back("EDGE");
        items.push_back("LIGATURE");
        items.push_back("MAIN");
        items.push_back("NOTDEFINED");
        items.push_back("PUNCHING");
        items.push_back("RING");
        items.push_back("SHEAR");
        items.push_back("SPACEBAR");
        items.push_back("STUD");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcReinforcingBarTypeEnum_type = new enumeration_type("IfcReinforcingBarTypeEnum", 911, items);
    }
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type = new enumeration_type("IfcReinforcingMeshTypeEnum", 916, items);
    }
    {
        std::vector<std::string> items; items.reserve(26);
        items.push_back("BICYCLECROSSING");
        items.push_back("BUS_STOP");
        items.push_back("CARRIAGEWAY");
        items.push_back("CENTRALISLAND");
        items.push_back("CENTRALRESERVE");
        items.push_back("HARDSHOULDER");
        items.push_back("INTERSECTION");
        items.push_back("LAYBY");
        items.push_back("NOTDEFINED");
        items.push_back("PARKINGBAY");
        items.push_back("PASSINGBAY");
        items.push_back("PEDESTRIAN_CROSSING");
        items.push_back("RAILWAYCROSSING");
        items.push_back("REFUGEISLAND");
        items.push_back("ROADSEGMENT");
        items.push_back("ROADSIDE");
        items.push_back("ROADSIDEPART");
        items.push_back("ROADWAYPLATEAU");
        items.push_back("ROUNDABOUT");
        items.push_back("SHOULDER");
        items.push_back("SIDEWALK");
        items.push_back("SOFTSHOULDER");
        items.push_back("TOLLPLAZA");
        items.push_back("TRAFFICISLAND");
        items.push_back("TRAFFICLANE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRoadPartTypeEnum_type = new enumeration_type("IfcRoadPartTypeEnum", 984, items);
    }
    {
        std::vector<std::string> items; items.reserve(23);
        items.push_back("ARCHITECT");
        items.push_back("BUILDINGOPERATOR");
        items.push_back("BUILDINGOWNER");
        items.push_back("CIVILENGINEER");
        items.push_back("CLIENT");
        items.push_back("COMMISSIONINGENGINEER");
        items.push_back("CONSTRUCTIONMANAGER");
        items.push_back("CONSULTANT");
        items.push_back("CONTRACTOR");
        items.push_back("COSTENGINEER");
        items.push_back("ELECTRICALENGINEER");
        items.push_back("ENGINEER");
        items.push_back("FACILITIESMANAGER");
        items.push_back("FIELDCONSTRUCTIONMANAGER");
        items.push_back("MANUFACTURER");
        items.push_back("MECHANICALENGINEER");
        items.push_back("OWNER");
        items.push_back("PROJECTMANAGER");
        items.push_back("RESELLER");
        items.push_back("STRUCTURALENGINEER");
        items.push_back("SUBCONTRACTOR");
        items.push_back("SUPPLIER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRoleEnum_type = new enumeration_type("IfcRoleEnum", 985, items);
    }
    {
        std::vector<std::string> items; items.reserve(15);
        items.push_back("BARREL_ROOF");
        items.push_back("BUTTERFLY_ROOF");
        items.push_back("DOME_ROOF");
        items.push_back("FLAT_ROOF");
        items.push_back("FREEFORM");
        items.push_back("GABLE_ROOF");
        items.push_back("GAMBREL_ROOF");
        items.push_back("HIPPED_GABLE_ROOF");
        items.push_back("HIP_ROOF");
        items.push_back("MANSARD_ROOF");
        items.push_back("NOTDEFINED");
        items.push_back("PAVILION_ROOF");
        items.push_back("RAINBOW_ROOF");
        items.push_back("SHED_ROOF");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcRoofTypeEnum_type = new enumeration_type("IfcRoofTypeEnum", 988, items);
    }
    IFC4X3_RC2_IfcRotationalFrequencyMeasure_type = new type_declaration("IfcRotationalFrequencyMeasure", 990, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcRotationalMassMeasure_type = new type_declaration("IfcRotationalMassMeasure", 991, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcRotationalStiffnessMeasure_type = new type_declaration("IfcRotationalStiffnessMeasure", 992, new simple_type(simple_type::real_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcRotationalStiffnessMeasure_type);
        IFC4X3_RC2_IfcRotationalStiffnessSelect_type = new select_type("IfcRotationalStiffnessSelect", 993, items);
    }
    {
        std::vector<std::string> items; items.reserve(16);
        items.push_back("ATTO");
        items.push_back("CENTI");
        items.push_back("DECA");
        items.push_back("DECI");
        items.push_back("EXA");
        items.push_back("FEMTO");
        items.push_back("GIGA");
        items.push_back("HECTO");
        items.push_back("KILO");
        items.push_back("MEGA");
        items.push_back("MICRO");
        items.push_back("MILLI");
        items.push_back("NANO");
        items.push_back("PETA");
        items.push_back("PICO");
        items.push_back("TERA");
        IFC4X3_RC2_IfcSIPrefix_type = new enumeration_type("IfcSIPrefix", 1036, items);
    }
    {
        std::vector<std::string> items; items.reserve(30);
        items.push_back("AMPERE");
        items.push_back("BECQUEREL");
        items.push_back("CANDELA");
        items.push_back("COULOMB");
        items.push_back("CUBIC_METRE");
        items.push_back("DEGREE_CELSIUS");
        items.push_back("FARAD");
        items.push_back("GRAM");
        items.push_back("GRAY");
        items.push_back("HENRY");
        items.push_back("HERTZ");
        items.push_back("JOULE");
        items.push_back("KELVIN");
        items.push_back("LUMEN");
        items.push_back("LUX");
        items.push_back("METRE");
        items.push_back("MOLE");
        items.push_back("NEWTON");
        items.push_back("OHM");
        items.push_back("PASCAL");
        items.push_back("RADIAN");
        items.push_back("SECOND");
        items.push_back("SIEMENS");
        items.push_back("SIEVERT");
        items.push_back("SQUARE_METRE");
        items.push_back("STERADIAN");
        items.push_back("TESLA");
        items.push_back("VOLT");
        items.push_back("WATT");
        items.push_back("WEBER");
        IFC4X3_RC2_IfcSIUnitName_type = new enumeration_type("IfcSIUnitName", 1039, items);
    }
    {
        std::vector<std::string> items; items.reserve(12);
        items.push_back("BATH");
        items.push_back("BIDET");
        items.push_back("CISTERN");
        items.push_back("NOTDEFINED");
        items.push_back("SANITARYFOUNTAIN");
        items.push_back("SHOWER");
        items.push_back("SINK");
        items.push_back("TOILETPAN");
        items.push_back("URINAL");
        items.push_back("USERDEFINED");
        items.push_back("WASHHANDBASIN");
        items.push_back("WCSEAT");
        IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type = new enumeration_type("IfcSanitaryTerminalTypeEnum", 997, items);
    }
    IFC4X3_RC2_IfcSectionModulusMeasure_type = new type_declaration("IfcSectionModulusMeasure", 1005, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(2);
        items.push_back("TAPERED");
        items.push_back("UNIFORM");
        IFC4X3_RC2_IfcSectionTypeEnum_type = new enumeration_type("IfcSectionTypeEnum", 1008, items);
    }
    IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type = new type_declaration("IfcSectionalAreaIntegralMeasure", 1000, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(34);
        items.push_back("CO2SENSOR");
        items.push_back("CONDUCTANCESENSOR");
        items.push_back("CONTACTSENSOR");
        items.push_back("COSENSOR");
        items.push_back("EARTHQUAKESENSOR");
        items.push_back("FIRESENSOR");
        items.push_back("FLOWSENSOR");
        items.push_back("FOREIGNOBJECTDETECTIONSENSOR");
        items.push_back("FROSTSENSOR");
        items.push_back("GASSENSOR");
        items.push_back("HEATSENSOR");
        items.push_back("HUMIDITYSENSOR");
        items.push_back("IDENTIFIERSENSOR");
        items.push_back("IONCONCENTRATIONSENSOR");
        items.push_back("LEVELSENSOR");
        items.push_back("LIGHTSENSOR");
        items.push_back("MOISTURESENSOR");
        items.push_back("MOVEMENTSENSOR");
        items.push_back("NOTDEFINED");
        items.push_back("OBSTACLESENSOR");
        items.push_back("PHSENSOR");
        items.push_back("PRESSURESENSOR");
        items.push_back("RADIATIONSENSOR");
        items.push_back("RADIOACTIVITYSENSOR");
        items.push_back("RAINSENSOR");
        items.push_back("SMOKESENSOR");
        items.push_back("SNOWDEPTHSENSOR");
        items.push_back("SOUNDSENSOR");
        items.push_back("TEMPERATURESENSOR");
        items.push_back("TRAINSENSOR");
        items.push_back("TURNOUTCLOSURESENSOR");
        items.push_back("USERDEFINED");
        items.push_back("WHEELSENSOR");
        items.push_back("WINDSENSOR");
        IFC4X3_RC2_IfcSensorTypeEnum_type = new enumeration_type("IfcSensorTypeEnum", 1014, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("FINISH_FINISH");
        items.push_back("FINISH_START");
        items.push_back("NOTDEFINED");
        items.push_back("START_FINISH");
        items.push_back("START_START");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSequenceEnum_type = new enumeration_type("IfcSequenceEnum", 1015, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("AWNING");
        items.push_back("JALOUSIE");
        items.push_back("NOTDEFINED");
        items.push_back("SHUTTER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcShadingDeviceTypeEnum_type = new enumeration_type("IfcShadingDeviceTypeEnum", 1019, items);
    }
    IFC4X3_RC2_IfcShearModulusMeasure_type = new type_declaration("IfcShearModulusMeasure", 1023, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("MARKER");
        items.push_back("MIRROR");
        items.push_back("NOTDEFINED");
        items.push_back("PICTORAL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSignTypeEnum_type = new enumeration_type("IfcSignTypeEnum", 1031, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("AUDIO");
        items.push_back("MIXED");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        items.push_back("VISUAL");
        IFC4X3_RC2_IfcSignalTypeEnum_type = new enumeration_type("IfcSignalTypeEnum", 1029, items);
    }
    {
        std::vector<std::string> items; items.reserve(12);
        items.push_back("P_BOUNDEDVALUE");
        items.push_back("P_ENUMERATEDVALUE");
        items.push_back("P_LISTVALUE");
        items.push_back("P_REFERENCEVALUE");
        items.push_back("P_SINGLEVALUE");
        items.push_back("P_TABLEVALUE");
        items.push_back("Q_AREA");
        items.push_back("Q_COUNT");
        items.push_back("Q_LENGTH");
        items.push_back("Q_TIME");
        items.push_back("Q_VOLUME");
        items.push_back("Q_WEIGHT");
        IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type = new enumeration_type("IfcSimplePropertyTemplateTypeEnum", 1034, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("APPROACH_SLAB");
        items.push_back("BASESLAB");
        items.push_back("FLOOR");
        items.push_back("LANDING");
        items.push_back("NOTDEFINED");
        items.push_back("PAVING");
        items.push_back("ROOF");
        items.push_back("SIDEWALK");
        items.push_back("TRACKSLAB");
        items.push_back("USERDEFINED");
        items.push_back("WEARING");
        IFC4X3_RC2_IfcSlabTypeEnum_type = new enumeration_type("IfcSlabTypeEnum", 1045, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("SOLARCOLLECTOR");
        items.push_back("SOLARPANEL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSolarDeviceTypeEnum_type = new enumeration_type("IfcSolarDeviceTypeEnum", 1049, items);
    }
    IFC4X3_RC2_IfcSolidAngleMeasure_type = new type_declaration("IfcSolidAngleMeasure", 1050, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcSoundPowerLevelMeasure_type = new type_declaration("IfcSoundPowerLevelMeasure", 1054, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcSoundPowerMeasure_type = new type_declaration("IfcSoundPowerMeasure", 1055, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcSoundPressureLevelMeasure_type = new type_declaration("IfcSoundPressureLevelMeasure", 1056, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcSoundPressureMeasure_type = new type_declaration("IfcSoundPressureMeasure", 1057, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("CONVECTOR");
        items.push_back("NOTDEFINED");
        items.push_back("RADIATOR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type = new enumeration_type("IfcSpaceHeaterTypeEnum", 1062, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("EXTERNAL");
        items.push_back("GFA");
        items.push_back("INTERNAL");
        items.push_back("NOTDEFINED");
        items.push_back("PARKING");
        items.push_back("SPACE");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSpaceTypeEnum_type = new enumeration_type("IfcSpaceTypeEnum", 1064, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("CONSTRUCTION");
        items.push_back("FIRESAFETY");
        items.push_back("LIGHTING");
        items.push_back("NOTDEFINED");
        items.push_back("OCCUPANCY");
        items.push_back("RESERVATION");
        items.push_back("SECURITY");
        items.push_back("THERMAL");
        items.push_back("TRANSPORT");
        items.push_back("USERDEFINED");
        items.push_back("VENTILATION");
        IFC4X3_RC2_IfcSpatialZoneTypeEnum_type = new enumeration_type("IfcSpatialZoneTypeEnum", 1072, items);
    }
    IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type = new type_declaration("IfcSpecificHeatCapacityMeasure", 1073, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcSpecularExponent_type = new type_declaration("IfcSpecularExponent", 1074, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcSpecularRoughness_type = new type_declaration("IfcSpecularRoughness", 1076, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("BIRDCAGE");
        items.push_back("COWL");
        items.push_back("NOTDEFINED");
        items.push_back("RAINWATERHOPPER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcStackTerminalTypeEnum_type = new enumeration_type("IfcStackTerminalTypeEnum", 1081, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CURVED");
        items.push_back("FREEFORM");
        items.push_back("NOTDEFINED");
        items.push_back("SPIRAL");
        items.push_back("STRAIGHT");
        items.push_back("USERDEFINED");
        items.push_back("WINDER");
        IFC4X3_RC2_IfcStairFlightTypeEnum_type = new enumeration_type("IfcStairFlightTypeEnum", 1085, items);
    }
    {
        std::vector<std::string> items; items.reserve(17);
        items.push_back("CURVED_RUN_STAIR");
        items.push_back("DOUBLE_RETURN_STAIR");
        items.push_back("HALF_TURN_STAIR");
        items.push_back("HALF_WINDING_STAIR");
        items.push_back("LADDER");
        items.push_back("NOTDEFINED");
        items.push_back("QUARTER_TURN_STAIR");
        items.push_back("QUARTER_WINDING_STAIR");
        items.push_back("SPIRAL_STAIR");
        items.push_back("STRAIGHT_RUN_STAIR");
        items.push_back("THREE_QUARTER_TURN_STAIR");
        items.push_back("THREE_QUARTER_WINDING_STAIR");
        items.push_back("TWO_CURVED_RUN_STAIR");
        items.push_back("TWO_QUARTER_TURN_STAIR");
        items.push_back("TWO_QUARTER_WINDING_STAIR");
        items.push_back("TWO_STRAIGHT_RUN_STAIR");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcStairTypeEnum_type = new enumeration_type("IfcStairTypeEnum", 1087, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("LOCKED");
        items.push_back("READONLY");
        items.push_back("READONLYLOCKED");
        items.push_back("READWRITE");
        items.push_back("READWRITELOCKED");
        IFC4X3_RC2_IfcStateEnum_type = new enumeration_type("IfcStateEnum", 1088, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("CONST");
        items.push_back("DISCRETE");
        items.push_back("EQUIDISTANT");
        items.push_back("LINEAR");
        items.push_back("NOTDEFINED");
        items.push_back("PARABOLA");
        items.push_back("POLYGONAL");
        items.push_back("SINUS");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type = new enumeration_type("IfcStructuralCurveActivityTypeEnum", 1096, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CABLE");
        items.push_back("COMPRESSION_MEMBER");
        items.push_back("NOTDEFINED");
        items.push_back("PIN_JOINED_MEMBER");
        items.push_back("RIGID_JOINED_MEMBER");
        items.push_back("TENSION_MEMBER");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type = new enumeration_type("IfcStructuralCurveMemberTypeEnum", 1099, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BILINEAR");
        items.push_back("CONST");
        items.push_back("DISCRETE");
        items.push_back("ISOCONTOUR");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type = new enumeration_type("IfcStructuralSurfaceActivityTypeEnum", 1125, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("BENDING_ELEMENT");
        items.push_back("MEMBRANE_ELEMENT");
        items.push_back("NOTDEFINED");
        items.push_back("SHELL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type = new enumeration_type("IfcStructuralSurfaceMemberTypeEnum", 1128, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("NOTDEFINED");
        items.push_back("PURCHASE");
        items.push_back("USERDEFINED");
        items.push_back("WORK");
        IFC4X3_RC2_IfcSubContractResourceTypeEnum_type = new enumeration_type("IfcSubContractResourceTypeEnum", 1137, items);
    }
    {
        std::vector<std::string> items; items.reserve(13);
        items.push_back("DEFECT");
        items.push_back("HATCHMARKING");
        items.push_back("LINEMARKING");
        items.push_back("MARK");
        items.push_back("NONSKIDSURFACING");
        items.push_back("NOTDEFINED");
        items.push_back("PAVEMENTSURFACEMARKING");
        items.push_back("RUMBLESTRIP");
        items.push_back("SYMBOLMARKING");
        items.push_back("TAG");
        items.push_back("TRANSVERSERUMBLESTRIP");
        items.push_back("TREATMENT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type = new enumeration_type("IfcSurfaceFeatureTypeEnum", 1143, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("BOTH");
        items.push_back("NEGATIVE");
        items.push_back("POSITIVE");
        IFC4X3_RC2_IfcSurfaceSide_type = new enumeration_type("IfcSurfaceSide", 1148, items);
    }
    {
        std::vector<std::string> items; items.reserve(13);
        items.push_back("CONTACTOR");
        items.push_back("DIMMERSWITCH");
        items.push_back("EMERGENCYSTOP");
        items.push_back("KEYPAD");
        items.push_back("MOMENTARYSWITCH");
        items.push_back("NOTDEFINED");
        items.push_back("RELAY");
        items.push_back("SELECTORSWITCH");
        items.push_back("STARTER");
        items.push_back("START_AND_STOP_EQUIPMENT");
        items.push_back("SWITCHDISCONNECTOR");
        items.push_back("TOGGLESWITCH");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type = new enumeration_type("IfcSwitchingDeviceTypeEnum", 1163, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("NOTDEFINED");
        items.push_back("PANEL");
        items.push_back("SUBRACK");
        items.push_back("USERDEFINED");
        items.push_back("WORKSURFACE");
        IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type = new enumeration_type("IfcSystemFurnitureElementTypeEnum", 1167, items);
    }
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("BASIN");
        items.push_back("BREAKPRESSURE");
        items.push_back("EXPANSION");
        items.push_back("FEEDANDEXPANSION");
        items.push_back("NOTDEFINED");
        items.push_back("OILRETENTIONTRAY");
        items.push_back("PRESSUREVESSEL");
        items.push_back("STORAGE");
        items.push_back("USERDEFINED");
        items.push_back("VESSEL");
        IFC4X3_RC2_IfcTankTypeEnum_type = new enumeration_type("IfcTankTypeEnum", 1173, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("ELAPSEDTIME");
        items.push_back("NOTDEFINED");
        items.push_back("WORKTIME");
        IFC4X3_RC2_IfcTaskDurationEnum_type = new enumeration_type("IfcTaskDurationEnum", 1175, items);
    }
    {
        std::vector<std::string> items; items.reserve(14);
        items.push_back("ATTENDANCE");
        items.push_back("CONSTRUCTION");
        items.push_back("DEMOLITION");
        items.push_back("DISMANTLE");
        items.push_back("DISPOSAL");
        items.push_back("INSTALLATION");
        items.push_back("LOGISTIC");
        items.push_back("MAINTENANCE");
        items.push_back("MOVE");
        items.push_back("NOTDEFINED");
        items.push_back("OPERATION");
        items.push_back("REMOVAL");
        items.push_back("RENOVATION");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcTaskTypeEnum_type = new enumeration_type("IfcTaskTypeEnum", 1179, items);
    }
    IFC4X3_RC2_IfcTemperatureGradientMeasure_type = new type_declaration("IfcTemperatureGradientMeasure", 1181, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type = new type_declaration("IfcTemperatureRateOfChangeMeasure", 1182, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("COUPLER");
        items.push_back("FIXED_END");
        items.push_back("NOTDEFINED");
        items.push_back("TENSIONING_END");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcTendonAnchorTypeEnum_type = new enumeration_type("IfcTendonAnchorTypeEnum", 1186, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("COUPLER");
        items.push_back("DIABOLO");
        items.push_back("DUCT");
        items.push_back("GROUTING_DUCT");
        items.push_back("NOTDEFINED");
        items.push_back("TRUMPET");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcTendonConduitTypeEnum_type = new enumeration_type("IfcTendonConduitTypeEnum", 1189, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BAR");
        items.push_back("COATED");
        items.push_back("NOTDEFINED");
        items.push_back("STRAND");
        items.push_back("USERDEFINED");
        items.push_back("WIRE");
        IFC4X3_RC2_IfcTendonTypeEnum_type = new enumeration_type("IfcTendonTypeEnum", 1191, items);
    }
    IFC4X3_RC2_IfcText_type = new type_declaration("IfcText", 1194, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcTextAlignment_type = new type_declaration("IfcTextAlignment", 1195, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcTextDecoration_type = new type_declaration("IfcTextDecoration", 1196, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcTextFontName_type = new type_declaration("IfcTextFontName", 1197, new simple_type(simple_type::string_type));
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("DOWN");
        items.push_back("LEFT");
        items.push_back("RIGHT");
        items.push_back("UP");
        IFC4X3_RC2_IfcTextPath_type = new enumeration_type("IfcTextPath", 1201, items);
    }
    IFC4X3_RC2_IfcTextTransformation_type = new type_declaration("IfcTextTransformation", 1206, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcThermalAdmittanceMeasure_type = new type_declaration("IfcThermalAdmittanceMeasure", 1212, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcThermalConductivityMeasure_type = new type_declaration("IfcThermalConductivityMeasure", 1213, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type = new type_declaration("IfcThermalExpansionCoefficientMeasure", 1214, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcThermalResistanceMeasure_type = new type_declaration("IfcThermalResistanceMeasure", 1215, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcThermalTransmittanceMeasure_type = new type_declaration("IfcThermalTransmittanceMeasure", 1216, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type = new type_declaration("IfcThermodynamicTemperatureMeasure", 1217, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcTime_type = new type_declaration("IfcTime", 1218, new simple_type(simple_type::string_type));
    IFC4X3_RC2_IfcTimeMeasure_type = new type_declaration("IfcTimeMeasure", 1219, new simple_type(simple_type::real_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcDuration_type);
        items.push_back(IFC4X3_RC2_IfcRatioMeasure_type);
        IFC4X3_RC2_IfcTimeOrRatioSelect_type = new select_type("IfcTimeOrRatioSelect", 1220, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CONTINUOUS");
        items.push_back("DISCRETE");
        items.push_back("DISCRETEBINARY");
        items.push_back("NOTDEFINED");
        items.push_back("PIECEWISEBINARY");
        items.push_back("PIECEWISECONSTANT");
        items.push_back("PIECEWISECONTINUOUS");
        IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type = new enumeration_type("IfcTimeSeriesDataTypeEnum", 1223, items);
    }
    IFC4X3_RC2_IfcTimeStamp_type = new type_declaration("IfcTimeStamp", 1225, new simple_type(simple_type::integer_type));
    IFC4X3_RC2_IfcTorqueMeasure_type = new type_declaration("IfcTorqueMeasure", 1229, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(10);
        items.push_back("BLOCKINGDEVICE");
        items.push_back("DERAILER");
        items.push_back("FROG");
        items.push_back("HALF_SET_OF_BLADES");
        items.push_back("NOTDEFINED");
        items.push_back("SLEEPER");
        items.push_back("SPEEDREGULATOR");
        items.push_back("TRACKENDOFALIGNMENT");
        items.push_back("USERDEFINED");
        items.push_back("VEHICLESTOP");
        IFC4X3_RC2_IfcTrackElementTypeEnum_type = new enumeration_type("IfcTrackElementTypeEnum", 1232, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("CHOPPER");
        items.push_back("COMBINED");
        items.push_back("CURRENT");
        items.push_back("FREQUENCY");
        items.push_back("INVERTER");
        items.push_back("NOTDEFINED");
        items.push_back("RECTIFIER");
        items.push_back("USERDEFINED");
        items.push_back("VOLTAGE");
        IFC4X3_RC2_IfcTransformerTypeEnum_type = new enumeration_type("IfcTransformerTypeEnum", 1235, items);
    }
    {
        std::vector<std::string> items; items.reserve(4);
        items.push_back("CONTINUOUS");
        items.push_back("CONTSAMEGRADIENT");
        items.push_back("CONTSAMEGRADIENTSAMECURVATURE");
        items.push_back("DISCONTINUOUS");
        IFC4X3_RC2_IfcTransitionCode_type = new enumeration_type("IfcTransitionCode", 1236, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BIQUADRATICPARABOLA");
        items.push_back("BLOSSCURVE");
        items.push_back("CLOTHOIDCURVE");
        items.push_back("COSINECURVE");
        items.push_back("CUBICPARABOLA");
        items.push_back("SINECURVE");
        IFC4X3_RC2_IfcTransitionCurveType_type = new enumeration_type("IfcTransitionCurveType", 1238, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcLinearStiffnessMeasure_type);
        IFC4X3_RC2_IfcTranslationalStiffnessSelect_type = new select_type("IfcTranslationalStiffnessSelect", 1239, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("CRANEWAY");
        items.push_back("ELEVATOR");
        items.push_back("ESCALATOR");
        items.push_back("LIFTINGGEAR");
        items.push_back("MOVINGWALKWAY");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type = new enumeration_type("IfcTransportElementFixedTypeEnum", 1241, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("CARGO");
        items.push_back("NOTDEFINED");
        items.push_back("ROLLINGSTOCK");
        items.push_back("USERDEFINED");
        items.push_back("VEHICLE");
        items.push_back("VEHICLEAIR");
        items.push_back("VEHICLEMARINE");
        items.push_back("VEHICLETRACKED");
        items.push_back("VEHICLEWHEELED");
        IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type = new enumeration_type("IfcTransportElementNonFixedTypeEnum", 1242, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type);
        IFC4X3_RC2_IfcTransportElementTypeSelect_type = new select_type("IfcTransportElementTypeSelect", 1244, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("CARTESIAN");
        items.push_back("PARAMETER");
        items.push_back("UNSPECIFIED");
        IFC4X3_RC2_IfcTrimmingPreference_type = new enumeration_type("IfcTrimmingPreference", 1249, items);
    }
    {
        std::vector<std::string> items; items.reserve(3);
        items.push_back("FINNED");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcTubeBundleTypeEnum_type = new enumeration_type("IfcTubeBundleTypeEnum", 1254, items);
    }
    IFC4X3_RC2_IfcURIReference_type = new type_declaration("IfcURIReference", 1268, new simple_type(simple_type::string_type));
    {
        std::vector<std::string> items; items.reserve(30);
        items.push_back("ABSORBEDDOSEUNIT");
        items.push_back("AMOUNTOFSUBSTANCEUNIT");
        items.push_back("AREAUNIT");
        items.push_back("DOSEEQUIVALENTUNIT");
        items.push_back("ELECTRICCAPACITANCEUNIT");
        items.push_back("ELECTRICCHARGEUNIT");
        items.push_back("ELECTRICCONDUCTANCEUNIT");
        items.push_back("ELECTRICCURRENTUNIT");
        items.push_back("ELECTRICRESISTANCEUNIT");
        items.push_back("ELECTRICVOLTAGEUNIT");
        items.push_back("ENERGYUNIT");
        items.push_back("FORCEUNIT");
        items.push_back("FREQUENCYUNIT");
        items.push_back("ILLUMINANCEUNIT");
        items.push_back("INDUCTANCEUNIT");
        items.push_back("LENGTHUNIT");
        items.push_back("LUMINOUSFLUXUNIT");
        items.push_back("LUMINOUSINTENSITYUNIT");
        items.push_back("MAGNETICFLUXDENSITYUNIT");
        items.push_back("MAGNETICFLUXUNIT");
        items.push_back("MASSUNIT");
        items.push_back("PLANEANGLEUNIT");
        items.push_back("POWERUNIT");
        items.push_back("PRESSUREUNIT");
        items.push_back("RADIOACTIVITYUNIT");
        items.push_back("SOLIDANGLEUNIT");
        items.push_back("THERMODYNAMICTEMPERATUREUNIT");
        items.push_back("TIMEUNIT");
        items.push_back("USERDEFINED");
        items.push_back("VOLUMEUNIT");
        IFC4X3_RC2_IfcUnitEnum_type = new enumeration_type("IfcUnitEnum", 1267, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("ALARMPANEL");
        items.push_back("COMBINED");
        items.push_back("CONTROLPANEL");
        items.push_back("GASDETECTIONPANEL");
        items.push_back("HUMIDISTAT");
        items.push_back("INDICATORPANEL");
        items.push_back("MIMICPANEL");
        items.push_back("NOTDEFINED");
        items.push_back("THERMOSTAT");
        items.push_back("USERDEFINED");
        items.push_back("WEATHERSTATION");
        IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type = new enumeration_type("IfcUnitaryControlElementTypeEnum", 1262, items);
    }
    {
        std::vector<std::string> items; items.reserve(7);
        items.push_back("AIRCONDITIONINGUNIT");
        items.push_back("AIRHANDLER");
        items.push_back("DEHUMIDIFIER");
        items.push_back("NOTDEFINED");
        items.push_back("ROOFTOPUNIT");
        items.push_back("SPLITSYSTEM");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type = new enumeration_type("IfcUnitaryEquipmentTypeEnum", 1265, items);
    }
    {
        std::vector<std::string> items; items.reserve(23);
        items.push_back("AIRRELEASE");
        items.push_back("ANTIVACUUM");
        items.push_back("CHANGEOVER");
        items.push_back("CHECK");
        items.push_back("COMMISSIONING");
        items.push_back("DIVERTING");
        items.push_back("DOUBLECHECK");
        items.push_back("DOUBLEREGULATING");
        items.push_back("DRAWOFFCOCK");
        items.push_back("FAUCET");
        items.push_back("FLUSHING");
        items.push_back("GASCOCK");
        items.push_back("GASTAP");
        items.push_back("ISOLATING");
        items.push_back("MIXING");
        items.push_back("NOTDEFINED");
        items.push_back("PRESSUREREDUCING");
        items.push_back("PRESSURERELIEF");
        items.push_back("REGULATING");
        items.push_back("SAFETYCUTOFF");
        items.push_back("STEAMTRAP");
        items.push_back("STOPCOCK");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcValveTypeEnum_type = new enumeration_type("IfcValveTypeEnum", 1273, items);
    }
    IFC4X3_RC2_IfcVaporPermeabilityMeasure_type = new type_declaration("IfcVaporPermeabilityMeasure", 1274, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("AXIAL_YIELD");
        items.push_back("BENDING_YIELD");
        items.push_back("FRICTION");
        items.push_back("NOTDEFINED");
        items.push_back("RUBBER");
        items.push_back("SHEAR_YIELD");
        items.push_back("USERDEFINED");
        items.push_back("VISCOUS");
        IFC4X3_RC2_IfcVibrationDamperTypeEnum_type = new enumeration_type("IfcVibrationDamperTypeEnum", 1282, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("BASE");
        items.push_back("COMPRESSION");
        items.push_back("NOTDEFINED");
        items.push_back("SPRING");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type = new enumeration_type("IfcVibrationIsolatorTypeEnum", 1285, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("CHAMFER");
        items.push_back("CUTOUT");
        items.push_back("EDGE");
        items.push_back("HOLE");
        items.push_back("MITER");
        items.push_back("NOTCH");
        items.push_back("NOTDEFINED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type = new enumeration_type("IfcVoidingFeatureTypeEnum", 1289, items);
    }
    IFC4X3_RC2_IfcVolumeMeasure_type = new type_declaration("IfcVolumeMeasure", 1291, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type = new type_declaration("IfcVolumetricFlowRateMeasure", 1292, new simple_type(simple_type::real_type));
    {
        std::vector<std::string> items; items.reserve(13);
        items.push_back("ELEMENTEDWALL");
        items.push_back("MOVABLE");
        items.push_back("NOTDEFINED");
        items.push_back("PARAPET");
        items.push_back("PARTITIONING");
        items.push_back("PLUMBINGWALL");
        items.push_back("POLYGONAL");
        items.push_back("RETAININGWALL");
        items.push_back("SHEAR");
        items.push_back("SOLIDWALL");
        items.push_back("STANDARD");
        items.push_back("USERDEFINED");
        items.push_back("WAVEWALL");
        IFC4X3_RC2_IfcWallTypeEnum_type = new enumeration_type("IfcWallTypeEnum", 1297, items);
    }
    IFC4X3_RC2_IfcWarpingConstantMeasure_type = new type_declaration("IfcWarpingConstantMeasure", 1298, new simple_type(simple_type::real_type));
    IFC4X3_RC2_IfcWarpingMomentMeasure_type = new type_declaration("IfcWarpingMomentMeasure", 1299, new simple_type(simple_type::real_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcWarpingMomentMeasure_type);
        IFC4X3_RC2_IfcWarpingStiffnessSelect_type = new select_type("IfcWarpingStiffnessSelect", 1300, items);
    }
    {
        std::vector<std::string> items; items.reserve(9);
        items.push_back("FLOORTRAP");
        items.push_back("FLOORWASTE");
        items.push_back("GULLYSUMP");
        items.push_back("GULLYTRAP");
        items.push_back("NOTDEFINED");
        items.push_back("ROOFDRAIN");
        items.push_back("USERDEFINED");
        items.push_back("WASTEDISPOSALUNIT");
        items.push_back("WASTETRAP");
        IFC4X3_RC2_IfcWasteTerminalTypeEnum_type = new enumeration_type("IfcWasteTerminalTypeEnum", 1303, items);
    }
    {
        std::vector<std::string> items; items.reserve(14);
        items.push_back("BOTTOMHUNG");
        items.push_back("FIXEDCASEMENT");
        items.push_back("NOTDEFINED");
        items.push_back("OTHEROPERATION");
        items.push_back("PIVOTHORIZONTAL");
        items.push_back("PIVOTVERTICAL");
        items.push_back("REMOVABLECASEMENT");
        items.push_back("SIDEHUNGLEFTHAND");
        items.push_back("SIDEHUNGRIGHTHAND");
        items.push_back("SLIDINGHORIZONTAL");
        items.push_back("SLIDINGVERTICAL");
        items.push_back("TILTANDTURNLEFTHAND");
        items.push_back("TILTANDTURNRIGHTHAND");
        items.push_back("TOPHUNG");
        IFC4X3_RC2_IfcWindowPanelOperationEnum_type = new enumeration_type("IfcWindowPanelOperationEnum", 1307, items);
    }
    {
        std::vector<std::string> items; items.reserve(6);
        items.push_back("BOTTOM");
        items.push_back("LEFT");
        items.push_back("MIDDLE");
        items.push_back("NOTDEFINED");
        items.push_back("RIGHT");
        items.push_back("TOP");
        IFC4X3_RC2_IfcWindowPanelPositionEnum_type = new enumeration_type("IfcWindowPanelPositionEnum", 1308, items);
    }
    {
        std::vector<std::string> items; items.reserve(8);
        items.push_back("ALUMINIUM");
        items.push_back("ALUMINIUM_WOOD");
        items.push_back("HIGH_GRADE_STEEL");
        items.push_back("NOTDEFINED");
        items.push_back("OTHER_CONSTRUCTION");
        items.push_back("PLASTIC");
        items.push_back("STEEL");
        items.push_back("WOOD");
        IFC4X3_RC2_IfcWindowStyleConstructionEnum_type = new enumeration_type("IfcWindowStyleConstructionEnum", 1312, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("DOUBLE_PANEL_HORIZONTAL");
        items.push_back("DOUBLE_PANEL_VERTICAL");
        items.push_back("NOTDEFINED");
        items.push_back("SINGLE_PANEL");
        items.push_back("TRIPLE_PANEL_BOTTOM");
        items.push_back("TRIPLE_PANEL_HORIZONTAL");
        items.push_back("TRIPLE_PANEL_LEFT");
        items.push_back("TRIPLE_PANEL_RIGHT");
        items.push_back("TRIPLE_PANEL_TOP");
        items.push_back("TRIPLE_PANEL_VERTICAL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcWindowStyleOperationEnum_type = new enumeration_type("IfcWindowStyleOperationEnum", 1313, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("LIGHTDOME");
        items.push_back("NOTDEFINED");
        items.push_back("SKYLIGHT");
        items.push_back("USERDEFINED");
        items.push_back("WINDOW");
        IFC4X3_RC2_IfcWindowTypeEnum_type = new enumeration_type("IfcWindowTypeEnum", 1315, items);
    }
    {
        std::vector<std::string> items; items.reserve(11);
        items.push_back("DOUBLE_PANEL_HORIZONTAL");
        items.push_back("DOUBLE_PANEL_VERTICAL");
        items.push_back("NOTDEFINED");
        items.push_back("SINGLE_PANEL");
        items.push_back("TRIPLE_PANEL_BOTTOM");
        items.push_back("TRIPLE_PANEL_HORIZONTAL");
        items.push_back("TRIPLE_PANEL_LEFT");
        items.push_back("TRIPLE_PANEL_RIGHT");
        items.push_back("TRIPLE_PANEL_TOP");
        items.push_back("TRIPLE_PANEL_VERTICAL");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcWindowTypePartitioningEnum_type = new enumeration_type("IfcWindowTypePartitioningEnum", 1316, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("FIRSTSHIFT");
        items.push_back("NOTDEFINED");
        items.push_back("SECONDSHIFT");
        items.push_back("THIRDSHIFT");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcWorkCalendarTypeEnum_type = new enumeration_type("IfcWorkCalendarTypeEnum", 1318, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ACTUAL");
        items.push_back("BASELINE");
        items.push_back("NOTDEFINED");
        items.push_back("PLANNED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcWorkPlanTypeEnum_type = new enumeration_type("IfcWorkPlanTypeEnum", 1321, items);
    }
    {
        std::vector<std::string> items; items.reserve(5);
        items.push_back("ACTUAL");
        items.push_back("BASELINE");
        items.push_back("NOTDEFINED");
        items.push_back("PLANNED");
        items.push_back("USERDEFINED");
        IFC4X3_RC2_IfcWorkScheduleTypeEnum_type = new enumeration_type("IfcWorkScheduleTypeEnum", 1323, items);
    }
    IFC4X3_RC2_IfcActorRole_type = new entity("IfcActorRole", false, 7, 0);
    IFC4X3_RC2_IfcAddress_type = new entity("IfcAddress", true, 12, 0);
    IFC4X3_RC2_IfcAlignmentParameterSegment_type = new entity("IfcAlignmentParameterSegment", true, 40, 0);
    IFC4X3_RC2_IfcAlignmentVerticalSegment_type = new entity("IfcAlignmentVerticalSegment", false, 44, IFC4X3_RC2_IfcAlignmentParameterSegment_type);
    IFC4X3_RC2_IfcApplication_type = new entity("IfcApplication", false, 53, 0);
    IFC4X3_RC2_IfcAppliedValue_type = new entity("IfcAppliedValue", false, 54, 0);
    IFC4X3_RC2_IfcApproval_type = new entity("IfcApproval", false, 56, 0);
    IFC4X3_RC2_IfcBoundaryCondition_type = new entity("IfcBoundaryCondition", true, 100, 0);
    IFC4X3_RC2_IfcBoundaryEdgeCondition_type = new entity("IfcBoundaryEdgeCondition", false, 102, IFC4X3_RC2_IfcBoundaryCondition_type);
    IFC4X3_RC2_IfcBoundaryFaceCondition_type = new entity("IfcBoundaryFaceCondition", false, 103, IFC4X3_RC2_IfcBoundaryCondition_type);
    IFC4X3_RC2_IfcBoundaryNodeCondition_type = new entity("IfcBoundaryNodeCondition", false, 104, IFC4X3_RC2_IfcBoundaryCondition_type);
    IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type = new entity("IfcBoundaryNodeConditionWarping", false, 105, IFC4X3_RC2_IfcBoundaryNodeCondition_type);
    IFC4X3_RC2_IfcConnectionGeometry_type = new entity("IfcConnectionGeometry", true, 216, 0);
    IFC4X3_RC2_IfcConnectionPointGeometry_type = new entity("IfcConnectionPointGeometry", false, 218, IFC4X3_RC2_IfcConnectionGeometry_type);
    IFC4X3_RC2_IfcConnectionSurfaceGeometry_type = new entity("IfcConnectionSurfaceGeometry", false, 219, IFC4X3_RC2_IfcConnectionGeometry_type);
    IFC4X3_RC2_IfcConnectionVolumeGeometry_type = new entity("IfcConnectionVolumeGeometry", false, 221, IFC4X3_RC2_IfcConnectionGeometry_type);
    IFC4X3_RC2_IfcConstraint_type = new entity("IfcConstraint", true, 222, 0);
    IFC4X3_RC2_IfcCoordinateOperation_type = new entity("IfcCoordinateOperation", true, 253, 0);
    IFC4X3_RC2_IfcCoordinateReferenceSystem_type = new entity("IfcCoordinateReferenceSystem", true, 254, 0);
    IFC4X3_RC2_IfcCostValue_type = new entity("IfcCostValue", false, 260, IFC4X3_RC2_IfcAppliedValue_type);
    IFC4X3_RC2_IfcDerivedUnit_type = new entity("IfcDerivedUnit", false, 309, 0);
    IFC4X3_RC2_IfcDerivedUnitElement_type = new entity("IfcDerivedUnitElement", false, 310, 0);
    IFC4X3_RC2_IfcDimensionalExponents_type = new entity("IfcDimensionalExponents", false, 313, 0);
    IFC4X3_RC2_IfcExternalInformation_type = new entity("IfcExternalInformation", true, 436, 0);
    IFC4X3_RC2_IfcExternalReference_type = new entity("IfcExternalReference", true, 440, 0);
    IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type = new entity("IfcExternallyDefinedHatchStyle", false, 437, IFC4X3_RC2_IfcExternalReference_type);
    IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type = new entity("IfcExternallyDefinedSurfaceStyle", false, 438, IFC4X3_RC2_IfcExternalReference_type);
    IFC4X3_RC2_IfcExternallyDefinedTextFont_type = new entity("IfcExternallyDefinedTextFont", false, 439, IFC4X3_RC2_IfcExternalReference_type);
    IFC4X3_RC2_IfcGridAxis_type = new entity("IfcGridAxis", false, 533, 0);
    IFC4X3_RC2_IfcIrregularTimeSeriesValue_type = new entity("IfcIrregularTimeSeriesValue", false, 575, 0);
    IFC4X3_RC2_IfcLibraryInformation_type = new entity("IfcLibraryInformation", false, 597, IFC4X3_RC2_IfcExternalInformation_type);
    IFC4X3_RC2_IfcLibraryReference_type = new entity("IfcLibraryReference", false, 598, IFC4X3_RC2_IfcExternalReference_type);
    IFC4X3_RC2_IfcLightDistributionData_type = new entity("IfcLightDistributionData", false, 601, 0);
    IFC4X3_RC2_IfcLightIntensityDistribution_type = new entity("IfcLightIntensityDistribution", false, 607, 0);
    IFC4X3_RC2_IfcMapConversion_type = new entity("IfcMapConversion", false, 643, IFC4X3_RC2_IfcCoordinateOperation_type);
    IFC4X3_RC2_IfcMaterialClassificationRelationship_type = new entity("IfcMaterialClassificationRelationship", false, 653, 0);
    IFC4X3_RC2_IfcMaterialDefinition_type = new entity("IfcMaterialDefinition", true, 656, 0);
    IFC4X3_RC2_IfcMaterialLayer_type = new entity("IfcMaterialLayer", false, 658, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialLayerSet_type = new entity("IfcMaterialLayerSet", false, 659, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialLayerWithOffsets_type = new entity("IfcMaterialLayerWithOffsets", false, 661, IFC4X3_RC2_IfcMaterialLayer_type);
    IFC4X3_RC2_IfcMaterialList_type = new entity("IfcMaterialList", false, 662, 0);
    IFC4X3_RC2_IfcMaterialProfile_type = new entity("IfcMaterialProfile", false, 663, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialProfileSet_type = new entity("IfcMaterialProfileSet", false, 664, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialProfileWithOffsets_type = new entity("IfcMaterialProfileWithOffsets", false, 667, IFC4X3_RC2_IfcMaterialProfile_type);
    IFC4X3_RC2_IfcMaterialUsageDefinition_type = new entity("IfcMaterialUsageDefinition", true, 671, 0);
    IFC4X3_RC2_IfcMeasureWithUnit_type = new entity("IfcMeasureWithUnit", false, 673, 0);
    IFC4X3_RC2_IfcMetric_type = new entity("IfcMetric", false, 684, IFC4X3_RC2_IfcConstraint_type);
    IFC4X3_RC2_IfcMonetaryUnit_type = new entity("IfcMonetaryUnit", false, 701, 0);
    IFC4X3_RC2_IfcNamedUnit_type = new entity("IfcNamedUnit", true, 709, 0);
    IFC4X3_RC2_IfcObjectPlacement_type = new entity("IfcObjectPlacement", true, 721, 0);
    IFC4X3_RC2_IfcObjective_type = new entity("IfcObjective", false, 719, IFC4X3_RC2_IfcConstraint_type);
    IFC4X3_RC2_IfcOrganization_type = new entity("IfcOrganization", false, 735, 0);
    IFC4X3_RC2_IfcOwnerHistory_type = new entity("IfcOwnerHistory", false, 742, 0);
    IFC4X3_RC2_IfcPerson_type = new entity("IfcPerson", false, 755, 0);
    IFC4X3_RC2_IfcPersonAndOrganization_type = new entity("IfcPersonAndOrganization", false, 756, 0);
    IFC4X3_RC2_IfcPhysicalQuantity_type = new entity("IfcPhysicalQuantity", true, 760, 0);
    IFC4X3_RC2_IfcPhysicalSimpleQuantity_type = new entity("IfcPhysicalSimpleQuantity", true, 761, IFC4X3_RC2_IfcPhysicalQuantity_type);
    IFC4X3_RC2_IfcPostalAddress_type = new entity("IfcPostalAddress", false, 799, IFC4X3_RC2_IfcAddress_type);
    IFC4X3_RC2_IfcPresentationItem_type = new entity("IfcPresentationItem", true, 809, 0);
    IFC4X3_RC2_IfcPresentationLayerAssignment_type = new entity("IfcPresentationLayerAssignment", false, 810, 0);
    IFC4X3_RC2_IfcPresentationLayerWithStyle_type = new entity("IfcPresentationLayerWithStyle", false, 811, IFC4X3_RC2_IfcPresentationLayerAssignment_type);
    IFC4X3_RC2_IfcPresentationStyle_type = new entity("IfcPresentationStyle", true, 812, 0);
    IFC4X3_RC2_IfcPresentationStyleAssignment_type = new entity("IfcPresentationStyleAssignment", false, 813, 0);
    IFC4X3_RC2_IfcProductRepresentation_type = new entity("IfcProductRepresentation", true, 823, 0);
    IFC4X3_RC2_IfcProfileDef_type = new entity("IfcProfileDef", false, 826, 0);
    IFC4X3_RC2_IfcProjectedCRS_type = new entity("IfcProjectedCRS", false, 830, IFC4X3_RC2_IfcCoordinateReferenceSystem_type);
    IFC4X3_RC2_IfcPropertyAbstraction_type = new entity("IfcPropertyAbstraction", true, 838, 0);
    IFC4X3_RC2_IfcPropertyEnumeration_type = new entity("IfcPropertyEnumeration", false, 843, IFC4X3_RC2_IfcPropertyAbstraction_type);
    IFC4X3_RC2_IfcQuantityArea_type = new entity("IfcQuantityArea", false, 866, IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    IFC4X3_RC2_IfcQuantityCount_type = new entity("IfcQuantityCount", false, 867, IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    IFC4X3_RC2_IfcQuantityLength_type = new entity("IfcQuantityLength", false, 868, IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    IFC4X3_RC2_IfcQuantityTime_type = new entity("IfcQuantityTime", false, 870, IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    IFC4X3_RC2_IfcQuantityVolume_type = new entity("IfcQuantityVolume", false, 871, IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    IFC4X3_RC2_IfcQuantityWeight_type = new entity("IfcQuantityWeight", false, 872, IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    IFC4X3_RC2_IfcRecurrencePattern_type = new entity("IfcRecurrencePattern", false, 896, 0);
    IFC4X3_RC2_IfcReference_type = new entity("IfcReference", false, 898, 0);
    IFC4X3_RC2_IfcRepresentation_type = new entity("IfcRepresentation", true, 968, 0);
    IFC4X3_RC2_IfcRepresentationContext_type = new entity("IfcRepresentationContext", true, 969, 0);
    IFC4X3_RC2_IfcRepresentationItem_type = new entity("IfcRepresentationItem", true, 970, 0);
    IFC4X3_RC2_IfcRepresentationMap_type = new entity("IfcRepresentationMap", false, 971, 0);
    IFC4X3_RC2_IfcResourceLevelRelationship_type = new entity("IfcResourceLevelRelationship", true, 975, 0);
    IFC4X3_RC2_IfcRoot_type = new entity("IfcRoot", true, 989, 0);
    IFC4X3_RC2_IfcSIUnit_type = new entity("IfcSIUnit", false, 1038, IFC4X3_RC2_IfcNamedUnit_type);
    IFC4X3_RC2_IfcSchedulingTime_type = new entity("IfcSchedulingTime", true, 998, 0);
    IFC4X3_RC2_IfcShapeAspect_type = new entity("IfcShapeAspect", false, 1020, 0);
    IFC4X3_RC2_IfcShapeModel_type = new entity("IfcShapeModel", true, 1021, IFC4X3_RC2_IfcRepresentation_type);
    IFC4X3_RC2_IfcShapeRepresentation_type = new entity("IfcShapeRepresentation", false, 1022, IFC4X3_RC2_IfcShapeModel_type);
    IFC4X3_RC2_IfcStructuralConnectionCondition_type = new entity("IfcStructuralConnectionCondition", true, 1094, 0);
    IFC4X3_RC2_IfcStructuralLoad_type = new entity("IfcStructuralLoad", true, 1104, 0);
    IFC4X3_RC2_IfcStructuralLoadConfiguration_type = new entity("IfcStructuralLoadConfiguration", false, 1106, IFC4X3_RC2_IfcStructuralLoad_type);
    IFC4X3_RC2_IfcStructuralLoadOrResult_type = new entity("IfcStructuralLoadOrResult", true, 1109, IFC4X3_RC2_IfcStructuralLoad_type);
    IFC4X3_RC2_IfcStructuralLoadStatic_type = new entity("IfcStructuralLoadStatic", true, 1115, IFC4X3_RC2_IfcStructuralLoadOrResult_type);
    IFC4X3_RC2_IfcStructuralLoadTemperature_type = new entity("IfcStructuralLoadTemperature", false, 1116, IFC4X3_RC2_IfcStructuralLoadStatic_type);
    IFC4X3_RC2_IfcStyleModel_type = new entity("IfcStyleModel", true, 1134, IFC4X3_RC2_IfcRepresentation_type);
    IFC4X3_RC2_IfcStyledItem_type = new entity("IfcStyledItem", false, 1132, IFC4X3_RC2_IfcRepresentationItem_type);
    IFC4X3_RC2_IfcStyledRepresentation_type = new entity("IfcStyledRepresentation", false, 1133, IFC4X3_RC2_IfcStyleModel_type);
    IFC4X3_RC2_IfcSurfaceReinforcementArea_type = new entity("IfcSurfaceReinforcementArea", false, 1147, IFC4X3_RC2_IfcStructuralLoadOrResult_type);
    IFC4X3_RC2_IfcSurfaceStyle_type = new entity("IfcSurfaceStyle", false, 1149, IFC4X3_RC2_IfcPresentationStyle_type);
    IFC4X3_RC2_IfcSurfaceStyleLighting_type = new entity("IfcSurfaceStyleLighting", false, 1151, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcSurfaceStyleRefraction_type = new entity("IfcSurfaceStyleRefraction", false, 1152, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcSurfaceStyleShading_type = new entity("IfcSurfaceStyleShading", false, 1154, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcSurfaceStyleWithTextures_type = new entity("IfcSurfaceStyleWithTextures", false, 1155, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcSurfaceTexture_type = new entity("IfcSurfaceTexture", true, 1156, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcTable_type = new entity("IfcTable", false, 1168, 0);
    IFC4X3_RC2_IfcTableColumn_type = new entity("IfcTableColumn", false, 1169, 0);
    IFC4X3_RC2_IfcTableRow_type = new entity("IfcTableRow", false, 1170, 0);
    IFC4X3_RC2_IfcTaskTime_type = new entity("IfcTaskTime", false, 1176, IFC4X3_RC2_IfcSchedulingTime_type);
    IFC4X3_RC2_IfcTaskTimeRecurring_type = new entity("IfcTaskTimeRecurring", false, 1177, IFC4X3_RC2_IfcTaskTime_type);
    IFC4X3_RC2_IfcTelecomAddress_type = new entity("IfcTelecomAddress", false, 1180, IFC4X3_RC2_IfcAddress_type);
    IFC4X3_RC2_IfcTextStyle_type = new entity("IfcTextStyle", false, 1202, IFC4X3_RC2_IfcPresentationStyle_type);
    IFC4X3_RC2_IfcTextStyleForDefinedFont_type = new entity("IfcTextStyleForDefinedFont", false, 1204, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcTextStyleTextModel_type = new entity("IfcTextStyleTextModel", false, 1205, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcTextureCoordinate_type = new entity("IfcTextureCoordinate", true, 1207, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcTextureCoordinateGenerator_type = new entity("IfcTextureCoordinateGenerator", false, 1208, IFC4X3_RC2_IfcTextureCoordinate_type);
    IFC4X3_RC2_IfcTextureMap_type = new entity("IfcTextureMap", false, 1209, IFC4X3_RC2_IfcTextureCoordinate_type);
    IFC4X3_RC2_IfcTextureVertex_type = new entity("IfcTextureVertex", false, 1210, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcTextureVertexList_type = new entity("IfcTextureVertexList", false, 1211, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcTimePeriod_type = new entity("IfcTimePeriod", false, 1221, 0);
    IFC4X3_RC2_IfcTimeSeries_type = new entity("IfcTimeSeries", true, 1222, 0);
    IFC4X3_RC2_IfcTimeSeriesValue_type = new entity("IfcTimeSeriesValue", false, 1224, 0);
    IFC4X3_RC2_IfcTopologicalRepresentationItem_type = new entity("IfcTopologicalRepresentationItem", true, 1226, IFC4X3_RC2_IfcRepresentationItem_type);
    IFC4X3_RC2_IfcTopologyRepresentation_type = new entity("IfcTopologyRepresentation", false, 1227, IFC4X3_RC2_IfcShapeModel_type);
    IFC4X3_RC2_IfcUnitAssignment_type = new entity("IfcUnitAssignment", false, 1266, 0);
    IFC4X3_RC2_IfcVertex_type = new entity("IfcVertex", false, 1277, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcVertexPoint_type = new entity("IfcVertexPoint", false, 1279, IFC4X3_RC2_IfcVertex_type);
    IFC4X3_RC2_IfcVirtualGridIntersection_type = new entity("IfcVirtualGridIntersection", false, 1287, 0);
    IFC4X3_RC2_IfcWorkTime_type = new entity("IfcWorkTime", false, 1324, IFC4X3_RC2_IfcSchedulingTime_type);
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcOrganization_type);
        items.push_back(IFC4X3_RC2_IfcPerson_type);
        items.push_back(IFC4X3_RC2_IfcPersonAndOrganization_type);
        IFC4X3_RC2_IfcActorSelect_type = new select_type("IfcActorSelect", 8, items);
    }
    IFC4X3_RC2_IfcArcIndex_type = new type_declaration("IfcArcIndex", 61, new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcPositiveInteger_type)));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPlaneAngleMeasure_type);
        IFC4X3_RC2_IfcBendingParameterSelect_type = new select_type("IfcBendingParameterSelect", 86, items);
    }
    IFC4X3_RC2_IfcBoxAlignment_type = new type_declaration("IfcBoxAlignment", 109, new named_type(IFC4X3_RC2_IfcLabel_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcParameterValue_type);
        IFC4X3_RC2_IfcCurveMeasureSelect_type = new select_type("IfcCurveMeasureSelect", 285, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(71);
        items.push_back(IFC4X3_RC2_IfcAbsorbedDoseMeasure_type);
        items.push_back(IFC4X3_RC2_IfcAccelerationMeasure_type);
        items.push_back(IFC4X3_RC2_IfcAngularVelocityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcAreaDensityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type);
        items.push_back(IFC4X3_RC2_IfcCurvatureMeasure_type);
        items.push_back(IFC4X3_RC2_IfcDoseEquivalentMeasure_type);
        items.push_back(IFC4X3_RC2_IfcDynamicViscosityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcElectricCapacitanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcElectricChargeMeasure_type);
        items.push_back(IFC4X3_RC2_IfcElectricConductanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcElectricResistanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcElectricVoltageMeasure_type);
        items.push_back(IFC4X3_RC2_IfcEnergyMeasure_type);
        items.push_back(IFC4X3_RC2_IfcForceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcFrequencyMeasure_type);
        items.push_back(IFC4X3_RC2_IfcHeatFluxDensityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcHeatingValueMeasure_type);
        items.push_back(IFC4X3_RC2_IfcIlluminanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcInductanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcIntegerCountRateMeasure_type);
        items.push_back(IFC4X3_RC2_IfcIonConcentrationMeasure_type);
        items.push_back(IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcKinematicViscosityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLinearForceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLinearMomentMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLinearStiffnessMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLinearVelocityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLuminousFluxMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMagneticFluxMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMassDensityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMassFlowRateMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMassPerLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfElasticityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type);
        items.push_back(IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMolecularWeightMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMomentOfInertiaMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMonetaryMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPHMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPlanarForceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPowerMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPressureMeasure_type);
        items.push_back(IFC4X3_RC2_IfcRadioActivityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcRotationalFrequencyMeasure_type);
        items.push_back(IFC4X3_RC2_IfcRotationalMassMeasure_type);
        items.push_back(IFC4X3_RC2_IfcRotationalStiffnessMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSectionModulusMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type);
        items.push_back(IFC4X3_RC2_IfcShearModulusMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSoundPowerLevelMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSoundPowerMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSoundPressureLevelMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSoundPressureMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcTemperatureGradientMeasure_type);
        items.push_back(IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type);
        items.push_back(IFC4X3_RC2_IfcThermalAdmittanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcThermalConductivityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type);
        items.push_back(IFC4X3_RC2_IfcThermalResistanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcThermalTransmittanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcTorqueMeasure_type);
        items.push_back(IFC4X3_RC2_IfcVaporPermeabilityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type);
        items.push_back(IFC4X3_RC2_IfcWarpingConstantMeasure_type);
        items.push_back(IFC4X3_RC2_IfcWarpingMomentMeasure_type);
        IFC4X3_RC2_IfcDerivedMeasureValue_type = new select_type("IfcDerivedMeasureValue", 307, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(5);
        items.push_back(IFC4X3_RC2_IfcBridgePartTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcMarinePartTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcRailwayPartTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcRoadPartTypeEnum_type);
        IFC4X3_RC2_IfcFacilityPartTypeSelect_type = new select_type("IfcFacilityPartTypeSelect", 457, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcVibrationDamperTypeEnum_type);
        items.push_back(IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type);
        IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type = new select_type("IfcImpactProtectionDeviceTypeSelect", 554, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcRepresentation_type);
        items.push_back(IFC4X3_RC2_IfcRepresentationItem_type);
        IFC4X3_RC2_IfcLayeredItem_type = new select_type("IfcLayeredItem", 594, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcLibraryInformation_type);
        items.push_back(IFC4X3_RC2_IfcLibraryReference_type);
        IFC4X3_RC2_IfcLibrarySelect_type = new select_type("IfcLibrarySelect", 599, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcExternalReference_type);
        items.push_back(IFC4X3_RC2_IfcLightIntensityDistribution_type);
        IFC4X3_RC2_IfcLightDistributionDataSourceSelect_type = new select_type("IfcLightDistributionDataSourceSelect", 602, items);
    }
    IFC4X3_RC2_IfcLineIndex_type = new type_declaration("IfcLineIndex", 626, new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcPositiveInteger_type)));
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcMaterialDefinition_type);
        items.push_back(IFC4X3_RC2_IfcMaterialList_type);
        items.push_back(IFC4X3_RC2_IfcMaterialUsageDefinition_type);
        IFC4X3_RC2_IfcMaterialSelect_type = new select_type("IfcMaterialSelect", 670, items);
    }
    IFC4X3_RC2_IfcNormalisedRatioMeasure_type = new type_declaration("IfcNormalisedRatioMeasure", 714, new named_type(IFC4X3_RC2_IfcRatioMeasure_type));
    {
        std::vector<const declaration*> items; items.reserve(9);
        items.push_back(IFC4X3_RC2_IfcAddress_type);
        items.push_back(IFC4X3_RC2_IfcAppliedValue_type);
        items.push_back(IFC4X3_RC2_IfcExternalReference_type);
        items.push_back(IFC4X3_RC2_IfcMaterialDefinition_type);
        items.push_back(IFC4X3_RC2_IfcOrganization_type);
        items.push_back(IFC4X3_RC2_IfcPerson_type);
        items.push_back(IFC4X3_RC2_IfcPersonAndOrganization_type);
        items.push_back(IFC4X3_RC2_IfcTable_type);
        items.push_back(IFC4X3_RC2_IfcTimeSeries_type);
        IFC4X3_RC2_IfcObjectReferenceSelect_type = new select_type("IfcObjectReferenceSelect", 722, items);
    }
    IFC4X3_RC2_IfcPositiveRatioMeasure_type = new type_declaration("IfcPositiveRatioMeasure", 798, new named_type(IFC4X3_RC2_IfcRatioMeasure_type));
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcArcIndex_type);
        items.push_back(IFC4X3_RC2_IfcLineIndex_type);
        IFC4X3_RC2_IfcSegmentIndexSelect_type = new select_type("IfcSegmentIndexSelect", 1011, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(14);
        items.push_back(IFC4X3_RC2_IfcBinary_type);
        items.push_back(IFC4X3_RC2_IfcBoolean_type);
        items.push_back(IFC4X3_RC2_IfcDate_type);
        items.push_back(IFC4X3_RC2_IfcDateTime_type);
        items.push_back(IFC4X3_RC2_IfcDuration_type);
        items.push_back(IFC4X3_RC2_IfcIdentifier_type);
        items.push_back(IFC4X3_RC2_IfcInteger_type);
        items.push_back(IFC4X3_RC2_IfcLabel_type);
        items.push_back(IFC4X3_RC2_IfcLogical_type);
        items.push_back(IFC4X3_RC2_IfcPositiveInteger_type);
        items.push_back(IFC4X3_RC2_IfcReal_type);
        items.push_back(IFC4X3_RC2_IfcText_type);
        items.push_back(IFC4X3_RC2_IfcTime_type);
        items.push_back(IFC4X3_RC2_IfcTimeStamp_type);
        IFC4X3_RC2_IfcSimpleValue_type = new select_type("IfcSimpleValue", 1035, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(6);
        items.push_back(IFC4X3_RC2_IfcDescriptiveMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcNormalisedRatioMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPositiveLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPositiveRatioMeasure_type);
        items.push_back(IFC4X3_RC2_IfcRatioMeasure_type);
        IFC4X3_RC2_IfcSizeSelect_type = new select_type("IfcSizeSelect", 1040, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcSpecularExponent_type);
        items.push_back(IFC4X3_RC2_IfcSpecularRoughness_type);
        IFC4X3_RC2_IfcSpecularHighlightSelect_type = new select_type("IfcSpecularHighlightSelect", 1075, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcPresentationStyle_type);
        items.push_back(IFC4X3_RC2_IfcPresentationStyleAssignment_type);
        IFC4X3_RC2_IfcStyleAssignmentSelect_type = new select_type("IfcStyleAssignmentSelect", 1131, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(5);
        items.push_back(IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type);
        items.push_back(IFC4X3_RC2_IfcSurfaceStyleLighting_type);
        items.push_back(IFC4X3_RC2_IfcSurfaceStyleRefraction_type);
        items.push_back(IFC4X3_RC2_IfcSurfaceStyleShading_type);
        items.push_back(IFC4X3_RC2_IfcSurfaceStyleWithTextures_type);
        IFC4X3_RC2_IfcSurfaceStyleElementSelect_type = new select_type("IfcSurfaceStyleElementSelect", 1150, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcDerivedUnit_type);
        items.push_back(IFC4X3_RC2_IfcMonetaryUnit_type);
        items.push_back(IFC4X3_RC2_IfcNamedUnit_type);
        IFC4X3_RC2_IfcUnit_type = new select_type("IfcUnit", 1259, items);
    }
    IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type = new entity("IfcAlignment2DVerSegCircularArc", false, 30, IFC4X3_RC2_IfcAlignmentVerticalSegment_type);
    IFC4X3_RC2_IfcAlignment2DVerSegLine_type = new entity("IfcAlignment2DVerSegLine", false, 31, IFC4X3_RC2_IfcAlignmentVerticalSegment_type);
    IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type = new entity("IfcAlignment2DVerSegParabolicArc", false, 32, IFC4X3_RC2_IfcAlignmentVerticalSegment_type);
    IFC4X3_RC2_IfcAlignmentCantSegment_type = new entity("IfcAlignmentCantSegment", false, 34, IFC4X3_RC2_IfcAlignmentParameterSegment_type);
    IFC4X3_RC2_IfcAlignmentHorizontalSegment_type = new entity("IfcAlignmentHorizontalSegment", false, 38, IFC4X3_RC2_IfcAlignmentParameterSegment_type);
    IFC4X3_RC2_IfcApprovalRelationship_type = new entity("IfcApprovalRelationship", false, 57, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcArbitraryClosedProfileDef_type = new entity("IfcArbitraryClosedProfileDef", false, 58, IFC4X3_RC2_IfcProfileDef_type);
    IFC4X3_RC2_IfcArbitraryOpenProfileDef_type = new entity("IfcArbitraryOpenProfileDef", false, 59, IFC4X3_RC2_IfcProfileDef_type);
    IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type = new entity("IfcArbitraryProfileDefWithVoids", false, 60, IFC4X3_RC2_IfcArbitraryClosedProfileDef_type);
    IFC4X3_RC2_IfcBlobTexture_type = new entity("IfcBlobTexture", false, 88, IFC4X3_RC2_IfcSurfaceTexture_type);
    IFC4X3_RC2_IfcCenterLineProfileDef_type = new entity("IfcCenterLineProfileDef", false, 163, IFC4X3_RC2_IfcArbitraryOpenProfileDef_type);
    IFC4X3_RC2_IfcClassification_type = new entity("IfcClassification", false, 177, IFC4X3_RC2_IfcExternalInformation_type);
    IFC4X3_RC2_IfcClassificationReference_type = new entity("IfcClassificationReference", false, 178, IFC4X3_RC2_IfcExternalReference_type);
    IFC4X3_RC2_IfcColourRgbList_type = new entity("IfcColourRgbList", false, 189, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcColourSpecification_type = new entity("IfcColourSpecification", true, 190, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcCompositeProfileDef_type = new entity("IfcCompositeProfileDef", false, 205, IFC4X3_RC2_IfcProfileDef_type);
    IFC4X3_RC2_IfcConnectedFaceSet_type = new entity("IfcConnectedFaceSet", false, 214, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcConnectionCurveGeometry_type = new entity("IfcConnectionCurveGeometry", false, 215, IFC4X3_RC2_IfcConnectionGeometry_type);
    IFC4X3_RC2_IfcConnectionPointEccentricity_type = new entity("IfcConnectionPointEccentricity", false, 217, IFC4X3_RC2_IfcConnectionPointGeometry_type);
    IFC4X3_RC2_IfcContextDependentUnit_type = new entity("IfcContextDependentUnit", false, 237, IFC4X3_RC2_IfcNamedUnit_type);
    IFC4X3_RC2_IfcConversionBasedUnit_type = new entity("IfcConversionBasedUnit", false, 242, IFC4X3_RC2_IfcNamedUnit_type);
    IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type = new entity("IfcConversionBasedUnitWithOffset", false, 243, IFC4X3_RC2_IfcConversionBasedUnit_type);
    IFC4X3_RC2_IfcCurrencyRelationship_type = new entity("IfcCurrencyRelationship", false, 275, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcCurveStyle_type = new entity("IfcCurveStyle", false, 290, IFC4X3_RC2_IfcPresentationStyle_type);
    IFC4X3_RC2_IfcCurveStyleFont_type = new entity("IfcCurveStyleFont", false, 291, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcCurveStyleFontAndScaling_type = new entity("IfcCurveStyleFontAndScaling", false, 292, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcCurveStyleFontPattern_type = new entity("IfcCurveStyleFontPattern", false, 293, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcDerivedProfileDef_type = new entity("IfcDerivedProfileDef", false, 308, IFC4X3_RC2_IfcProfileDef_type);
    IFC4X3_RC2_IfcDocumentInformation_type = new entity("IfcDocumentInformation", false, 340, IFC4X3_RC2_IfcExternalInformation_type);
    IFC4X3_RC2_IfcDocumentInformationRelationship_type = new entity("IfcDocumentInformationRelationship", false, 341, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcDocumentReference_type = new entity("IfcDocumentReference", false, 342, IFC4X3_RC2_IfcExternalReference_type);
    IFC4X3_RC2_IfcEdge_type = new entity("IfcEdge", false, 376, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcEdgeCurve_type = new entity("IfcEdgeCurve", false, 377, IFC4X3_RC2_IfcEdge_type);
    IFC4X3_RC2_IfcEventTime_type = new entity("IfcEventTime", false, 431, IFC4X3_RC2_IfcSchedulingTime_type);
    IFC4X3_RC2_IfcExtendedProperties_type = new entity("IfcExtendedProperties", true, 435, IFC4X3_RC2_IfcPropertyAbstraction_type);
    IFC4X3_RC2_IfcExternalReferenceRelationship_type = new entity("IfcExternalReferenceRelationship", false, 441, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcFace_type = new entity("IfcFace", false, 447, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcFaceBound_type = new entity("IfcFaceBound", false, 449, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcFaceOuterBound_type = new entity("IfcFaceOuterBound", false, 450, IFC4X3_RC2_IfcFaceBound_type);
    IFC4X3_RC2_IfcFaceSurface_type = new entity("IfcFaceSurface", false, 451, IFC4X3_RC2_IfcFace_type);
    IFC4X3_RC2_IfcFailureConnectionCondition_type = new entity("IfcFailureConnectionCondition", false, 459, IFC4X3_RC2_IfcStructuralConnectionCondition_type);
    IFC4X3_RC2_IfcFillAreaStyle_type = new entity("IfcFillAreaStyle", false, 469, IFC4X3_RC2_IfcPresentationStyle_type);
    IFC4X3_RC2_IfcGeometricRepresentationContext_type = new entity("IfcGeometricRepresentationContext", false, 519, IFC4X3_RC2_IfcRepresentationContext_type);
    IFC4X3_RC2_IfcGeometricRepresentationItem_type = new entity("IfcGeometricRepresentationItem", true, 520, IFC4X3_RC2_IfcRepresentationItem_type);
    IFC4X3_RC2_IfcGeometricRepresentationSubContext_type = new entity("IfcGeometricRepresentationSubContext", false, 521, IFC4X3_RC2_IfcGeometricRepresentationContext_type);
    IFC4X3_RC2_IfcGeometricSet_type = new entity("IfcGeometricSet", false, 522, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcGridPlacement_type = new entity("IfcGridPlacement", false, 534, IFC4X3_RC2_IfcObjectPlacement_type);
    IFC4X3_RC2_IfcHalfSpaceSolid_type = new entity("IfcHalfSpaceSolid", false, 538, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcImageTexture_type = new entity("IfcImageTexture", false, 550, IFC4X3_RC2_IfcSurfaceTexture_type);
    IFC4X3_RC2_IfcIndexedColourMap_type = new entity("IfcIndexedColourMap", false, 556, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcIndexedTextureMap_type = new entity("IfcIndexedTextureMap", true, 560, IFC4X3_RC2_IfcTextureCoordinate_type);
    IFC4X3_RC2_IfcIndexedTriangleTextureMap_type = new entity("IfcIndexedTriangleTextureMap", false, 561, IFC4X3_RC2_IfcIndexedTextureMap_type);
    IFC4X3_RC2_IfcIrregularTimeSeries_type = new entity("IfcIrregularTimeSeries", false, 574, IFC4X3_RC2_IfcTimeSeries_type);
    IFC4X3_RC2_IfcLagTime_type = new entity("IfcLagTime", false, 589, IFC4X3_RC2_IfcSchedulingTime_type);
    IFC4X3_RC2_IfcLightSource_type = new entity("IfcLightSource", true, 608, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcLightSourceAmbient_type = new entity("IfcLightSourceAmbient", false, 609, IFC4X3_RC2_IfcLightSource_type);
    IFC4X3_RC2_IfcLightSourceDirectional_type = new entity("IfcLightSourceDirectional", false, 610, IFC4X3_RC2_IfcLightSource_type);
    IFC4X3_RC2_IfcLightSourceGoniometric_type = new entity("IfcLightSourceGoniometric", false, 611, IFC4X3_RC2_IfcLightSource_type);
    IFC4X3_RC2_IfcLightSourcePositional_type = new entity("IfcLightSourcePositional", false, 612, IFC4X3_RC2_IfcLightSource_type);
    IFC4X3_RC2_IfcLightSourceSpot_type = new entity("IfcLightSourceSpot", false, 613, IFC4X3_RC2_IfcLightSourcePositional_type);
    IFC4X3_RC2_IfcLinearAxisWithInclination_type = new entity("IfcLinearAxisWithInclination", false, 616, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcLinearPlacement_type = new entity("IfcLinearPlacement", false, 620, IFC4X3_RC2_IfcObjectPlacement_type);
    IFC4X3_RC2_IfcLinearPlacementWithInclination_type = new entity("IfcLinearPlacementWithInclination", false, 621, IFC4X3_RC2_IfcLinearPlacement_type);
    IFC4X3_RC2_IfcLinearSpanPlacement_type = new entity("IfcLinearSpanPlacement", false, 623, IFC4X3_RC2_IfcLinearPlacement_type);
    IFC4X3_RC2_IfcLocalPlacement_type = new entity("IfcLocalPlacement", false, 632, IFC4X3_RC2_IfcObjectPlacement_type);
    IFC4X3_RC2_IfcLoop_type = new entity("IfcLoop", false, 635, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcMappedItem_type = new entity("IfcMappedItem", false, 644, IFC4X3_RC2_IfcRepresentationItem_type);
    IFC4X3_RC2_IfcMaterial_type = new entity("IfcMaterial", false, 652, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialConstituent_type = new entity("IfcMaterialConstituent", false, 654, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialConstituentSet_type = new entity("IfcMaterialConstituentSet", false, 655, IFC4X3_RC2_IfcMaterialDefinition_type);
    IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type = new entity("IfcMaterialDefinitionRepresentation", false, 657, IFC4X3_RC2_IfcProductRepresentation_type);
    IFC4X3_RC2_IfcMaterialLayerSetUsage_type = new entity("IfcMaterialLayerSetUsage", false, 660, IFC4X3_RC2_IfcMaterialUsageDefinition_type);
    IFC4X3_RC2_IfcMaterialProfileSetUsage_type = new entity("IfcMaterialProfileSetUsage", false, 665, IFC4X3_RC2_IfcMaterialUsageDefinition_type);
    IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type = new entity("IfcMaterialProfileSetUsageTapering", false, 666, IFC4X3_RC2_IfcMaterialProfileSetUsage_type);
    IFC4X3_RC2_IfcMaterialProperties_type = new entity("IfcMaterialProperties", false, 668, IFC4X3_RC2_IfcExtendedProperties_type);
    IFC4X3_RC2_IfcMaterialRelationship_type = new entity("IfcMaterialRelationship", false, 669, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcMirroredProfileDef_type = new entity("IfcMirroredProfileDef", false, 686, IFC4X3_RC2_IfcDerivedProfileDef_type);
    IFC4X3_RC2_IfcObjectDefinition_type = new entity("IfcObjectDefinition", true, 718, IFC4X3_RC2_IfcRoot_type);
    IFC4X3_RC2_IfcOpenCrossProfileDef_type = new entity("IfcOpenCrossProfileDef", false, 730, IFC4X3_RC2_IfcProfileDef_type);
    IFC4X3_RC2_IfcOpenShell_type = new entity("IfcOpenShell", false, 734, IFC4X3_RC2_IfcConnectedFaceSet_type);
    IFC4X3_RC2_IfcOrganizationRelationship_type = new entity("IfcOrganizationRelationship", false, 736, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcOrientedEdge_type = new entity("IfcOrientedEdge", false, 737, IFC4X3_RC2_IfcEdge_type);
    IFC4X3_RC2_IfcParameterizedProfileDef_type = new entity("IfcParameterizedProfileDef", true, 743, IFC4X3_RC2_IfcProfileDef_type);
    IFC4X3_RC2_IfcPath_type = new entity("IfcPath", false, 745, IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    IFC4X3_RC2_IfcPhysicalComplexQuantity_type = new entity("IfcPhysicalComplexQuantity", false, 758, IFC4X3_RC2_IfcPhysicalQuantity_type);
    IFC4X3_RC2_IfcPixelTexture_type = new entity("IfcPixelTexture", false, 772, IFC4X3_RC2_IfcSurfaceTexture_type);
    IFC4X3_RC2_IfcPlacement_type = new entity("IfcPlacement", true, 773, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcPlanarExtent_type = new entity("IfcPlanarExtent", false, 775, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcPoint_type = new entity("IfcPoint", true, 784, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcPointByDistanceExpression_type = new entity("IfcPointByDistanceExpression", false, 785, IFC4X3_RC2_IfcPoint_type);
    IFC4X3_RC2_IfcPointOnCurve_type = new entity("IfcPointOnCurve", false, 786, IFC4X3_RC2_IfcPoint_type);
    IFC4X3_RC2_IfcPointOnSurface_type = new entity("IfcPointOnSurface", false, 787, IFC4X3_RC2_IfcPoint_type);
    IFC4X3_RC2_IfcPolyLoop_type = new entity("IfcPolyLoop", false, 792, IFC4X3_RC2_IfcLoop_type);
    IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type = new entity("IfcPolygonalBoundedHalfSpace", false, 789, IFC4X3_RC2_IfcHalfSpaceSolid_type);
    IFC4X3_RC2_IfcPreDefinedItem_type = new entity("IfcPreDefinedItem", true, 803, IFC4X3_RC2_IfcPresentationItem_type);
    IFC4X3_RC2_IfcPreDefinedProperties_type = new entity("IfcPreDefinedProperties", true, 804, IFC4X3_RC2_IfcPropertyAbstraction_type);
    IFC4X3_RC2_IfcPreDefinedTextFont_type = new entity("IfcPreDefinedTextFont", true, 806, IFC4X3_RC2_IfcPreDefinedItem_type);
    IFC4X3_RC2_IfcProductDefinitionShape_type = new entity("IfcProductDefinitionShape", false, 822, IFC4X3_RC2_IfcProductRepresentation_type);
    IFC4X3_RC2_IfcProfileProperties_type = new entity("IfcProfileProperties", false, 827, IFC4X3_RC2_IfcExtendedProperties_type);
    IFC4X3_RC2_IfcProperty_type = new entity("IfcProperty", true, 837, IFC4X3_RC2_IfcPropertyAbstraction_type);
    IFC4X3_RC2_IfcPropertyDefinition_type = new entity("IfcPropertyDefinition", true, 840, IFC4X3_RC2_IfcRoot_type);
    IFC4X3_RC2_IfcPropertyDependencyRelationship_type = new entity("IfcPropertyDependencyRelationship", false, 841, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcPropertySetDefinition_type = new entity("IfcPropertySetDefinition", true, 847, IFC4X3_RC2_IfcPropertyDefinition_type);
    IFC4X3_RC2_IfcPropertyTemplateDefinition_type = new entity("IfcPropertyTemplateDefinition", true, 855, IFC4X3_RC2_IfcPropertyDefinition_type);
    IFC4X3_RC2_IfcQuantitySet_type = new entity("IfcQuantitySet", true, 869, IFC4X3_RC2_IfcPropertySetDefinition_type);
    IFC4X3_RC2_IfcRectangleProfileDef_type = new entity("IfcRectangleProfileDef", false, 893, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcRegularTimeSeries_type = new entity("IfcRegularTimeSeries", false, 902, IFC4X3_RC2_IfcTimeSeries_type);
    IFC4X3_RC2_IfcReinforcementBarProperties_type = new entity("IfcReinforcementBarProperties", false, 905, IFC4X3_RC2_IfcPreDefinedProperties_type);
    IFC4X3_RC2_IfcRelationship_type = new entity("IfcRelationship", true, 934, IFC4X3_RC2_IfcRoot_type);
    IFC4X3_RC2_IfcResourceApprovalRelationship_type = new entity("IfcResourceApprovalRelationship", false, 973, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcResourceConstraintRelationship_type = new entity("IfcResourceConstraintRelationship", false, 974, IFC4X3_RC2_IfcResourceLevelRelationship_type);
    IFC4X3_RC2_IfcResourceTime_type = new entity("IfcResourceTime", false, 978, IFC4X3_RC2_IfcSchedulingTime_type);
    IFC4X3_RC2_IfcRoundedRectangleProfileDef_type = new entity("IfcRoundedRectangleProfileDef", false, 994, IFC4X3_RC2_IfcRectangleProfileDef_type);
    IFC4X3_RC2_IfcSectionProperties_type = new entity("IfcSectionProperties", false, 1006, IFC4X3_RC2_IfcPreDefinedProperties_type);
    IFC4X3_RC2_IfcSectionReinforcementProperties_type = new entity("IfcSectionReinforcementProperties", false, 1007, IFC4X3_RC2_IfcPreDefinedProperties_type);
    IFC4X3_RC2_IfcSectionedSpine_type = new entity("IfcSectionedSpine", false, 1003, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcSegment_type = new entity("IfcSegment", true, 1009, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcShellBasedSurfaceModel_type = new entity("IfcShellBasedSurfaceModel", false, 1025, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcSimpleProperty_type = new entity("IfcSimpleProperty", true, 1032, IFC4X3_RC2_IfcProperty_type);
    IFC4X3_RC2_IfcSlippageConnectionCondition_type = new entity("IfcSlippageConnectionCondition", false, 1046, IFC4X3_RC2_IfcStructuralConnectionCondition_type);
    IFC4X3_RC2_IfcSolidModel_type = new entity("IfcSolidModel", true, 1051, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcStructuralLoadLinearForce_type = new entity("IfcStructuralLoadLinearForce", false, 1108, IFC4X3_RC2_IfcStructuralLoadStatic_type);
    IFC4X3_RC2_IfcStructuralLoadPlanarForce_type = new entity("IfcStructuralLoadPlanarForce", false, 1110, IFC4X3_RC2_IfcStructuralLoadStatic_type);
    IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type = new entity("IfcStructuralLoadSingleDisplacement", false, 1111, IFC4X3_RC2_IfcStructuralLoadStatic_type);
    IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type = new entity("IfcStructuralLoadSingleDisplacementDistortion", false, 1112, IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type);
    IFC4X3_RC2_IfcStructuralLoadSingleForce_type = new entity("IfcStructuralLoadSingleForce", false, 1113, IFC4X3_RC2_IfcStructuralLoadStatic_type);
    IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type = new entity("IfcStructuralLoadSingleForceWarping", false, 1114, IFC4X3_RC2_IfcStructuralLoadSingleForce_type);
    IFC4X3_RC2_IfcSubedge_type = new entity("IfcSubedge", false, 1138, IFC4X3_RC2_IfcEdge_type);
    IFC4X3_RC2_IfcSurface_type = new entity("IfcSurface", true, 1139, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcSurfaceStyleRendering_type = new entity("IfcSurfaceStyleRendering", false, 1153, IFC4X3_RC2_IfcSurfaceStyleShading_type);
    IFC4X3_RC2_IfcSweptAreaSolid_type = new entity("IfcSweptAreaSolid", true, 1157, IFC4X3_RC2_IfcSolidModel_type);
    IFC4X3_RC2_IfcSweptDiskSolid_type = new entity("IfcSweptDiskSolid", false, 1158, IFC4X3_RC2_IfcSolidModel_type);
    IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type = new entity("IfcSweptDiskSolidPolygonal", false, 1159, IFC4X3_RC2_IfcSweptDiskSolid_type);
    IFC4X3_RC2_IfcSweptSurface_type = new entity("IfcSweptSurface", true, 1160, IFC4X3_RC2_IfcSurface_type);
    IFC4X3_RC2_IfcTShapeProfileDef_type = new entity("IfcTShapeProfileDef", false, 1251, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcTessellatedItem_type = new entity("IfcTessellatedItem", true, 1193, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcTextLiteral_type = new entity("IfcTextLiteral", false, 1199, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcTextLiteralWithExtent_type = new entity("IfcTextLiteralWithExtent", false, 1200, IFC4X3_RC2_IfcTextLiteral_type);
    IFC4X3_RC2_IfcTextStyleFontModel_type = new entity("IfcTextStyleFontModel", false, 1203, IFC4X3_RC2_IfcPreDefinedTextFont_type);
    IFC4X3_RC2_IfcTrapeziumProfileDef_type = new entity("IfcTrapeziumProfileDef", false, 1245, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcTypeObject_type = new entity("IfcTypeObject", false, 1255, IFC4X3_RC2_IfcObjectDefinition_type);
    IFC4X3_RC2_IfcTypeProcess_type = new entity("IfcTypeProcess", true, 1256, IFC4X3_RC2_IfcTypeObject_type);
    IFC4X3_RC2_IfcTypeProduct_type = new entity("IfcTypeProduct", false, 1257, IFC4X3_RC2_IfcTypeObject_type);
    IFC4X3_RC2_IfcTypeResource_type = new entity("IfcTypeResource", true, 1258, IFC4X3_RC2_IfcTypeObject_type);
    IFC4X3_RC2_IfcUShapeProfileDef_type = new entity("IfcUShapeProfileDef", false, 1269, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcVector_type = new entity("IfcVector", false, 1275, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcVertexLoop_type = new entity("IfcVertexLoop", false, 1278, IFC4X3_RC2_IfcLoop_type);
    IFC4X3_RC2_IfcWindowStyle_type = new entity("IfcWindowStyle", false, 1311, IFC4X3_RC2_IfcTypeProduct_type);
    IFC4X3_RC2_IfcZShapeProfileDef_type = new entity("IfcZShapeProfileDef", false, 1326, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcClassification_type);
        items.push_back(IFC4X3_RC2_IfcClassificationReference_type);
        IFC4X3_RC2_IfcClassificationReferenceSelect_type = new select_type("IfcClassificationReferenceSelect", 179, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcClassification_type);
        items.push_back(IFC4X3_RC2_IfcClassificationReference_type);
        IFC4X3_RC2_IfcClassificationSelect_type = new select_type("IfcClassificationSelect", 180, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcCoordinateReferenceSystem_type);
        items.push_back(IFC4X3_RC2_IfcGeometricRepresentationContext_type);
        IFC4X3_RC2_IfcCoordinateReferenceSystemSelect_type = new select_type("IfcCoordinateReferenceSystemSelect", 255, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcObjectDefinition_type);
        items.push_back(IFC4X3_RC2_IfcPropertyDefinition_type);
        IFC4X3_RC2_IfcDefinitionSelect_type = new select_type("IfcDefinitionSelect", 306, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcDocumentInformation_type);
        items.push_back(IFC4X3_RC2_IfcDocumentReference_type);
        IFC4X3_RC2_IfcDocumentSelect_type = new select_type("IfcDocumentSelect", 343, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcPositiveLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcVector_type);
        IFC4X3_RC2_IfcHatchLineDistanceSelect_type = new select_type("IfcHatchLineDistanceSelect", 539, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(23);
        items.push_back(IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type);
        items.push_back(IFC4X3_RC2_IfcAreaMeasure_type);
        items.push_back(IFC4X3_RC2_IfcComplexNumber_type);
        items.push_back(IFC4X3_RC2_IfcContextDependentMeasure_type);
        items.push_back(IFC4X3_RC2_IfcCountMeasure_type);
        items.push_back(IFC4X3_RC2_IfcDescriptiveMeasure_type);
        items.push_back(IFC4X3_RC2_IfcElectricCurrentMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcLuminousIntensityMeasure_type);
        items.push_back(IFC4X3_RC2_IfcMassMeasure_type);
        items.push_back(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcNormalisedRatioMeasure_type);
        items.push_back(IFC4X3_RC2_IfcNumericMeasure_type);
        items.push_back(IFC4X3_RC2_IfcParameterValue_type);
        items.push_back(IFC4X3_RC2_IfcPlaneAngleMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPositiveLengthMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type);
        items.push_back(IFC4X3_RC2_IfcPositiveRatioMeasure_type);
        items.push_back(IFC4X3_RC2_IfcRatioMeasure_type);
        items.push_back(IFC4X3_RC2_IfcSolidAngleMeasure_type);
        items.push_back(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type);
        items.push_back(IFC4X3_RC2_IfcTimeMeasure_type);
        items.push_back(IFC4X3_RC2_IfcVolumeMeasure_type);
        IFC4X3_RC2_IfcMeasureValue_type = new select_type("IfcMeasureValue", 672, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcPoint_type);
        items.push_back(IFC4X3_RC2_IfcVertexPoint_type);
        IFC4X3_RC2_IfcPointOrVertexPoint_type = new select_type("IfcPointOrVertexPoint", 788, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(5);
        items.push_back(IFC4X3_RC2_IfcCurveStyle_type);
        items.push_back(IFC4X3_RC2_IfcFillAreaStyle_type);
        items.push_back(IFC4X3_RC2_IfcNullStyle_type);
        items.push_back(IFC4X3_RC2_IfcSurfaceStyle_type);
        items.push_back(IFC4X3_RC2_IfcTextStyle_type);
        IFC4X3_RC2_IfcPresentationStyleSelect_type = new select_type("IfcPresentationStyleSelect", 814, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcProductDefinitionShape_type);
        items.push_back(IFC4X3_RC2_IfcRepresentationMap_type);
        IFC4X3_RC2_IfcProductRepresentationSelect_type = new select_type("IfcProductRepresentationSelect", 824, items);
    }
    IFC4X3_RC2_IfcPropertySetDefinitionSet_type = new type_declaration("IfcPropertySetDefinitionSet", 849, new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPropertySetDefinition_type)));
    {
        std::vector<const declaration*> items; items.reserve(17);
        items.push_back(IFC4X3_RC2_IfcActorRole_type);
        items.push_back(IFC4X3_RC2_IfcAppliedValue_type);
        items.push_back(IFC4X3_RC2_IfcApproval_type);
        items.push_back(IFC4X3_RC2_IfcConstraint_type);
        items.push_back(IFC4X3_RC2_IfcContextDependentUnit_type);
        items.push_back(IFC4X3_RC2_IfcConversionBasedUnit_type);
        items.push_back(IFC4X3_RC2_IfcExternalInformation_type);
        items.push_back(IFC4X3_RC2_IfcExternalReference_type);
        items.push_back(IFC4X3_RC2_IfcMaterialDefinition_type);
        items.push_back(IFC4X3_RC2_IfcOrganization_type);
        items.push_back(IFC4X3_RC2_IfcPerson_type);
        items.push_back(IFC4X3_RC2_IfcPersonAndOrganization_type);
        items.push_back(IFC4X3_RC2_IfcPhysicalQuantity_type);
        items.push_back(IFC4X3_RC2_IfcProfileDef_type);
        items.push_back(IFC4X3_RC2_IfcPropertyAbstraction_type);
        items.push_back(IFC4X3_RC2_IfcShapeAspect_type);
        items.push_back(IFC4X3_RC2_IfcTimeSeries_type);
        IFC4X3_RC2_IfcResourceObjectSelect_type = new select_type("IfcResourceObjectSelect", 976, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcExternallyDefinedTextFont_type);
        items.push_back(IFC4X3_RC2_IfcPreDefinedTextFont_type);
        IFC4X3_RC2_IfcTextFontSelect_type = new select_type("IfcTextFontSelect", 1198, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcDerivedMeasureValue_type);
        items.push_back(IFC4X3_RC2_IfcMeasureValue_type);
        items.push_back(IFC4X3_RC2_IfcSimpleValue_type);
        IFC4X3_RC2_IfcValue_type = new select_type("IfcValue", 1270, items);
    }
    IFC4X3_RC2_IfcAdvancedFace_type = new entity("IfcAdvancedFace", false, 16, IFC4X3_RC2_IfcFaceSurface_type);
    IFC4X3_RC2_IfcAnnotationFillArea_type = new entity("IfcAnnotationFillArea", false, 51, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type = new entity("IfcAsymmetricIShapeProfileDef", false, 67, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcAxis1Placement_type = new entity("IfcAxis1Placement", false, 71, IFC4X3_RC2_IfcPlacement_type);
    IFC4X3_RC2_IfcAxis2Placement2D_type = new entity("IfcAxis2Placement2D", false, 73, IFC4X3_RC2_IfcPlacement_type);
    IFC4X3_RC2_IfcAxis2Placement3D_type = new entity("IfcAxis2Placement3D", false, 74, IFC4X3_RC2_IfcPlacement_type);
    IFC4X3_RC2_IfcAxis2PlacementLinear_type = new entity("IfcAxis2PlacementLinear", false, 75, IFC4X3_RC2_IfcPlacement_type);
    IFC4X3_RC2_IfcAxisLateralInclination_type = new entity("IfcAxisLateralInclination", false, 76, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcBooleanResult_type = new entity("IfcBooleanResult", false, 98, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcBoundedSurface_type = new entity("IfcBoundedSurface", true, 107, IFC4X3_RC2_IfcSurface_type);
    IFC4X3_RC2_IfcBoundingBox_type = new entity("IfcBoundingBox", false, 108, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcBoxedHalfSpace_type = new entity("IfcBoxedHalfSpace", false, 110, IFC4X3_RC2_IfcHalfSpaceSolid_type);
    IFC4X3_RC2_IfcCShapeProfileDef_type = new entity("IfcCShapeProfileDef", false, 274, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcCartesianPoint_type = new entity("IfcCartesianPoint", false, 154, IFC4X3_RC2_IfcPoint_type);
    IFC4X3_RC2_IfcCartesianPointList_type = new entity("IfcCartesianPointList", true, 155, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcCartesianPointList2D_type = new entity("IfcCartesianPointList2D", false, 156, IFC4X3_RC2_IfcCartesianPointList_type);
    IFC4X3_RC2_IfcCartesianPointList3D_type = new entity("IfcCartesianPointList3D", false, 157, IFC4X3_RC2_IfcCartesianPointList_type);
    IFC4X3_RC2_IfcCartesianTransformationOperator_type = new entity("IfcCartesianTransformationOperator", true, 158, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcCartesianTransformationOperator2D_type = new entity("IfcCartesianTransformationOperator2D", false, 159, IFC4X3_RC2_IfcCartesianTransformationOperator_type);
    IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type = new entity("IfcCartesianTransformationOperator2DnonUniform", false, 160, IFC4X3_RC2_IfcCartesianTransformationOperator2D_type);
    IFC4X3_RC2_IfcCartesianTransformationOperator3D_type = new entity("IfcCartesianTransformationOperator3D", false, 161, IFC4X3_RC2_IfcCartesianTransformationOperator_type);
    IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type = new entity("IfcCartesianTransformationOperator3DnonUniform", false, 162, IFC4X3_RC2_IfcCartesianTransformationOperator3D_type);
    IFC4X3_RC2_IfcCircleProfileDef_type = new entity("IfcCircleProfileDef", false, 173, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcClosedShell_type = new entity("IfcClosedShell", false, 181, IFC4X3_RC2_IfcConnectedFaceSet_type);
    IFC4X3_RC2_IfcColourRgb_type = new entity("IfcColourRgb", false, 188, IFC4X3_RC2_IfcColourSpecification_type);
    IFC4X3_RC2_IfcComplexProperty_type = new entity("IfcComplexProperty", false, 199, IFC4X3_RC2_IfcProperty_type);
    IFC4X3_RC2_IfcCompositeCurveSegment_type = new entity("IfcCompositeCurveSegment", false, 204, IFC4X3_RC2_IfcSegment_type);
    IFC4X3_RC2_IfcConstructionResourceType_type = new entity("IfcConstructionResourceType", true, 234, IFC4X3_RC2_IfcTypeResource_type);
    IFC4X3_RC2_IfcContext_type = new entity("IfcContext", true, 235, IFC4X3_RC2_IfcObjectDefinition_type);
    IFC4X3_RC2_IfcCrewResourceType_type = new entity("IfcCrewResourceType", false, 269, IFC4X3_RC2_IfcConstructionResourceType_type);
    IFC4X3_RC2_IfcCsgPrimitive3D_type = new entity("IfcCsgPrimitive3D", true, 271, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcCsgSolid_type = new entity("IfcCsgSolid", false, 273, IFC4X3_RC2_IfcSolidModel_type);
    IFC4X3_RC2_IfcCurve_type = new entity("IfcCurve", true, 280, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcCurveBoundedPlane_type = new entity("IfcCurveBoundedPlane", false, 281, IFC4X3_RC2_IfcBoundedSurface_type);
    IFC4X3_RC2_IfcCurveBoundedSurface_type = new entity("IfcCurveBoundedSurface", false, 282, IFC4X3_RC2_IfcBoundedSurface_type);
    IFC4X3_RC2_IfcCurveSegment_type = new entity("IfcCurveSegment", false, 288, IFC4X3_RC2_IfcSegment_type);
    IFC4X3_RC2_IfcDirection_type = new entity("IfcDirection", false, 315, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type = new entity("IfcDirectrixCurveSweptAreaSolid", true, 317, IFC4X3_RC2_IfcSweptAreaSolid_type);
    IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type = new entity("IfcDirectrixDistanceSweptAreaSolid", true, 318, IFC4X3_RC2_IfcSweptAreaSolid_type);
    IFC4X3_RC2_IfcDoorStyle_type = new entity("IfcDoorStyle", false, 351, IFC4X3_RC2_IfcTypeProduct_type);
    IFC4X3_RC2_IfcEdgeLoop_type = new entity("IfcEdgeLoop", false, 378, IFC4X3_RC2_IfcLoop_type);
    IFC4X3_RC2_IfcElementQuantity_type = new entity("IfcElementQuantity", false, 414, IFC4X3_RC2_IfcQuantitySet_type);
    IFC4X3_RC2_IfcElementType_type = new entity("IfcElementType", true, 415, IFC4X3_RC2_IfcTypeProduct_type);
    IFC4X3_RC2_IfcElementarySurface_type = new entity("IfcElementarySurface", true, 407, IFC4X3_RC2_IfcSurface_type);
    IFC4X3_RC2_IfcEllipseProfileDef_type = new entity("IfcEllipseProfileDef", false, 417, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcEventType_type = new entity("IfcEventType", false, 433, IFC4X3_RC2_IfcTypeProcess_type);
    IFC4X3_RC2_IfcExtrudedAreaSolid_type = new entity("IfcExtrudedAreaSolid", false, 445, IFC4X3_RC2_IfcSweptAreaSolid_type);
    IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type = new entity("IfcExtrudedAreaSolidTapered", false, 446, IFC4X3_RC2_IfcExtrudedAreaSolid_type);
    IFC4X3_RC2_IfcFaceBasedSurfaceModel_type = new entity("IfcFaceBasedSurfaceModel", false, 448, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcFillAreaStyleHatching_type = new entity("IfcFillAreaStyleHatching", false, 470, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcFillAreaStyleTiles_type = new entity("IfcFillAreaStyleTiles", false, 471, IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type = new entity("IfcFixedReferenceSweptAreaSolid", false, 479, IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type);
    IFC4X3_RC2_IfcFurnishingElementType_type = new entity("IfcFurnishingElementType", false, 510, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcFurnitureType_type = new entity("IfcFurnitureType", false, 512, IFC4X3_RC2_IfcFurnishingElementType_type);
    IFC4X3_RC2_IfcGeographicElementType_type = new entity("IfcGeographicElementType", false, 515, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcGeometricCurveSet_type = new entity("IfcGeometricCurveSet", false, 517, IFC4X3_RC2_IfcGeometricSet_type);
    IFC4X3_RC2_IfcIShapeProfileDef_type = new entity("IfcIShapeProfileDef", false, 576, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type = new entity("IfcInclinedReferenceSweptAreaSolid", false, 555, IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type);
    IFC4X3_RC2_IfcIndexedPolygonalFace_type = new entity("IfcIndexedPolygonalFace", false, 558, IFC4X3_RC2_IfcTessellatedItem_type);
    IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type = new entity("IfcIndexedPolygonalFaceWithVoids", false, 559, IFC4X3_RC2_IfcIndexedPolygonalFace_type);
    IFC4X3_RC2_IfcLShapeProfileDef_type = new entity("IfcLShapeProfileDef", false, 636, IFC4X3_RC2_IfcParameterizedProfileDef_type);
    IFC4X3_RC2_IfcLaborResourceType_type = new entity("IfcLaborResourceType", false, 587, IFC4X3_RC2_IfcConstructionResourceType_type);
    IFC4X3_RC2_IfcLine_type = new entity("IfcLine", false, 614, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcManifoldSolidBrep_type = new entity("IfcManifoldSolidBrep", true, 642, IFC4X3_RC2_IfcSolidModel_type);
    IFC4X3_RC2_IfcObject_type = new entity("IfcObject", true, 717, IFC4X3_RC2_IfcObjectDefinition_type);
    IFC4X3_RC2_IfcOffsetCurve_type = new entity("IfcOffsetCurve", true, 726, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcOffsetCurve2D_type = new entity("IfcOffsetCurve2D", false, 727, IFC4X3_RC2_IfcOffsetCurve_type);
    IFC4X3_RC2_IfcOffsetCurve3D_type = new entity("IfcOffsetCurve3D", false, 728, IFC4X3_RC2_IfcOffsetCurve_type);
    IFC4X3_RC2_IfcOffsetCurveByDistances_type = new entity("IfcOffsetCurveByDistances", false, 729, IFC4X3_RC2_IfcOffsetCurve_type);
    IFC4X3_RC2_IfcPcurve_type = new entity("IfcPcurve", false, 748, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcPlanarBox_type = new entity("IfcPlanarBox", false, 774, IFC4X3_RC2_IfcPlanarExtent_type);
    IFC4X3_RC2_IfcPlane_type = new entity("IfcPlane", false, 777, IFC4X3_RC2_IfcElementarySurface_type);
    IFC4X3_RC2_IfcPreDefinedColour_type = new entity("IfcPreDefinedColour", true, 801, IFC4X3_RC2_IfcPreDefinedItem_type);
    IFC4X3_RC2_IfcPreDefinedCurveFont_type = new entity("IfcPreDefinedCurveFont", true, 802, IFC4X3_RC2_IfcPreDefinedItem_type);
    IFC4X3_RC2_IfcPreDefinedPropertySet_type = new entity("IfcPreDefinedPropertySet", true, 805, IFC4X3_RC2_IfcPropertySetDefinition_type);
    IFC4X3_RC2_IfcProcedureType_type = new entity("IfcProcedureType", false, 817, IFC4X3_RC2_IfcTypeProcess_type);
    IFC4X3_RC2_IfcProcess_type = new entity("IfcProcess", true, 819, IFC4X3_RC2_IfcObject_type);
    IFC4X3_RC2_IfcProduct_type = new entity("IfcProduct", true, 821, IFC4X3_RC2_IfcObject_type);
    IFC4X3_RC2_IfcProject_type = new entity("IfcProject", false, 829, IFC4X3_RC2_IfcContext_type);
    IFC4X3_RC2_IfcProjectLibrary_type = new entity("IfcProjectLibrary", false, 834, IFC4X3_RC2_IfcContext_type);
    IFC4X3_RC2_IfcPropertyBoundedValue_type = new entity("IfcPropertyBoundedValue", false, 839, IFC4X3_RC2_IfcSimpleProperty_type);
    IFC4X3_RC2_IfcPropertyEnumeratedValue_type = new entity("IfcPropertyEnumeratedValue", false, 842, IFC4X3_RC2_IfcSimpleProperty_type);
    IFC4X3_RC2_IfcPropertyListValue_type = new entity("IfcPropertyListValue", false, 844, IFC4X3_RC2_IfcSimpleProperty_type);
    IFC4X3_RC2_IfcPropertyReferenceValue_type = new entity("IfcPropertyReferenceValue", false, 845, IFC4X3_RC2_IfcSimpleProperty_type);
    IFC4X3_RC2_IfcPropertySet_type = new entity("IfcPropertySet", false, 846, IFC4X3_RC2_IfcPropertySetDefinition_type);
    IFC4X3_RC2_IfcPropertySetTemplate_type = new entity("IfcPropertySetTemplate", false, 850, IFC4X3_RC2_IfcPropertyTemplateDefinition_type);
    IFC4X3_RC2_IfcPropertySingleValue_type = new entity("IfcPropertySingleValue", false, 852, IFC4X3_RC2_IfcSimpleProperty_type);
    IFC4X3_RC2_IfcPropertyTableValue_type = new entity("IfcPropertyTableValue", false, 853, IFC4X3_RC2_IfcSimpleProperty_type);
    IFC4X3_RC2_IfcPropertyTemplate_type = new entity("IfcPropertyTemplate", true, 854, IFC4X3_RC2_IfcPropertyTemplateDefinition_type);
    IFC4X3_RC2_IfcProxy_type = new entity("IfcProxy", false, 862, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcRectangleHollowProfileDef_type = new entity("IfcRectangleHollowProfileDef", false, 892, IFC4X3_RC2_IfcRectangleProfileDef_type);
    IFC4X3_RC2_IfcRectangularPyramid_type = new entity("IfcRectangularPyramid", false, 894, IFC4X3_RC2_IfcCsgPrimitive3D_type);
    IFC4X3_RC2_IfcRectangularTrimmedSurface_type = new entity("IfcRectangularTrimmedSurface", false, 895, IFC4X3_RC2_IfcBoundedSurface_type);
    IFC4X3_RC2_IfcReinforcementDefinitionProperties_type = new entity("IfcReinforcementDefinitionProperties", false, 906, IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    IFC4X3_RC2_IfcRelAssigns_type = new entity("IfcRelAssigns", true, 918, IFC4X3_RC2_IfcRelationship_type);
    IFC4X3_RC2_IfcRelAssignsToActor_type = new entity("IfcRelAssignsToActor", false, 919, IFC4X3_RC2_IfcRelAssigns_type);
    IFC4X3_RC2_IfcRelAssignsToControl_type = new entity("IfcRelAssignsToControl", false, 920, IFC4X3_RC2_IfcRelAssigns_type);
    IFC4X3_RC2_IfcRelAssignsToGroup_type = new entity("IfcRelAssignsToGroup", false, 921, IFC4X3_RC2_IfcRelAssigns_type);
    IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type = new entity("IfcRelAssignsToGroupByFactor", false, 922, IFC4X3_RC2_IfcRelAssignsToGroup_type);
    IFC4X3_RC2_IfcRelAssignsToProcess_type = new entity("IfcRelAssignsToProcess", false, 923, IFC4X3_RC2_IfcRelAssigns_type);
    IFC4X3_RC2_IfcRelAssignsToProduct_type = new entity("IfcRelAssignsToProduct", false, 924, IFC4X3_RC2_IfcRelAssigns_type);
    IFC4X3_RC2_IfcRelAssignsToResource_type = new entity("IfcRelAssignsToResource", false, 925, IFC4X3_RC2_IfcRelAssigns_type);
    IFC4X3_RC2_IfcRelAssociates_type = new entity("IfcRelAssociates", true, 926, IFC4X3_RC2_IfcRelationship_type);
    IFC4X3_RC2_IfcRelAssociatesApproval_type = new entity("IfcRelAssociatesApproval", false, 927, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelAssociatesClassification_type = new entity("IfcRelAssociatesClassification", false, 928, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelAssociatesConstraint_type = new entity("IfcRelAssociatesConstraint", false, 929, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelAssociatesDocument_type = new entity("IfcRelAssociatesDocument", false, 930, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelAssociatesLibrary_type = new entity("IfcRelAssociatesLibrary", false, 931, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelAssociatesMaterial_type = new entity("IfcRelAssociatesMaterial", false, 932, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelAssociatesProfileDef_type = new entity("IfcRelAssociatesProfileDef", false, 933, IFC4X3_RC2_IfcRelAssociates_type);
    IFC4X3_RC2_IfcRelConnects_type = new entity("IfcRelConnects", true, 935, IFC4X3_RC2_IfcRelationship_type);
    IFC4X3_RC2_IfcRelConnectsElements_type = new entity("IfcRelConnectsElements", false, 936, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelConnectsPathElements_type = new entity("IfcRelConnectsPathElements", false, 937, IFC4X3_RC2_IfcRelConnectsElements_type);
    IFC4X3_RC2_IfcRelConnectsPortToElement_type = new entity("IfcRelConnectsPortToElement", false, 939, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelConnectsPorts_type = new entity("IfcRelConnectsPorts", false, 938, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelConnectsStructuralActivity_type = new entity("IfcRelConnectsStructuralActivity", false, 940, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelConnectsStructuralMember_type = new entity("IfcRelConnectsStructuralMember", false, 941, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelConnectsWithEccentricity_type = new entity("IfcRelConnectsWithEccentricity", false, 942, IFC4X3_RC2_IfcRelConnectsStructuralMember_type);
    IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type = new entity("IfcRelConnectsWithRealizingElements", false, 943, IFC4X3_RC2_IfcRelConnectsElements_type);
    IFC4X3_RC2_IfcRelContainedInSpatialStructure_type = new entity("IfcRelContainedInSpatialStructure", false, 944, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelCoversBldgElements_type = new entity("IfcRelCoversBldgElements", false, 945, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelCoversSpaces_type = new entity("IfcRelCoversSpaces", false, 946, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelDeclares_type = new entity("IfcRelDeclares", false, 947, IFC4X3_RC2_IfcRelationship_type);
    IFC4X3_RC2_IfcRelDecomposes_type = new entity("IfcRelDecomposes", true, 948, IFC4X3_RC2_IfcRelationship_type);
    IFC4X3_RC2_IfcRelDefines_type = new entity("IfcRelDefines", true, 949, IFC4X3_RC2_IfcRelationship_type);
    IFC4X3_RC2_IfcRelDefinesByObject_type = new entity("IfcRelDefinesByObject", false, 950, IFC4X3_RC2_IfcRelDefines_type);
    IFC4X3_RC2_IfcRelDefinesByProperties_type = new entity("IfcRelDefinesByProperties", false, 951, IFC4X3_RC2_IfcRelDefines_type);
    IFC4X3_RC2_IfcRelDefinesByTemplate_type = new entity("IfcRelDefinesByTemplate", false, 952, IFC4X3_RC2_IfcRelDefines_type);
    IFC4X3_RC2_IfcRelDefinesByType_type = new entity("IfcRelDefinesByType", false, 953, IFC4X3_RC2_IfcRelDefines_type);
    IFC4X3_RC2_IfcRelFillsElement_type = new entity("IfcRelFillsElement", false, 954, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelFlowControlElements_type = new entity("IfcRelFlowControlElements", false, 955, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelInterferesElements_type = new entity("IfcRelInterferesElements", false, 956, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelNests_type = new entity("IfcRelNests", false, 957, IFC4X3_RC2_IfcRelDecomposes_type);
    IFC4X3_RC2_IfcRelPositions_type = new entity("IfcRelPositions", false, 958, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelProjectsElement_type = new entity("IfcRelProjectsElement", false, 959, IFC4X3_RC2_IfcRelDecomposes_type);
    IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type = new entity("IfcRelReferencedInSpatialStructure", false, 960, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelSequence_type = new entity("IfcRelSequence", false, 961, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelServicesBuildings_type = new entity("IfcRelServicesBuildings", false, 962, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelSpaceBoundary_type = new entity("IfcRelSpaceBoundary", false, 963, IFC4X3_RC2_IfcRelConnects_type);
    IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type = new entity("IfcRelSpaceBoundary1stLevel", false, 964, IFC4X3_RC2_IfcRelSpaceBoundary_type);
    IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type = new entity("IfcRelSpaceBoundary2ndLevel", false, 965, IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type);
    IFC4X3_RC2_IfcRelVoidsElement_type = new entity("IfcRelVoidsElement", false, 966, IFC4X3_RC2_IfcRelDecomposes_type);
    IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type = new entity("IfcReparametrisedCompositeCurveSegment", false, 967, IFC4X3_RC2_IfcCompositeCurveSegment_type);
    IFC4X3_RC2_IfcResource_type = new entity("IfcResource", true, 972, IFC4X3_RC2_IfcObject_type);
    IFC4X3_RC2_IfcRevolvedAreaSolid_type = new entity("IfcRevolvedAreaSolid", false, 979, IFC4X3_RC2_IfcSweptAreaSolid_type);
    IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type = new entity("IfcRevolvedAreaSolidTapered", false, 980, IFC4X3_RC2_IfcRevolvedAreaSolid_type);
    IFC4X3_RC2_IfcRightCircularCone_type = new entity("IfcRightCircularCone", false, 981, IFC4X3_RC2_IfcCsgPrimitive3D_type);
    IFC4X3_RC2_IfcRightCircularCylinder_type = new entity("IfcRightCircularCylinder", false, 982, IFC4X3_RC2_IfcCsgPrimitive3D_type);
    IFC4X3_RC2_IfcSectionedSolid_type = new entity("IfcSectionedSolid", true, 1001, IFC4X3_RC2_IfcSolidModel_type);
    IFC4X3_RC2_IfcSectionedSolidHorizontal_type = new entity("IfcSectionedSolidHorizontal", false, 1002, IFC4X3_RC2_IfcSectionedSolid_type);
    IFC4X3_RC2_IfcSectionedSurface_type = new entity("IfcSectionedSurface", false, 1004, IFC4X3_RC2_IfcSurface_type);
    IFC4X3_RC2_IfcSeriesParameterCurve_type = new entity("IfcSeriesParameterCurve", false, 1016, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcSimplePropertyTemplate_type = new entity("IfcSimplePropertyTemplate", false, 1033, IFC4X3_RC2_IfcPropertyTemplate_type);
    IFC4X3_RC2_IfcSpatialElement_type = new entity("IfcSpatialElement", true, 1065, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcSpatialElementType_type = new entity("IfcSpatialElementType", true, 1066, IFC4X3_RC2_IfcTypeProduct_type);
    IFC4X3_RC2_IfcSpatialStructureElement_type = new entity("IfcSpatialStructureElement", true, 1068, IFC4X3_RC2_IfcSpatialElement_type);
    IFC4X3_RC2_IfcSpatialStructureElementType_type = new entity("IfcSpatialStructureElementType", true, 1069, IFC4X3_RC2_IfcSpatialElementType_type);
    IFC4X3_RC2_IfcSpatialZone_type = new entity("IfcSpatialZone", false, 1070, IFC4X3_RC2_IfcSpatialElement_type);
    IFC4X3_RC2_IfcSpatialZoneType_type = new entity("IfcSpatialZoneType", false, 1071, IFC4X3_RC2_IfcSpatialElementType_type);
    IFC4X3_RC2_IfcSphere_type = new entity("IfcSphere", false, 1077, IFC4X3_RC2_IfcCsgPrimitive3D_type);
    IFC4X3_RC2_IfcSphericalSurface_type = new entity("IfcSphericalSurface", false, 1078, IFC4X3_RC2_IfcElementarySurface_type);
    IFC4X3_RC2_IfcStructuralActivity_type = new entity("IfcStructuralActivity", true, 1090, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcStructuralItem_type = new entity("IfcStructuralItem", true, 1102, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcStructuralMember_type = new entity("IfcStructuralMember", true, 1117, IFC4X3_RC2_IfcStructuralItem_type);
    IFC4X3_RC2_IfcStructuralReaction_type = new entity("IfcStructuralReaction", true, 1122, IFC4X3_RC2_IfcStructuralActivity_type);
    IFC4X3_RC2_IfcStructuralSurfaceMember_type = new entity("IfcStructuralSurfaceMember", false, 1127, IFC4X3_RC2_IfcStructuralMember_type);
    IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type = new entity("IfcStructuralSurfaceMemberVarying", false, 1129, IFC4X3_RC2_IfcStructuralSurfaceMember_type);
    IFC4X3_RC2_IfcStructuralSurfaceReaction_type = new entity("IfcStructuralSurfaceReaction", false, 1130, IFC4X3_RC2_IfcStructuralReaction_type);
    IFC4X3_RC2_IfcSubContractResourceType_type = new entity("IfcSubContractResourceType", false, 1136, IFC4X3_RC2_IfcConstructionResourceType_type);
    IFC4X3_RC2_IfcSurfaceCurve_type = new entity("IfcSurfaceCurve", false, 1140, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type = new entity("IfcSurfaceCurveSweptAreaSolid", false, 1141, IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type);
    IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type = new entity("IfcSurfaceOfLinearExtrusion", false, 1144, IFC4X3_RC2_IfcSweptSurface_type);
    IFC4X3_RC2_IfcSurfaceOfRevolution_type = new entity("IfcSurfaceOfRevolution", false, 1145, IFC4X3_RC2_IfcSweptSurface_type);
    IFC4X3_RC2_IfcSystemFurnitureElementType_type = new entity("IfcSystemFurnitureElementType", false, 1166, IFC4X3_RC2_IfcFurnishingElementType_type);
    IFC4X3_RC2_IfcTask_type = new entity("IfcTask", false, 1174, IFC4X3_RC2_IfcProcess_type);
    IFC4X3_RC2_IfcTaskType_type = new entity("IfcTaskType", false, 1178, IFC4X3_RC2_IfcTypeProcess_type);
    IFC4X3_RC2_IfcTessellatedFaceSet_type = new entity("IfcTessellatedFaceSet", true, 1192, IFC4X3_RC2_IfcTessellatedItem_type);
    IFC4X3_RC2_IfcToroidalSurface_type = new entity("IfcToroidalSurface", false, 1228, IFC4X3_RC2_IfcElementarySurface_type);
    IFC4X3_RC2_IfcTransportElementType_type = new entity("IfcTransportElementType", false, 1243, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcTriangulatedFaceSet_type = new entity("IfcTriangulatedFaceSet", false, 1246, IFC4X3_RC2_IfcTessellatedFaceSet_type);
    IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type = new entity("IfcTriangulatedIrregularNetwork", false, 1247, IFC4X3_RC2_IfcTriangulatedFaceSet_type);
    IFC4X3_RC2_IfcWindowLiningProperties_type = new entity("IfcWindowLiningProperties", false, 1306, IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    IFC4X3_RC2_IfcWindowPanelProperties_type = new entity("IfcWindowPanelProperties", false, 1309, IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcMeasureWithUnit_type);
        items.push_back(IFC4X3_RC2_IfcReference_type);
        items.push_back(IFC4X3_RC2_IfcValue_type);
        IFC4X3_RC2_IfcAppliedValueSelect_type = new select_type("IfcAppliedValueSelect", 55, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcAxis2Placement2D_type);
        items.push_back(IFC4X3_RC2_IfcAxis2Placement3D_type);
        IFC4X3_RC2_IfcAxis2Placement_type = new select_type("IfcAxis2Placement", 72, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(5);
        items.push_back(IFC4X3_RC2_IfcBooleanResult_type);
        items.push_back(IFC4X3_RC2_IfcCsgPrimitive3D_type);
        items.push_back(IFC4X3_RC2_IfcHalfSpaceSolid_type);
        items.push_back(IFC4X3_RC2_IfcSolidModel_type);
        items.push_back(IFC4X3_RC2_IfcTessellatedFaceSet_type);
        IFC4X3_RC2_IfcBooleanOperand_type = new select_type("IfcBooleanOperand", 96, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcColourSpecification_type);
        items.push_back(IFC4X3_RC2_IfcPreDefinedColour_type);
        IFC4X3_RC2_IfcColour_type = new select_type("IfcColour", 186, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcColourRgb_type);
        items.push_back(IFC4X3_RC2_IfcNormalisedRatioMeasure_type);
        IFC4X3_RC2_IfcColourOrFactor_type = new select_type("IfcColourOrFactor", 187, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBooleanResult_type);
        items.push_back(IFC4X3_RC2_IfcCsgPrimitive3D_type);
        IFC4X3_RC2_IfcCsgSelect_type = new select_type("IfcCsgSelect", 272, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcCurveStyleFont_type);
        items.push_back(IFC4X3_RC2_IfcPreDefinedCurveFont_type);
        IFC4X3_RC2_IfcCurveStyleFontSelect_type = new select_type("IfcCurveStyleFontSelect", 294, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(4);
        items.push_back(IFC4X3_RC2_IfcColour_type);
        items.push_back(IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type);
        items.push_back(IFC4X3_RC2_IfcFillAreaStyleHatching_type);
        items.push_back(IFC4X3_RC2_IfcFillAreaStyleTiles_type);
        IFC4X3_RC2_IfcFillStyleSelect_type = new select_type("IfcFillStyleSelect", 472, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcCurve_type);
        items.push_back(IFC4X3_RC2_IfcPoint_type);
        items.push_back(IFC4X3_RC2_IfcSurface_type);
        IFC4X3_RC2_IfcGeometricSetSelect_type = new select_type("IfcGeometricSetSelect", 523, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcDirection_type);
        items.push_back(IFC4X3_RC2_IfcVirtualGridIntersection_type);
        IFC4X3_RC2_IfcGridPlacementDirectionSelect_type = new select_type("IfcGridPlacementDirectionSelect", 535, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcCurve_type);
        items.push_back(IFC4X3_RC2_IfcLinearAxisWithInclination_type);
        IFC4X3_RC2_IfcLinearAxisSelect_type = new select_type("IfcLinearAxisSelect", 615, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(6);
        items.push_back(IFC4X3_RC2_IfcAppliedValue_type);
        items.push_back(IFC4X3_RC2_IfcMeasureWithUnit_type);
        items.push_back(IFC4X3_RC2_IfcReference_type);
        items.push_back(IFC4X3_RC2_IfcTable_type);
        items.push_back(IFC4X3_RC2_IfcTimeSeries_type);
        items.push_back(IFC4X3_RC2_IfcValue_type);
        IFC4X3_RC2_IfcMetricValueSelect_type = new select_type("IfcMetricValueSelect", 685, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcProcess_type);
        items.push_back(IFC4X3_RC2_IfcTypeProcess_type);
        IFC4X3_RC2_IfcProcessSelect_type = new select_type("IfcProcessSelect", 820, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcProduct_type);
        items.push_back(IFC4X3_RC2_IfcTypeProduct_type);
        IFC4X3_RC2_IfcProductSelect_type = new select_type("IfcProductSelect", 825, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcPropertySetDefinition_type);
        items.push_back(IFC4X3_RC2_IfcPropertySetDefinitionSet_type);
        IFC4X3_RC2_IfcPropertySetDefinitionSelect_type = new select_type("IfcPropertySetDefinitionSelect", 848, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcResource_type);
        items.push_back(IFC4X3_RC2_IfcTypeResource_type);
        IFC4X3_RC2_IfcResourceSelect_type = new select_type("IfcResourceSelect", 977, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcClosedShell_type);
        items.push_back(IFC4X3_RC2_IfcOpenShell_type);
        IFC4X3_RC2_IfcShell_type = new select_type("IfcShell", 1024, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcClosedShell_type);
        items.push_back(IFC4X3_RC2_IfcSolidModel_type);
        IFC4X3_RC2_IfcSolidOrShell_type = new select_type("IfcSolidOrShell", 1052, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcFaceBasedSurfaceModel_type);
        items.push_back(IFC4X3_RC2_IfcFaceSurface_type);
        items.push_back(IFC4X3_RC2_IfcSurface_type);
        IFC4X3_RC2_IfcSurfaceOrFaceSurface_type = new select_type("IfcSurfaceOrFaceSurface", 1146, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcCartesianPoint_type);
        items.push_back(IFC4X3_RC2_IfcParameterValue_type);
        IFC4X3_RC2_IfcTrimmingSelect_type = new select_type("IfcTrimmingSelect", 1250, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcDirection_type);
        items.push_back(IFC4X3_RC2_IfcVector_type);
        IFC4X3_RC2_IfcVectorOrDirection_type = new select_type("IfcVectorOrDirection", 1276, items);
    }
    IFC4X3_RC2_IfcActor_type = new entity("IfcActor", false, 6, IFC4X3_RC2_IfcObject_type);
    IFC4X3_RC2_IfcAdvancedBrep_type = new entity("IfcAdvancedBrep", false, 14, IFC4X3_RC2_IfcManifoldSolidBrep_type);
    IFC4X3_RC2_IfcAdvancedBrepWithVoids_type = new entity("IfcAdvancedBrepWithVoids", false, 15, IFC4X3_RC2_IfcAdvancedBrep_type);
    IFC4X3_RC2_IfcAnnotation_type = new entity("IfcAnnotation", false, 50, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcBSplineSurface_type = new entity("IfcBSplineSurface", true, 118, IFC4X3_RC2_IfcBoundedSurface_type);
    IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type = new entity("IfcBSplineSurfaceWithKnots", false, 120, IFC4X3_RC2_IfcBSplineSurface_type);
    IFC4X3_RC2_IfcBlock_type = new entity("IfcBlock", false, 89, IFC4X3_RC2_IfcCsgPrimitive3D_type);
    IFC4X3_RC2_IfcBlossCurve_type = new entity("IfcBlossCurve", false, 90, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcBooleanClippingResult_type = new entity("IfcBooleanClippingResult", false, 95, IFC4X3_RC2_IfcBooleanResult_type);
    IFC4X3_RC2_IfcBoundedCurve_type = new entity("IfcBoundedCurve", true, 106, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcBuildingStorey_type = new entity("IfcBuildingStorey", false, 128, IFC4X3_RC2_IfcSpatialStructureElement_type);
    IFC4X3_RC2_IfcBuiltElementType_type = new entity("IfcBuiltElementType", false, 132, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcChimneyType_type = new entity("IfcChimneyType", false, 169, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcCircleHollowProfileDef_type = new entity("IfcCircleHollowProfileDef", false, 172, IFC4X3_RC2_IfcCircleProfileDef_type);
    IFC4X3_RC2_IfcCivilElementType_type = new entity("IfcCivilElementType", false, 176, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcClothoid_type = new entity("IfcClothoid", false, 182, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcColumnType_type = new entity("IfcColumnType", false, 193, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcComplexPropertyTemplate_type = new entity("IfcComplexPropertyTemplate", false, 200, IFC4X3_RC2_IfcPropertyTemplate_type);
    IFC4X3_RC2_IfcCompositeCurve_type = new entity("IfcCompositeCurve", false, 202, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcCompositeCurveOnSurface_type = new entity("IfcCompositeCurveOnSurface", false, 203, IFC4X3_RC2_IfcCompositeCurve_type);
    IFC4X3_RC2_IfcConic_type = new entity("IfcConic", true, 213, IFC4X3_RC2_IfcCurve_type);
    IFC4X3_RC2_IfcConstructionEquipmentResourceType_type = new entity("IfcConstructionEquipmentResourceType", false, 225, IFC4X3_RC2_IfcConstructionResourceType_type);
    IFC4X3_RC2_IfcConstructionMaterialResourceType_type = new entity("IfcConstructionMaterialResourceType", false, 228, IFC4X3_RC2_IfcConstructionResourceType_type);
    IFC4X3_RC2_IfcConstructionProductResourceType_type = new entity("IfcConstructionProductResourceType", false, 231, IFC4X3_RC2_IfcConstructionResourceType_type);
    IFC4X3_RC2_IfcConstructionResource_type = new entity("IfcConstructionResource", true, 233, IFC4X3_RC2_IfcResource_type);
    IFC4X3_RC2_IfcControl_type = new entity("IfcControl", true, 238, IFC4X3_RC2_IfcObject_type);
    IFC4X3_RC2_IfcCostItem_type = new entity("IfcCostItem", false, 256, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcCostSchedule_type = new entity("IfcCostSchedule", false, 258, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcCourseType_type = new entity("IfcCourseType", false, 263, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcCoveringType_type = new entity("IfcCoveringType", false, 266, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcCrewResource_type = new entity("IfcCrewResource", false, 268, IFC4X3_RC2_IfcConstructionResource_type);
    IFC4X3_RC2_IfcCurtainWallType_type = new entity("IfcCurtainWallType", false, 277, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcCurveSegment2D_type = new entity("IfcCurveSegment2D", true, 289, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcCylindricalSurface_type = new entity("IfcCylindricalSurface", false, 295, IFC4X3_RC2_IfcElementarySurface_type);
    IFC4X3_RC2_IfcDeepFoundationType_type = new entity("IfcDeepFoundationType", false, 305, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcDistributionElementType_type = new entity("IfcDistributionElementType", false, 332, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcDistributionFlowElementType_type = new entity("IfcDistributionFlowElementType", true, 334, IFC4X3_RC2_IfcDistributionElementType_type);
    IFC4X3_RC2_IfcDoorLiningProperties_type = new entity("IfcDoorLiningProperties", false, 346, IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    IFC4X3_RC2_IfcDoorPanelProperties_type = new entity("IfcDoorPanelProperties", false, 349, IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    IFC4X3_RC2_IfcDoorType_type = new entity("IfcDoorType", false, 354, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcDraughtingPreDefinedColour_type = new entity("IfcDraughtingPreDefinedColour", false, 358, IFC4X3_RC2_IfcPreDefinedColour_type);
    IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type = new entity("IfcDraughtingPreDefinedCurveFont", false, 359, IFC4X3_RC2_IfcPreDefinedCurveFont_type);
    IFC4X3_RC2_IfcElement_type = new entity("IfcElement", true, 406, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcElementAssembly_type = new entity("IfcElementAssembly", false, 408, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcElementAssemblyType_type = new entity("IfcElementAssemblyType", false, 409, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcElementComponent_type = new entity("IfcElementComponent", true, 411, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcElementComponentType_type = new entity("IfcElementComponentType", true, 412, IFC4X3_RC2_IfcElementType_type);
    IFC4X3_RC2_IfcEllipse_type = new entity("IfcEllipse", false, 416, IFC4X3_RC2_IfcConic_type);
    IFC4X3_RC2_IfcEnergyConversionDeviceType_type = new entity("IfcEnergyConversionDeviceType", true, 419, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcEngineType_type = new entity("IfcEngineType", false, 422, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcEvaporativeCoolerType_type = new entity("IfcEvaporativeCoolerType", false, 425, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcEvaporatorType_type = new entity("IfcEvaporatorType", false, 428, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcEvent_type = new entity("IfcEvent", false, 430, IFC4X3_RC2_IfcProcess_type);
    IFC4X3_RC2_IfcExternalSpatialStructureElement_type = new entity("IfcExternalSpatialStructureElement", true, 444, IFC4X3_RC2_IfcSpatialElement_type);
    IFC4X3_RC2_IfcFacetedBrep_type = new entity("IfcFacetedBrep", false, 452, IFC4X3_RC2_IfcManifoldSolidBrep_type);
    IFC4X3_RC2_IfcFacetedBrepWithVoids_type = new entity("IfcFacetedBrepWithVoids", false, 453, IFC4X3_RC2_IfcFacetedBrep_type);
    IFC4X3_RC2_IfcFacility_type = new entity("IfcFacility", false, 454, IFC4X3_RC2_IfcSpatialStructureElement_type);
    IFC4X3_RC2_IfcFacilityPart_type = new entity("IfcFacilityPart", false, 455, IFC4X3_RC2_IfcSpatialStructureElement_type);
    IFC4X3_RC2_IfcFastener_type = new entity("IfcFastener", false, 463, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcFastenerType_type = new entity("IfcFastenerType", false, 464, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcFeatureElement_type = new entity("IfcFeatureElement", true, 466, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcFeatureElementAddition_type = new entity("IfcFeatureElementAddition", true, 467, IFC4X3_RC2_IfcFeatureElement_type);
    IFC4X3_RC2_IfcFeatureElementSubtraction_type = new entity("IfcFeatureElementSubtraction", true, 468, IFC4X3_RC2_IfcFeatureElement_type);
    IFC4X3_RC2_IfcFlowControllerType_type = new entity("IfcFlowControllerType", true, 481, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFlowFittingType_type = new entity("IfcFlowFittingType", true, 484, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFlowMeterType_type = new entity("IfcFlowMeterType", false, 489, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcFlowMovingDeviceType_type = new entity("IfcFlowMovingDeviceType", true, 492, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFlowSegmentType_type = new entity("IfcFlowSegmentType", true, 494, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFlowStorageDeviceType_type = new entity("IfcFlowStorageDeviceType", true, 496, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFlowTerminalType_type = new entity("IfcFlowTerminalType", true, 498, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFlowTreatmentDeviceType_type = new entity("IfcFlowTreatmentDeviceType", true, 500, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcFootingType_type = new entity("IfcFootingType", false, 505, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcFurnishingElement_type = new entity("IfcFurnishingElement", false, 509, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcFurniture_type = new entity("IfcFurniture", false, 511, IFC4X3_RC2_IfcFurnishingElement_type);
    IFC4X3_RC2_IfcGeographicElement_type = new entity("IfcGeographicElement", false, 514, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcGeotechnicalElement_type = new entity("IfcGeotechnicalElement", true, 527, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcGeotechnicalStratum_type = new entity("IfcGeotechnicalStratum", true, 528, IFC4X3_RC2_IfcGeotechnicalElement_type);
    IFC4X3_RC2_IfcGradientCurve_type = new entity("IfcGradientCurve", false, 531, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcGroup_type = new entity("IfcGroup", false, 537, IFC4X3_RC2_IfcObject_type);
    IFC4X3_RC2_IfcHeatExchangerType_type = new entity("IfcHeatExchangerType", false, 541, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcHumidifierType_type = new entity("IfcHumidifierType", false, 546, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcImpactProtectionDevice_type = new entity("IfcImpactProtectionDevice", false, 551, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcImpactProtectionDeviceType_type = new entity("IfcImpactProtectionDeviceType", false, 552, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcIndexedPolyCurve_type = new entity("IfcIndexedPolyCurve", false, 557, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcInterceptorType_type = new entity("IfcInterceptorType", false, 566, IFC4X3_RC2_IfcFlowTreatmentDeviceType_type);
    IFC4X3_RC2_IfcIntersectionCurve_type = new entity("IfcIntersectionCurve", false, 570, IFC4X3_RC2_IfcSurfaceCurve_type);
    IFC4X3_RC2_IfcInventory_type = new entity("IfcInventory", false, 571, IFC4X3_RC2_IfcGroup_type);
    IFC4X3_RC2_IfcJunctionBoxType_type = new entity("IfcJunctionBoxType", false, 579, IFC4X3_RC2_IfcFlowFittingType_type);
    IFC4X3_RC2_IfcKerbType_type = new entity("IfcKerbType", false, 582, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcLaborResource_type = new entity("IfcLaborResource", false, 586, IFC4X3_RC2_IfcConstructionResource_type);
    IFC4X3_RC2_IfcLampType_type = new entity("IfcLampType", false, 591, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcLightFixtureType_type = new entity("IfcLightFixtureType", false, 605, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcLineSegment2D_type = new entity("IfcLineSegment2D", false, 627, IFC4X3_RC2_IfcCurveSegment2D_type);
    IFC4X3_RC2_IfcLinearElement_type = new entity("IfcLinearElement", true, 617, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcLiquidTerminalType_type = new entity("IfcLiquidTerminalType", false, 629, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcMarineFacility_type = new entity("IfcMarineFacility", false, 645, IFC4X3_RC2_IfcFacility_type);
    IFC4X3_RC2_IfcMechanicalFastener_type = new entity("IfcMechanicalFastener", false, 674, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcMechanicalFastenerType_type = new entity("IfcMechanicalFastenerType", false, 675, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcMedicalDeviceType_type = new entity("IfcMedicalDeviceType", false, 678, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcMemberType_type = new entity("IfcMemberType", false, 682, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type = new entity("IfcMobileTelecommunicationsApplianceType", false, 688, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcMooringDeviceType_type = new entity("IfcMooringDeviceType", false, 704, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcMotorConnectionType_type = new entity("IfcMotorConnectionType", false, 707, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcNavigationElementType_type = new entity("IfcNavigationElementType", false, 711, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcOccupant_type = new entity("IfcOccupant", false, 724, IFC4X3_RC2_IfcActor_type);
    IFC4X3_RC2_IfcOpeningElement_type = new entity("IfcOpeningElement", false, 731, IFC4X3_RC2_IfcFeatureElementSubtraction_type);
    IFC4X3_RC2_IfcOpeningStandardCase_type = new entity("IfcOpeningStandardCase", false, 733, IFC4X3_RC2_IfcOpeningElement_type);
    IFC4X3_RC2_IfcOutletType_type = new entity("IfcOutletType", false, 740, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcPavementType_type = new entity("IfcPavementType", false, 747, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcPerformanceHistory_type = new entity("IfcPerformanceHistory", false, 749, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcPermeableCoveringProperties_type = new entity("IfcPermeableCoveringProperties", false, 752, IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    IFC4X3_RC2_IfcPermit_type = new entity("IfcPermit", false, 753, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcPileType_type = new entity("IfcPileType", false, 764, IFC4X3_RC2_IfcDeepFoundationType_type);
    IFC4X3_RC2_IfcPipeFittingType_type = new entity("IfcPipeFittingType", false, 767, IFC4X3_RC2_IfcFlowFittingType_type);
    IFC4X3_RC2_IfcPipeSegmentType_type = new entity("IfcPipeSegmentType", false, 770, IFC4X3_RC2_IfcFlowSegmentType_type);
    IFC4X3_RC2_IfcPlant_type = new entity("IfcPlant", false, 779, IFC4X3_RC2_IfcGeographicElement_type);
    IFC4X3_RC2_IfcPlateType_type = new entity("IfcPlateType", false, 782, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcPolygonalFaceSet_type = new entity("IfcPolygonalFaceSet", false, 790, IFC4X3_RC2_IfcTessellatedFaceSet_type);
    IFC4X3_RC2_IfcPolyline_type = new entity("IfcPolyline", false, 791, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcPort_type = new entity("IfcPort", true, 793, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcPositioningElement_type = new entity("IfcPositioningElement", true, 794, IFC4X3_RC2_IfcProduct_type);
    IFC4X3_RC2_IfcProcedure_type = new entity("IfcProcedure", false, 816, IFC4X3_RC2_IfcProcess_type);
    IFC4X3_RC2_IfcProjectOrder_type = new entity("IfcProjectOrder", false, 835, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcProjectionElement_type = new entity("IfcProjectionElement", false, 832, IFC4X3_RC2_IfcFeatureElementAddition_type);
    IFC4X3_RC2_IfcProtectiveDeviceType_type = new entity("IfcProtectiveDeviceType", false, 860, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcPumpType_type = new entity("IfcPumpType", false, 864, IFC4X3_RC2_IfcFlowMovingDeviceType_type);
    IFC4X3_RC2_IfcRailType_type = new entity("IfcRailType", false, 878, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcRailingType_type = new entity("IfcRailingType", false, 876, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcRailway_type = new entity("IfcRailway", false, 880, IFC4X3_RC2_IfcFacility_type);
    IFC4X3_RC2_IfcRampFlightType_type = new entity("IfcRampFlightType", false, 884, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcRampType_type = new entity("IfcRampType", false, 886, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type = new entity("IfcRationalBSplineSurfaceWithKnots", false, 890, IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type);
    IFC4X3_RC2_IfcReferent_type = new entity("IfcReferent", false, 899, IFC4X3_RC2_IfcPositioningElement_type);
    IFC4X3_RC2_IfcReinforcingElement_type = new entity("IfcReinforcingElement", true, 912, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcReinforcingElementType_type = new entity("IfcReinforcingElementType", true, 913, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcReinforcingMesh_type = new entity("IfcReinforcingMesh", false, 914, IFC4X3_RC2_IfcReinforcingElement_type);
    IFC4X3_RC2_IfcReinforcingMeshType_type = new entity("IfcReinforcingMeshType", false, 915, IFC4X3_RC2_IfcReinforcingElementType_type);
    IFC4X3_RC2_IfcRelAggregates_type = new entity("IfcRelAggregates", false, 917, IFC4X3_RC2_IfcRelDecomposes_type);
    IFC4X3_RC2_IfcRoad_type = new entity("IfcRoad", false, 983, IFC4X3_RC2_IfcFacility_type);
    IFC4X3_RC2_IfcRoofType_type = new entity("IfcRoofType", false, 987, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcSanitaryTerminalType_type = new entity("IfcSanitaryTerminalType", false, 996, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcSeamCurve_type = new entity("IfcSeamCurve", false, 999, IFC4X3_RC2_IfcSurfaceCurve_type);
    IFC4X3_RC2_IfcSegmentedReferenceCurve_type = new entity("IfcSegmentedReferenceCurve", false, 1010, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcShadingDeviceType_type = new entity("IfcShadingDeviceType", false, 1018, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcSign_type = new entity("IfcSign", false, 1026, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcSignType_type = new entity("IfcSignType", false, 1030, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcSignalType_type = new entity("IfcSignalType", false, 1028, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcSite_type = new entity("IfcSite", false, 1037, IFC4X3_RC2_IfcSpatialStructureElement_type);
    IFC4X3_RC2_IfcSlabType_type = new entity("IfcSlabType", false, 1044, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcSolarDeviceType_type = new entity("IfcSolarDeviceType", false, 1048, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcSolidStratum_type = new entity("IfcSolidStratum", false, 1053, IFC4X3_RC2_IfcGeotechnicalStratum_type);
    IFC4X3_RC2_IfcSpace_type = new entity("IfcSpace", false, 1058, IFC4X3_RC2_IfcSpatialStructureElement_type);
    IFC4X3_RC2_IfcSpaceHeaterType_type = new entity("IfcSpaceHeaterType", false, 1061, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcSpaceType_type = new entity("IfcSpaceType", false, 1063, IFC4X3_RC2_IfcSpatialStructureElementType_type);
    IFC4X3_RC2_IfcStackTerminalType_type = new entity("IfcStackTerminalType", false, 1080, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcStairFlightType_type = new entity("IfcStairFlightType", false, 1084, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcStairType_type = new entity("IfcStairType", false, 1086, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcStructuralAction_type = new entity("IfcStructuralAction", true, 1089, IFC4X3_RC2_IfcStructuralActivity_type);
    IFC4X3_RC2_IfcStructuralConnection_type = new entity("IfcStructuralConnection", true, 1093, IFC4X3_RC2_IfcStructuralItem_type);
    IFC4X3_RC2_IfcStructuralCurveAction_type = new entity("IfcStructuralCurveAction", false, 1095, IFC4X3_RC2_IfcStructuralAction_type);
    IFC4X3_RC2_IfcStructuralCurveConnection_type = new entity("IfcStructuralCurveConnection", false, 1097, IFC4X3_RC2_IfcStructuralConnection_type);
    IFC4X3_RC2_IfcStructuralCurveMember_type = new entity("IfcStructuralCurveMember", false, 1098, IFC4X3_RC2_IfcStructuralMember_type);
    IFC4X3_RC2_IfcStructuralCurveMemberVarying_type = new entity("IfcStructuralCurveMemberVarying", false, 1100, IFC4X3_RC2_IfcStructuralCurveMember_type);
    IFC4X3_RC2_IfcStructuralCurveReaction_type = new entity("IfcStructuralCurveReaction", false, 1101, IFC4X3_RC2_IfcStructuralReaction_type);
    IFC4X3_RC2_IfcStructuralLinearAction_type = new entity("IfcStructuralLinearAction", false, 1103, IFC4X3_RC2_IfcStructuralCurveAction_type);
    IFC4X3_RC2_IfcStructuralLoadGroup_type = new entity("IfcStructuralLoadGroup", false, 1107, IFC4X3_RC2_IfcGroup_type);
    IFC4X3_RC2_IfcStructuralPointAction_type = new entity("IfcStructuralPointAction", false, 1119, IFC4X3_RC2_IfcStructuralAction_type);
    IFC4X3_RC2_IfcStructuralPointConnection_type = new entity("IfcStructuralPointConnection", false, 1120, IFC4X3_RC2_IfcStructuralConnection_type);
    IFC4X3_RC2_IfcStructuralPointReaction_type = new entity("IfcStructuralPointReaction", false, 1121, IFC4X3_RC2_IfcStructuralReaction_type);
    IFC4X3_RC2_IfcStructuralResultGroup_type = new entity("IfcStructuralResultGroup", false, 1123, IFC4X3_RC2_IfcGroup_type);
    IFC4X3_RC2_IfcStructuralSurfaceAction_type = new entity("IfcStructuralSurfaceAction", false, 1124, IFC4X3_RC2_IfcStructuralAction_type);
    IFC4X3_RC2_IfcStructuralSurfaceConnection_type = new entity("IfcStructuralSurfaceConnection", false, 1126, IFC4X3_RC2_IfcStructuralConnection_type);
    IFC4X3_RC2_IfcSubContractResource_type = new entity("IfcSubContractResource", false, 1135, IFC4X3_RC2_IfcConstructionResource_type);
    IFC4X3_RC2_IfcSurfaceFeature_type = new entity("IfcSurfaceFeature", false, 1142, IFC4X3_RC2_IfcFeatureElement_type);
    IFC4X3_RC2_IfcSwitchingDeviceType_type = new entity("IfcSwitchingDeviceType", false, 1162, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcSystem_type = new entity("IfcSystem", false, 1164, IFC4X3_RC2_IfcGroup_type);
    IFC4X3_RC2_IfcSystemFurnitureElement_type = new entity("IfcSystemFurnitureElement", false, 1165, IFC4X3_RC2_IfcFurnishingElement_type);
    IFC4X3_RC2_IfcTankType_type = new entity("IfcTankType", false, 1172, IFC4X3_RC2_IfcFlowStorageDeviceType_type);
    IFC4X3_RC2_IfcTendon_type = new entity("IfcTendon", false, 1183, IFC4X3_RC2_IfcReinforcingElement_type);
    IFC4X3_RC2_IfcTendonAnchor_type = new entity("IfcTendonAnchor", false, 1184, IFC4X3_RC2_IfcReinforcingElement_type);
    IFC4X3_RC2_IfcTendonAnchorType_type = new entity("IfcTendonAnchorType", false, 1185, IFC4X3_RC2_IfcReinforcingElementType_type);
    IFC4X3_RC2_IfcTendonConduit_type = new entity("IfcTendonConduit", false, 1187, IFC4X3_RC2_IfcReinforcingElement_type);
    IFC4X3_RC2_IfcTendonConduitType_type = new entity("IfcTendonConduitType", false, 1188, IFC4X3_RC2_IfcReinforcingElementType_type);
    IFC4X3_RC2_IfcTendonType_type = new entity("IfcTendonType", false, 1190, IFC4X3_RC2_IfcReinforcingElementType_type);
    IFC4X3_RC2_IfcTrackElementType_type = new entity("IfcTrackElementType", false, 1231, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcTransformerType_type = new entity("IfcTransformerType", false, 1234, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcTransitionCurveSegment2D_type = new entity("IfcTransitionCurveSegment2D", false, 1237, IFC4X3_RC2_IfcCurveSegment2D_type);
    IFC4X3_RC2_IfcTransportElement_type = new entity("IfcTransportElement", false, 1240, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcTrimmedCurve_type = new entity("IfcTrimmedCurve", false, 1248, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcTubeBundleType_type = new entity("IfcTubeBundleType", false, 1253, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcUnitaryEquipmentType_type = new entity("IfcUnitaryEquipmentType", false, 1264, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcValveType_type = new entity("IfcValveType", false, 1272, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcVibrationDamper_type = new entity("IfcVibrationDamper", false, 1280, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcVibrationDamperType_type = new entity("IfcVibrationDamperType", false, 1281, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcVibrationIsolator_type = new entity("IfcVibrationIsolator", false, 1283, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcVibrationIsolatorType_type = new entity("IfcVibrationIsolatorType", false, 1284, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcVirtualElement_type = new entity("IfcVirtualElement", false, 1286, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcVoidStratum_type = new entity("IfcVoidStratum", false, 1290, IFC4X3_RC2_IfcGeotechnicalStratum_type);
    IFC4X3_RC2_IfcVoidingFeature_type = new entity("IfcVoidingFeature", false, 1288, IFC4X3_RC2_IfcFeatureElementSubtraction_type);
    IFC4X3_RC2_IfcWallType_type = new entity("IfcWallType", false, 1296, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcWasteTerminalType_type = new entity("IfcWasteTerminalType", false, 1302, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcWaterStratum_type = new entity("IfcWaterStratum", false, 1304, IFC4X3_RC2_IfcGeotechnicalStratum_type);
    IFC4X3_RC2_IfcWindowType_type = new entity("IfcWindowType", false, 1314, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcWorkCalendar_type = new entity("IfcWorkCalendar", false, 1317, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcWorkControl_type = new entity("IfcWorkControl", true, 1319, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcWorkPlan_type = new entity("IfcWorkPlan", false, 1320, IFC4X3_RC2_IfcWorkControl_type);
    IFC4X3_RC2_IfcWorkSchedule_type = new entity("IfcWorkSchedule", false, 1322, IFC4X3_RC2_IfcWorkControl_type);
    IFC4X3_RC2_IfcZone_type = new entity("IfcZone", false, 1325, IFC4X3_RC2_IfcSystem_type);
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcCurveStyleFontAndScaling_type);
        items.push_back(IFC4X3_RC2_IfcCurveStyleFontSelect_type);
        IFC4X3_RC2_IfcCurveFontOrScaledCurveFontSelect_type = new select_type("IfcCurveFontOrScaledCurveFontSelect", 283, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(3);
        items.push_back(IFC4X3_RC2_IfcCompositeCurveOnSurface_type);
        items.push_back(IFC4X3_RC2_IfcPcurve_type);
        items.push_back(IFC4X3_RC2_IfcSurfaceCurve_type);
        IFC4X3_RC2_IfcCurveOnSurface_type = new select_type("IfcCurveOnSurface", 286, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcBoundedCurve_type);
        items.push_back(IFC4X3_RC2_IfcEdgeCurve_type);
        IFC4X3_RC2_IfcCurveOrEdgeCurve_type = new select_type("IfcCurveOrEdgeCurve", 287, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcElement_type);
        items.push_back(IFC4X3_RC2_IfcSpatialElement_type);
        IFC4X3_RC2_IfcInterferenceSelect_type = new select_type("IfcInterferenceSelect", 568, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcProduct_type);
        items.push_back(IFC4X3_RC2_IfcSystem_type);
        IFC4X3_RC2_IfcSpatialReferenceSelect_type = new select_type("IfcSpatialReferenceSelect", 1067, items);
    }
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcElement_type);
        items.push_back(IFC4X3_RC2_IfcStructuralItem_type);
        IFC4X3_RC2_IfcStructuralActivityAssignmentSelect_type = new select_type("IfcStructuralActivityAssignmentSelect", 1091, items);
    }
    IFC4X3_RC2_IfcActionRequest_type = new entity("IfcActionRequest", false, 2, IFC4X3_RC2_IfcControl_type);
    IFC4X3_RC2_IfcAirTerminalBoxType_type = new entity("IfcAirTerminalBoxType", false, 19, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcAirTerminalType_type = new entity("IfcAirTerminalType", false, 21, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type = new entity("IfcAirToAirHeatRecoveryType", false, 24, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcAlignmentCant_type = new entity("IfcAlignmentCant", false, 33, IFC4X3_RC2_IfcLinearElement_type);
    IFC4X3_RC2_IfcAlignmentCurve_type = new entity("IfcAlignmentCurve", false, 36, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcAlignmentHorizontal_type = new entity("IfcAlignmentHorizontal", false, 37, IFC4X3_RC2_IfcLinearElement_type);
    IFC4X3_RC2_IfcAlignmentSegment_type = new entity("IfcAlignmentSegment", false, 41, IFC4X3_RC2_IfcLinearElement_type);
    IFC4X3_RC2_IfcAlignmentVertical_type = new entity("IfcAlignmentVertical", false, 43, IFC4X3_RC2_IfcLinearElement_type);
    IFC4X3_RC2_IfcAsset_type = new entity("IfcAsset", false, 66, IFC4X3_RC2_IfcGroup_type);
    IFC4X3_RC2_IfcAudioVisualApplianceType_type = new entity("IfcAudioVisualApplianceType", false, 69, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcBSplineCurve_type = new entity("IfcBSplineCurve", true, 115, IFC4X3_RC2_IfcBoundedCurve_type);
    IFC4X3_RC2_IfcBSplineCurveWithKnots_type = new entity("IfcBSplineCurveWithKnots", false, 117, IFC4X3_RC2_IfcBSplineCurve_type);
    IFC4X3_RC2_IfcBeamType_type = new entity("IfcBeamType", false, 79, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcBearingType_type = new entity("IfcBearingType", false, 82, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcBoilerType_type = new entity("IfcBoilerType", false, 92, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcBoundaryCurve_type = new entity("IfcBoundaryCurve", false, 101, IFC4X3_RC2_IfcCompositeCurveOnSurface_type);
    IFC4X3_RC2_IfcBridge_type = new entity("IfcBridge", false, 111, IFC4X3_RC2_IfcFacility_type);
    IFC4X3_RC2_IfcBridgePart_type = new entity("IfcBridgePart", false, 112, IFC4X3_RC2_IfcFacilityPart_type);
    IFC4X3_RC2_IfcBuilding_type = new entity("IfcBuilding", false, 121, IFC4X3_RC2_IfcFacility_type);
    IFC4X3_RC2_IfcBuildingElementPart_type = new entity("IfcBuildingElementPart", false, 122, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcBuildingElementPartType_type = new entity("IfcBuildingElementPartType", false, 123, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcBuildingElementProxyType_type = new entity("IfcBuildingElementProxyType", false, 126, IFC4X3_RC2_IfcBuiltElementType_type);
    IFC4X3_RC2_IfcBuildingSystem_type = new entity("IfcBuildingSystem", false, 129, IFC4X3_RC2_IfcSystem_type);
    IFC4X3_RC2_IfcBuiltElement_type = new entity("IfcBuiltElement", false, 131, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcBuiltSystem_type = new entity("IfcBuiltSystem", false, 133, IFC4X3_RC2_IfcSystem_type);
    IFC4X3_RC2_IfcBurnerType_type = new entity("IfcBurnerType", false, 136, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcCableCarrierFittingType_type = new entity("IfcCableCarrierFittingType", false, 139, IFC4X3_RC2_IfcFlowFittingType_type);
    IFC4X3_RC2_IfcCableCarrierSegmentType_type = new entity("IfcCableCarrierSegmentType", false, 142, IFC4X3_RC2_IfcFlowSegmentType_type);
    IFC4X3_RC2_IfcCableFittingType_type = new entity("IfcCableFittingType", false, 145, IFC4X3_RC2_IfcFlowFittingType_type);
    IFC4X3_RC2_IfcCableSegmentType_type = new entity("IfcCableSegmentType", false, 148, IFC4X3_RC2_IfcFlowSegmentType_type);
    IFC4X3_RC2_IfcCaissonFoundationType_type = new entity("IfcCaissonFoundationType", false, 151, IFC4X3_RC2_IfcDeepFoundationType_type);
    IFC4X3_RC2_IfcChillerType_type = new entity("IfcChillerType", false, 166, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcChimney_type = new entity("IfcChimney", false, 168, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcCircle_type = new entity("IfcCircle", false, 171, IFC4X3_RC2_IfcConic_type);
    IFC4X3_RC2_IfcCircularArcSegment2D_type = new entity("IfcCircularArcSegment2D", false, 174, IFC4X3_RC2_IfcCurveSegment2D_type);
    IFC4X3_RC2_IfcCivilElement_type = new entity("IfcCivilElement", false, 175, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcCoilType_type = new entity("IfcCoilType", false, 184, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcColumn_type = new entity("IfcColumn", false, 191, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcColumnStandardCase_type = new entity("IfcColumnStandardCase", false, 192, IFC4X3_RC2_IfcColumn_type);
    IFC4X3_RC2_IfcCommunicationsApplianceType_type = new entity("IfcCommunicationsApplianceType", false, 196, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcCompressorType_type = new entity("IfcCompressorType", false, 208, IFC4X3_RC2_IfcFlowMovingDeviceType_type);
    IFC4X3_RC2_IfcCondenserType_type = new entity("IfcCondenserType", false, 211, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcConstructionEquipmentResource_type = new entity("IfcConstructionEquipmentResource", false, 224, IFC4X3_RC2_IfcConstructionResource_type);
    IFC4X3_RC2_IfcConstructionMaterialResource_type = new entity("IfcConstructionMaterialResource", false, 227, IFC4X3_RC2_IfcConstructionResource_type);
    IFC4X3_RC2_IfcConstructionProductResource_type = new entity("IfcConstructionProductResource", false, 230, IFC4X3_RC2_IfcConstructionResource_type);
    IFC4X3_RC2_IfcConveyorSegmentType_type = new entity("IfcConveyorSegmentType", false, 245, IFC4X3_RC2_IfcFlowSegmentType_type);
    IFC4X3_RC2_IfcCooledBeamType_type = new entity("IfcCooledBeamType", false, 248, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcCoolingTowerType_type = new entity("IfcCoolingTowerType", false, 251, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcCourse_type = new entity("IfcCourse", false, 262, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcCovering_type = new entity("IfcCovering", false, 265, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcCurtainWall_type = new entity("IfcCurtainWall", false, 276, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcDamperType_type = new entity("IfcDamperType", false, 297, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcDeepFoundation_type = new entity("IfcDeepFoundation", false, 304, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcDiscreteAccessory_type = new entity("IfcDiscreteAccessory", false, 319, IFC4X3_RC2_IfcElementComponent_type);
    IFC4X3_RC2_IfcDiscreteAccessoryType_type = new entity("IfcDiscreteAccessoryType", false, 320, IFC4X3_RC2_IfcElementComponentType_type);
    IFC4X3_RC2_IfcDistributionBoardType_type = new entity("IfcDistributionBoardType", false, 323, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcDistributionChamberElementType_type = new entity("IfcDistributionChamberElementType", false, 326, IFC4X3_RC2_IfcDistributionFlowElementType_type);
    IFC4X3_RC2_IfcDistributionControlElementType_type = new entity("IfcDistributionControlElementType", true, 330, IFC4X3_RC2_IfcDistributionElementType_type);
    IFC4X3_RC2_IfcDistributionElement_type = new entity("IfcDistributionElement", false, 331, IFC4X3_RC2_IfcElement_type);
    IFC4X3_RC2_IfcDistributionFlowElement_type = new entity("IfcDistributionFlowElement", false, 333, IFC4X3_RC2_IfcDistributionElement_type);
    IFC4X3_RC2_IfcDistributionPort_type = new entity("IfcDistributionPort", false, 335, IFC4X3_RC2_IfcPort_type);
    IFC4X3_RC2_IfcDistributionSystem_type = new entity("IfcDistributionSystem", false, 337, IFC4X3_RC2_IfcSystem_type);
    IFC4X3_RC2_IfcDoor_type = new entity("IfcDoor", false, 345, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcDoorStandardCase_type = new entity("IfcDoorStandardCase", false, 350, IFC4X3_RC2_IfcDoor_type);
    IFC4X3_RC2_IfcDuctFittingType_type = new entity("IfcDuctFittingType", false, 361, IFC4X3_RC2_IfcFlowFittingType_type);
    IFC4X3_RC2_IfcDuctSegmentType_type = new entity("IfcDuctSegmentType", false, 364, IFC4X3_RC2_IfcFlowSegmentType_type);
    IFC4X3_RC2_IfcDuctSilencerType_type = new entity("IfcDuctSilencerType", false, 367, IFC4X3_RC2_IfcFlowTreatmentDeviceType_type);
    IFC4X3_RC2_IfcEarthworksCut_type = new entity("IfcEarthworksCut", false, 371, IFC4X3_RC2_IfcFeatureElementSubtraction_type);
    IFC4X3_RC2_IfcEarthworksElement_type = new entity("IfcEarthworksElement", false, 373, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcEarthworksFill_type = new entity("IfcEarthworksFill", false, 374, IFC4X3_RC2_IfcEarthworksElement_type);
    IFC4X3_RC2_IfcElectricApplianceType_type = new entity("IfcElectricApplianceType", false, 380, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcElectricDistributionBoardType_type = new entity("IfcElectricDistributionBoardType", false, 387, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type = new entity("IfcElectricFlowStorageDeviceType", false, 390, IFC4X3_RC2_IfcFlowStorageDeviceType_type);
    IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type = new entity("IfcElectricFlowTreatmentDeviceType", false, 393, IFC4X3_RC2_IfcFlowTreatmentDeviceType_type);
    IFC4X3_RC2_IfcElectricGeneratorType_type = new entity("IfcElectricGeneratorType", false, 396, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcElectricMotorType_type = new entity("IfcElectricMotorType", false, 399, IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    IFC4X3_RC2_IfcElectricTimeControlType_type = new entity("IfcElectricTimeControlType", false, 403, IFC4X3_RC2_IfcFlowControllerType_type);
    IFC4X3_RC2_IfcEnergyConversionDevice_type = new entity("IfcEnergyConversionDevice", false, 418, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcEngine_type = new entity("IfcEngine", false, 421, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcEvaporativeCooler_type = new entity("IfcEvaporativeCooler", false, 424, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcEvaporator_type = new entity("IfcEvaporator", false, 427, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcExternalSpatialElement_type = new entity("IfcExternalSpatialElement", false, 442, IFC4X3_RC2_IfcExternalSpatialStructureElement_type);
    IFC4X3_RC2_IfcFanType_type = new entity("IfcFanType", false, 461, IFC4X3_RC2_IfcFlowMovingDeviceType_type);
    IFC4X3_RC2_IfcFilterType_type = new entity("IfcFilterType", false, 474, IFC4X3_RC2_IfcFlowTreatmentDeviceType_type);
    IFC4X3_RC2_IfcFireSuppressionTerminalType_type = new entity("IfcFireSuppressionTerminalType", false, 477, IFC4X3_RC2_IfcFlowTerminalType_type);
    IFC4X3_RC2_IfcFlowController_type = new entity("IfcFlowController", false, 480, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFlowFitting_type = new entity("IfcFlowFitting", false, 483, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFlowInstrumentType_type = new entity("IfcFlowInstrumentType", false, 486, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcFlowMeter_type = new entity("IfcFlowMeter", false, 488, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcFlowMovingDevice_type = new entity("IfcFlowMovingDevice", false, 491, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFlowSegment_type = new entity("IfcFlowSegment", false, 493, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFlowStorageDevice_type = new entity("IfcFlowStorageDevice", false, 495, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFlowTerminal_type = new entity("IfcFlowTerminal", false, 497, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFlowTreatmentDevice_type = new entity("IfcFlowTreatmentDevice", false, 499, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcFooting_type = new entity("IfcFooting", false, 504, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcGeotechnicalAssembly_type = new entity("IfcGeotechnicalAssembly", true, 526, IFC4X3_RC2_IfcGeotechnicalElement_type);
    IFC4X3_RC2_IfcGrid_type = new entity("IfcGrid", false, 532, IFC4X3_RC2_IfcPositioningElement_type);
    IFC4X3_RC2_IfcHeatExchanger_type = new entity("IfcHeatExchanger", false, 540, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcHumidifier_type = new entity("IfcHumidifier", false, 545, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcInterceptor_type = new entity("IfcInterceptor", false, 565, IFC4X3_RC2_IfcFlowTreatmentDevice_type);
    IFC4X3_RC2_IfcJunctionBox_type = new entity("IfcJunctionBox", false, 578, IFC4X3_RC2_IfcFlowFitting_type);
    IFC4X3_RC2_IfcKerb_type = new entity("IfcKerb", false, 581, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcLamp_type = new entity("IfcLamp", false, 590, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcLightFixture_type = new entity("IfcLightFixture", false, 604, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcLinearPositioningElement_type = new entity("IfcLinearPositioningElement", false, 622, IFC4X3_RC2_IfcPositioningElement_type);
    IFC4X3_RC2_IfcLiquidTerminal_type = new entity("IfcLiquidTerminal", false, 628, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcMedicalDevice_type = new entity("IfcMedicalDevice", false, 677, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcMember_type = new entity("IfcMember", false, 680, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcMemberStandardCase_type = new entity("IfcMemberStandardCase", false, 681, IFC4X3_RC2_IfcMember_type);
    IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type = new entity("IfcMobileTelecommunicationsAppliance", false, 687, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcMooringDevice_type = new entity("IfcMooringDevice", false, 703, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcMotorConnection_type = new entity("IfcMotorConnection", false, 706, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcNavigationElement_type = new entity("IfcNavigationElement", false, 710, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcOuterBoundaryCurve_type = new entity("IfcOuterBoundaryCurve", false, 738, IFC4X3_RC2_IfcBoundaryCurve_type);
    IFC4X3_RC2_IfcOutlet_type = new entity("IfcOutlet", false, 739, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcPavement_type = new entity("IfcPavement", false, 746, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcPile_type = new entity("IfcPile", false, 762, IFC4X3_RC2_IfcDeepFoundation_type);
    IFC4X3_RC2_IfcPipeFitting_type = new entity("IfcPipeFitting", false, 766, IFC4X3_RC2_IfcFlowFitting_type);
    IFC4X3_RC2_IfcPipeSegment_type = new entity("IfcPipeSegment", false, 769, IFC4X3_RC2_IfcFlowSegment_type);
    IFC4X3_RC2_IfcPlate_type = new entity("IfcPlate", false, 780, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcPlateStandardCase_type = new entity("IfcPlateStandardCase", false, 781, IFC4X3_RC2_IfcPlate_type);
    IFC4X3_RC2_IfcProtectiveDevice_type = new entity("IfcProtectiveDevice", false, 856, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type = new entity("IfcProtectiveDeviceTrippingUnitType", false, 858, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcPump_type = new entity("IfcPump", false, 863, IFC4X3_RC2_IfcFlowMovingDevice_type);
    IFC4X3_RC2_IfcRail_type = new entity("IfcRail", false, 874, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcRailing_type = new entity("IfcRailing", false, 875, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcRamp_type = new entity("IfcRamp", false, 882, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcRampFlight_type = new entity("IfcRampFlight", false, 883, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type = new entity("IfcRationalBSplineCurveWithKnots", false, 889, IFC4X3_RC2_IfcBSplineCurveWithKnots_type);
    IFC4X3_RC2_IfcReinforcedSoil_type = new entity("IfcReinforcedSoil", false, 903, IFC4X3_RC2_IfcEarthworksElement_type);
    IFC4X3_RC2_IfcReinforcingBar_type = new entity("IfcReinforcingBar", false, 907, IFC4X3_RC2_IfcReinforcingElement_type);
    IFC4X3_RC2_IfcReinforcingBarType_type = new entity("IfcReinforcingBarType", false, 910, IFC4X3_RC2_IfcReinforcingElementType_type);
    IFC4X3_RC2_IfcRoof_type = new entity("IfcRoof", false, 986, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcSanitaryTerminal_type = new entity("IfcSanitaryTerminal", false, 995, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcSensorType_type = new entity("IfcSensorType", false, 1013, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcShadingDevice_type = new entity("IfcShadingDevice", false, 1017, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcSignal_type = new entity("IfcSignal", false, 1027, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcSlab_type = new entity("IfcSlab", false, 1041, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcSlabElementedCase_type = new entity("IfcSlabElementedCase", false, 1042, IFC4X3_RC2_IfcSlab_type);
    IFC4X3_RC2_IfcSlabStandardCase_type = new entity("IfcSlabStandardCase", false, 1043, IFC4X3_RC2_IfcSlab_type);
    IFC4X3_RC2_IfcSolarDevice_type = new entity("IfcSolarDevice", false, 1047, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcSpaceHeater_type = new entity("IfcSpaceHeater", false, 1060, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcStackTerminal_type = new entity("IfcStackTerminal", false, 1079, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcStair_type = new entity("IfcStair", false, 1082, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcStairFlight_type = new entity("IfcStairFlight", false, 1083, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcStructuralAnalysisModel_type = new entity("IfcStructuralAnalysisModel", false, 1092, IFC4X3_RC2_IfcSystem_type);
    IFC4X3_RC2_IfcStructuralLoadCase_type = new entity("IfcStructuralLoadCase", false, 1105, IFC4X3_RC2_IfcStructuralLoadGroup_type);
    IFC4X3_RC2_IfcStructuralPlanarAction_type = new entity("IfcStructuralPlanarAction", false, 1118, IFC4X3_RC2_IfcStructuralSurfaceAction_type);
    IFC4X3_RC2_IfcSwitchingDevice_type = new entity("IfcSwitchingDevice", false, 1161, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcTank_type = new entity("IfcTank", false, 1171, IFC4X3_RC2_IfcFlowStorageDevice_type);
    IFC4X3_RC2_IfcTrackElement_type = new entity("IfcTrackElement", false, 1230, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcTransformer_type = new entity("IfcTransformer", false, 1233, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcTubeBundle_type = new entity("IfcTubeBundle", false, 1252, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcUnitaryControlElementType_type = new entity("IfcUnitaryControlElementType", false, 1261, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcUnitaryEquipment_type = new entity("IfcUnitaryEquipment", false, 1263, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcValve_type = new entity("IfcValve", false, 1271, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcWall_type = new entity("IfcWall", false, 1293, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcWallElementedCase_type = new entity("IfcWallElementedCase", false, 1294, IFC4X3_RC2_IfcWall_type);
    IFC4X3_RC2_IfcWallStandardCase_type = new entity("IfcWallStandardCase", false, 1295, IFC4X3_RC2_IfcWall_type);
    IFC4X3_RC2_IfcWasteTerminal_type = new entity("IfcWasteTerminal", false, 1301, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcWindow_type = new entity("IfcWindow", false, 1305, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcWindowStandardCase_type = new entity("IfcWindowStandardCase", false, 1310, IFC4X3_RC2_IfcWindow_type);
    {
        std::vector<const declaration*> items; items.reserve(2);
        items.push_back(IFC4X3_RC2_IfcExternalSpatialElement_type);
        items.push_back(IFC4X3_RC2_IfcSpace_type);
        IFC4X3_RC2_IfcSpaceBoundarySelect_type = new select_type("IfcSpaceBoundarySelect", 1059, items);
    }
    IFC4X3_RC2_IfcActuatorType_type = new entity("IfcActuatorType", false, 10, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcAirTerminal_type = new entity("IfcAirTerminal", false, 17, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcAirTerminalBox_type = new entity("IfcAirTerminalBox", false, 18, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcAirToAirHeatRecovery_type = new entity("IfcAirToAirHeatRecovery", false, 23, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcAlarmType_type = new entity("IfcAlarmType", false, 27, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcAlignment_type = new entity("IfcAlignment", false, 29, IFC4X3_RC2_IfcLinearPositioningElement_type);
    IFC4X3_RC2_IfcAudioVisualAppliance_type = new entity("IfcAudioVisualAppliance", false, 68, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcBeam_type = new entity("IfcBeam", false, 77, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcBeamStandardCase_type = new entity("IfcBeamStandardCase", false, 78, IFC4X3_RC2_IfcBeam_type);
    IFC4X3_RC2_IfcBearing_type = new entity("IfcBearing", false, 81, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcBoiler_type = new entity("IfcBoiler", false, 91, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcBorehole_type = new entity("IfcBorehole", false, 99, IFC4X3_RC2_IfcGeotechnicalAssembly_type);
    IFC4X3_RC2_IfcBuildingElementProxy_type = new entity("IfcBuildingElementProxy", false, 125, IFC4X3_RC2_IfcBuiltElement_type);
    IFC4X3_RC2_IfcBurner_type = new entity("IfcBurner", false, 135, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcCableCarrierFitting_type = new entity("IfcCableCarrierFitting", false, 138, IFC4X3_RC2_IfcFlowFitting_type);
    IFC4X3_RC2_IfcCableCarrierSegment_type = new entity("IfcCableCarrierSegment", false, 141, IFC4X3_RC2_IfcFlowSegment_type);
    IFC4X3_RC2_IfcCableFitting_type = new entity("IfcCableFitting", false, 144, IFC4X3_RC2_IfcFlowFitting_type);
    IFC4X3_RC2_IfcCableSegment_type = new entity("IfcCableSegment", false, 147, IFC4X3_RC2_IfcFlowSegment_type);
    IFC4X3_RC2_IfcCaissonFoundation_type = new entity("IfcCaissonFoundation", false, 150, IFC4X3_RC2_IfcDeepFoundation_type);
    IFC4X3_RC2_IfcChiller_type = new entity("IfcChiller", false, 165, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcCoil_type = new entity("IfcCoil", false, 183, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcCommunicationsAppliance_type = new entity("IfcCommunicationsAppliance", false, 195, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcCompressor_type = new entity("IfcCompressor", false, 207, IFC4X3_RC2_IfcFlowMovingDevice_type);
    IFC4X3_RC2_IfcCondenser_type = new entity("IfcCondenser", false, 210, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcControllerType_type = new entity("IfcControllerType", false, 240, IFC4X3_RC2_IfcDistributionControlElementType_type);
    IFC4X3_RC2_IfcConveyorSegment_type = new entity("IfcConveyorSegment", false, 244, IFC4X3_RC2_IfcFlowSegment_type);
    IFC4X3_RC2_IfcCooledBeam_type = new entity("IfcCooledBeam", false, 247, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcCoolingTower_type = new entity("IfcCoolingTower", false, 250, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcDamper_type = new entity("IfcDamper", false, 296, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcDistributionBoard_type = new entity("IfcDistributionBoard", false, 322, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcDistributionChamberElement_type = new entity("IfcDistributionChamberElement", false, 325, IFC4X3_RC2_IfcDistributionFlowElement_type);
    IFC4X3_RC2_IfcDistributionCircuit_type = new entity("IfcDistributionCircuit", false, 328, IFC4X3_RC2_IfcDistributionSystem_type);
    IFC4X3_RC2_IfcDistributionControlElement_type = new entity("IfcDistributionControlElement", false, 329, IFC4X3_RC2_IfcDistributionElement_type);
    IFC4X3_RC2_IfcDuctFitting_type = new entity("IfcDuctFitting", false, 360, IFC4X3_RC2_IfcFlowFitting_type);
    IFC4X3_RC2_IfcDuctSegment_type = new entity("IfcDuctSegment", false, 363, IFC4X3_RC2_IfcFlowSegment_type);
    IFC4X3_RC2_IfcDuctSilencer_type = new entity("IfcDuctSilencer", false, 366, IFC4X3_RC2_IfcFlowTreatmentDevice_type);
    IFC4X3_RC2_IfcElectricAppliance_type = new entity("IfcElectricAppliance", false, 379, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcElectricDistributionBoard_type = new entity("IfcElectricDistributionBoard", false, 386, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcElectricFlowStorageDevice_type = new entity("IfcElectricFlowStorageDevice", false, 389, IFC4X3_RC2_IfcFlowStorageDevice_type);
    IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type = new entity("IfcElectricFlowTreatmentDevice", false, 392, IFC4X3_RC2_IfcFlowTreatmentDevice_type);
    IFC4X3_RC2_IfcElectricGenerator_type = new entity("IfcElectricGenerator", false, 395, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcElectricMotor_type = new entity("IfcElectricMotor", false, 398, IFC4X3_RC2_IfcEnergyConversionDevice_type);
    IFC4X3_RC2_IfcElectricTimeControl_type = new entity("IfcElectricTimeControl", false, 402, IFC4X3_RC2_IfcFlowController_type);
    IFC4X3_RC2_IfcFan_type = new entity("IfcFan", false, 460, IFC4X3_RC2_IfcFlowMovingDevice_type);
    IFC4X3_RC2_IfcFilter_type = new entity("IfcFilter", false, 473, IFC4X3_RC2_IfcFlowTreatmentDevice_type);
    IFC4X3_RC2_IfcFireSuppressionTerminal_type = new entity("IfcFireSuppressionTerminal", false, 476, IFC4X3_RC2_IfcFlowTerminal_type);
    IFC4X3_RC2_IfcFlowInstrument_type = new entity("IfcFlowInstrument", false, 485, IFC4X3_RC2_IfcDistributionControlElement_type);
    IFC4X3_RC2_IfcGeomodel_type = new entity("IfcGeomodel", false, 524, IFC4X3_RC2_IfcGeotechnicalAssembly_type);
    IFC4X3_RC2_IfcGeoslice_type = new entity("IfcGeoslice", false, 525, IFC4X3_RC2_IfcGeotechnicalAssembly_type);
    IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type = new entity("IfcProtectiveDeviceTrippingUnit", false, 857, IFC4X3_RC2_IfcDistributionControlElement_type);
    IFC4X3_RC2_IfcSensor_type = new entity("IfcSensor", false, 1012, IFC4X3_RC2_IfcDistributionControlElement_type);
    IFC4X3_RC2_IfcUnitaryControlElement_type = new entity("IfcUnitaryControlElement", false, 1260, IFC4X3_RC2_IfcDistributionControlElement_type);
    IFC4X3_RC2_IfcActuator_type = new entity("IfcActuator", false, 9, IFC4X3_RC2_IfcDistributionControlElement_type);
    IFC4X3_RC2_IfcAlarm_type = new entity("IfcAlarm", false, 26, IFC4X3_RC2_IfcDistributionControlElement_type);
    IFC4X3_RC2_IfcController_type = new entity("IfcController", false, 239, IFC4X3_RC2_IfcDistributionControlElement_type);
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcActionRequestTypeEnum_type), true));
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcActionRequest_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("TheActor", new named_type(IFC4X3_RC2_IfcActorSelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcActor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Role", new named_type(IFC4X3_RC2_IfcRoleEnum_type), false));
        attributes.push_back(new attribute("UserDefinedRole", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcActorRole_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcActuatorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcActuator_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcActuatorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcActuatorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Purpose", new named_type(IFC4X3_RC2_IfcAddressTypeEnum_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("UserDefinedPurpose", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAddress_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcAdvancedBrep_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Voids", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcClosedShell_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAdvancedBrepWithVoids_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAdvancedFace_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAirTerminalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAirTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAirTerminalBox_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAirTerminalBoxType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAirTerminalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAirTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAirToAirHeatRecovery_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAlarmTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlarm_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAlarmTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlarmType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAlignmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("IsConvex", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignment2DVerSegLine_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ParabolaConstant", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("IsConvex", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RailHeadDistance", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAlignmentCantSegment_type)), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentCant_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("StartDistAlong", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("HorizontalLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("StartCantLeft", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("EndCantLeft", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("StartCantRight", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("EndCantRight", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("SmoothingLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentCantSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Horizontal", new named_type(IFC4X3_RC2_IfcAlignmentHorizontal_type), false));
        attributes.push_back(new attribute("Vertical", new named_type(IFC4X3_RC2_IfcAlignmentVertical_type), true));
        attributes.push_back(new attribute("Tag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("StartDistAlong", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAlignmentHorizontalSegment_type)), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentHorizontal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("StartPoint", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), false));
        attributes.push_back(new attribute("StartDirection", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), false));
        attributes.push_back(new attribute("StartRadiusOfCurvature", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("EndRadiusOfCurvature", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("SegmentLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("GravityCenterLineHeight", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentHorizontalSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("StartTag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("EndTag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentParameterSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("GeometricParameters", new named_type(IFC4X3_RC2_IfcAlignmentParameterSegment_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAlignmentVerticalSegment_type)), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentVertical_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("StartDistAlong", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("HorizontalLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("StartHeight", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("StartGradient", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("EndGradient", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("RadiusOfCurvature", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAlignmentVerticalSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAnnotationTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAnnotation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("OuterBoundary", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("InnerBoundaries", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcCurve_type)), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAnnotationFillArea_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("ApplicationDeveloper", new named_type(IFC4X3_RC2_IfcOrganization_type), false));
        attributes.push_back(new attribute("Version", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("ApplicationFullName", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("ApplicationIdentifier", new named_type(IFC4X3_RC2_IfcIdentifier_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcApplication_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(10);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("AppliedValue", new named_type(IFC4X3_RC2_IfcAppliedValueSelect_type), true));
        attributes.push_back(new attribute("UnitBasis", new named_type(IFC4X3_RC2_IfcMeasureWithUnit_type), true));
        attributes.push_back(new attribute("ApplicableDate", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("FixedUntilDate", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("Category", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Condition", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("ArithmeticOperator", new named_type(IFC4X3_RC2_IfcArithmeticOperatorEnum_type), true));
        attributes.push_back(new attribute("Components", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAppliedValue_type)), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAppliedValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(9);
        attributes.push_back(new attribute("Identifier", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("TimeOfApproval", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Level", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Qualifier", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("RequestingApproval", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("GivingApproval", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcApproval_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingApproval", new named_type(IFC4X3_RC2_IfcApproval_type), false));
        attributes.push_back(new attribute("RelatedApprovals", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcApproval_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcApprovalRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("OuterCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcArbitraryClosedProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Curve", new named_type(IFC4X3_RC2_IfcBoundedCurve_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcArbitraryOpenProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("InnerCurves", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcCurve_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(9);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("OriginalValue", new named_type(IFC4X3_RC2_IfcCostValue_type), true));
        attributes.push_back(new attribute("CurrentValue", new named_type(IFC4X3_RC2_IfcCostValue_type), true));
        attributes.push_back(new attribute("TotalReplacementCost", new named_type(IFC4X3_RC2_IfcCostValue_type), true));
        attributes.push_back(new attribute("Owner", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("User", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("ResponsiblePerson", new named_type(IFC4X3_RC2_IfcPerson_type), true));
        attributes.push_back(new attribute("IncorporationDate", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("DepreciatedValue", new named_type(IFC4X3_RC2_IfcCostValue_type), true));
        std::vector<bool> derived; derived.reserve(14);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAsset_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(12);
        attributes.push_back(new attribute("BottomFlangeWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("OverallDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("WebThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("BottomFlangeThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("BottomFlangeFilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("TopFlangeWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("TopFlangeThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("TopFlangeFilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("BottomFlangeEdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("BottomFlangeSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        attributes.push_back(new attribute("TopFlangeEdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("TopFlangeSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        std::vector<bool> derived; derived.reserve(15);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAudioVisualAppliance_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAudioVisualApplianceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAxis1Placement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RefDirection", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAxis2Placement2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        attributes.push_back(new attribute("RefDirection", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAxis2Placement3D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        attributes.push_back(new attribute("RefDirection", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcAxis2PlacementLinear_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcAxisLateralInclination_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Degree", new named_type(IFC4X3_RC2_IfcInteger_type), false));
        attributes.push_back(new attribute("ControlPointsList", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcCartesianPoint_type)), false));
        attributes.push_back(new attribute("CurveForm", new named_type(IFC4X3_RC2_IfcBSplineCurveForm_type), false));
        attributes.push_back(new attribute("ClosedCurve", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("SelfIntersect", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBSplineCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("KnotMultiplicities", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), false));
        attributes.push_back(new attribute("Knots", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcParameterValue_type)), false));
        attributes.push_back(new attribute("KnotSpec", new named_type(IFC4X3_RC2_IfcKnotType_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBSplineCurveWithKnots_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("UDegree", new named_type(IFC4X3_RC2_IfcInteger_type), false));
        attributes.push_back(new attribute("VDegree", new named_type(IFC4X3_RC2_IfcInteger_type), false));
        attributes.push_back(new attribute("ControlPointsList", new aggregation_type(aggregation_type::list_type, 2, -1, new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcCartesianPoint_type))), false));
        attributes.push_back(new attribute("SurfaceForm", new named_type(IFC4X3_RC2_IfcBSplineSurfaceForm_type), false));
        attributes.push_back(new attribute("UClosed", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("VClosed", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("SelfIntersect", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBSplineSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("UMultiplicities", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), false));
        attributes.push_back(new attribute("VMultiplicities", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), false));
        attributes.push_back(new attribute("UKnots", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcParameterValue_type)), false));
        attributes.push_back(new attribute("VKnots", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcParameterValue_type)), false));
        attributes.push_back(new attribute("KnotSpec", new named_type(IFC4X3_RC2_IfcKnotType_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBeamTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBeam_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBeamStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBeamTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBeamType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBearingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBearing_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBearingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBearingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RasterFormat", new named_type(IFC4X3_RC2_IfcIdentifier_type), false));
        attributes.push_back(new attribute("RasterCode", new named_type(IFC4X3_RC2_IfcBinary_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBlobTexture_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("XLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("YLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("ZLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBlock_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        attributes.push_back(new attribute("CurveLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBlossCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBoilerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoiler_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBoilerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoilerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBooleanClippingResult_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Operator", new named_type(IFC4X3_RC2_IfcBooleanOperator_type), false));
        attributes.push_back(new attribute("FirstOperand", new named_type(IFC4X3_RC2_IfcBooleanOperand_type), false));
        attributes.push_back(new attribute("SecondOperand", new named_type(IFC4X3_RC2_IfcBooleanOperand_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBooleanResult_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBorehole_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcBoundaryCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoundaryCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("TranslationalStiffnessByLengthX", new named_type(IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("TranslationalStiffnessByLengthY", new named_type(IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("TranslationalStiffnessByLengthZ", new named_type(IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("RotationalStiffnessByLengthX", new named_type(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("RotationalStiffnessByLengthY", new named_type(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("RotationalStiffnessByLengthZ", new named_type(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoundaryEdgeCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("TranslationalStiffnessByAreaX", new named_type(IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("TranslationalStiffnessByAreaY", new named_type(IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type), true));
        attributes.push_back(new attribute("TranslationalStiffnessByAreaZ", new named_type(IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoundaryFaceCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("TranslationalStiffnessX", new named_type(IFC4X3_RC2_IfcTranslationalStiffnessSelect_type), true));
        attributes.push_back(new attribute("TranslationalStiffnessY", new named_type(IFC4X3_RC2_IfcTranslationalStiffnessSelect_type), true));
        attributes.push_back(new attribute("TranslationalStiffnessZ", new named_type(IFC4X3_RC2_IfcTranslationalStiffnessSelect_type), true));
        attributes.push_back(new attribute("RotationalStiffnessX", new named_type(IFC4X3_RC2_IfcRotationalStiffnessSelect_type), true));
        attributes.push_back(new attribute("RotationalStiffnessY", new named_type(IFC4X3_RC2_IfcRotationalStiffnessSelect_type), true));
        attributes.push_back(new attribute("RotationalStiffnessZ", new named_type(IFC4X3_RC2_IfcRotationalStiffnessSelect_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoundaryNodeCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("WarpingStiffness", new named_type(IFC4X3_RC2_IfcWarpingStiffnessSelect_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcBoundedCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcBoundedSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Corner", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), false));
        attributes.push_back(new attribute("XDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("YDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("ZDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoundingBox_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Enclosure", new named_type(IFC4X3_RC2_IfcBoundingBox_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBoxedHalfSpace_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBridgeTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBridge_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBridgePart_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("ElevationOfRefHeight", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("ElevationOfTerrain", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("BuildingAddress", new named_type(IFC4X3_RC2_IfcPostalAddress_type), true));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuilding_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuildingElementPart_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuildingElementPartType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuildingElementProxy_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuildingElementProxyType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Elevation", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuildingStorey_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBuildingSystemTypeEnum_type), true));
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuildingSystem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuiltElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuiltElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBuiltSystemTypeEnum_type), true));
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBuiltSystem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBurnerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBurner_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcBurnerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcBurnerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Width", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("WallThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Girth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("InternalFilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableCarrierFitting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableCarrierFittingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableCarrierSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableCarrierSegmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableFittingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableFitting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableFittingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableFittingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableSegmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCableSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCableSegmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCaissonFoundation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCaissonFoundationType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Coordinates", new aggregation_type(aggregation_type::list_type, 1, 3, new named_type(IFC4X3_RC2_IfcLengthMeasure_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcCartesianPoint_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcCartesianPointList_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("CoordList", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 2, 2, new named_type(IFC4X3_RC2_IfcLengthMeasure_type))), false));
        attributes.push_back(new attribute("TagList", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianPointList2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("CoordList", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcLengthMeasure_type))), false));
        attributes.push_back(new attribute("TagList", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianPointList3D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Axis1", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        attributes.push_back(new attribute("Axis2", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        attributes.push_back(new attribute("LocalOrigin", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), false));
        attributes.push_back(new attribute("Scale", new named_type(IFC4X3_RC2_IfcReal_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianTransformationOperator_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianTransformationOperator2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Scale2", new named_type(IFC4X3_RC2_IfcReal_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Axis3", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianTransformationOperator3D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Scale2", new named_type(IFC4X3_RC2_IfcReal_type), true));
        attributes.push_back(new attribute("Scale3", new named_type(IFC4X3_RC2_IfcReal_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Thickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCenterLineProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcChillerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcChiller_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcChillerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcChillerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcChimneyTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcChimney_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcChimneyTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcChimneyType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCircle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("WallThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCircleHollowProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCircleProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("IsCCW", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCircularArcSegment2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCivilElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCivilElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("Source", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Edition", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("EditionDate", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Location", new named_type(IFC4X3_RC2_IfcURIReference_type), true));
        attributes.push_back(new attribute("ReferenceTokens", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcIdentifier_type)), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcClassification_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("ReferencedSource", new named_type(IFC4X3_RC2_IfcClassificationReferenceSelect_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Sort", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcClassificationReference_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcClosedShell_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        attributes.push_back(new attribute("ClothoidConstant", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcClothoid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCoilTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoil_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCoilTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoilType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Red", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), false));
        attributes.push_back(new attribute("Green", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), false));
        attributes.push_back(new attribute("Blue", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcColourRgb_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ColourList", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type))), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcColourRgbList_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcColourSpecification_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcColumnTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcColumn_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcColumnStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcColumnTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcColumnType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCommunicationsAppliance_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCommunicationsApplianceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("UsageName", new named_type(IFC4X3_RC2_IfcIdentifier_type), false));
        attributes.push_back(new attribute("HasProperties", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcProperty_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcComplexProperty_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("UsageName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("TemplateType", new named_type(IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type), true));
        attributes.push_back(new attribute("HasPropertyTemplates", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPropertyTemplate_type)), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcComplexPropertyTemplate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcSegment_type)), false));
        attributes.push_back(new attribute("SelfIntersect", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCompositeCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCompositeCurveOnSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SameSense", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("ParentCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCompositeCurveSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Profiles", new aggregation_type(aggregation_type::set_type, 2, -1, new named_type(IFC4X3_RC2_IfcProfileDef_type)), false));
        attributes.push_back(new attribute("Label", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCompositeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCompressorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCompressor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCompressorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCompressorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCondenserTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCondenser_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCondenserTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCondenserType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcConic_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("CfsFaces", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcFace_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcConnectedFaceSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("CurveOnRelatingElement", new named_type(IFC4X3_RC2_IfcCurveOrEdgeCurve_type), false));
        attributes.push_back(new attribute("CurveOnRelatedElement", new named_type(IFC4X3_RC2_IfcCurveOrEdgeCurve_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConnectionCurveGeometry_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcConnectionGeometry_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("EccentricityInX", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("EccentricityInY", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("EccentricityInZ", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConnectionPointEccentricity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PointOnRelatingElement", new named_type(IFC4X3_RC2_IfcPointOrVertexPoint_type), false));
        attributes.push_back(new attribute("PointOnRelatedElement", new named_type(IFC4X3_RC2_IfcPointOrVertexPoint_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConnectionPointGeometry_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SurfaceOnRelatingElement", new named_type(IFC4X3_RC2_IfcSurfaceOrFaceSurface_type), false));
        attributes.push_back(new attribute("SurfaceOnRelatedElement", new named_type(IFC4X3_RC2_IfcSurfaceOrFaceSurface_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConnectionSurfaceGeometry_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("VolumeOnRelatingElement", new named_type(IFC4X3_RC2_IfcSolidOrShell_type), false));
        attributes.push_back(new attribute("VolumeOnRelatedElement", new named_type(IFC4X3_RC2_IfcSolidOrShell_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConnectionVolumeGeometry_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("ConstraintGrade", new named_type(IFC4X3_RC2_IfcConstraintEnum_type), false));
        attributes.push_back(new attribute("ConstraintSource", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("CreatingActor", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("CreationTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("UserDefinedGrade", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstraint_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionEquipmentResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionEquipmentResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionMaterialResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionMaterialResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionProductResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionProductResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Usage", new named_type(IFC4X3_RC2_IfcResourceTime_type), true));
        attributes.push_back(new attribute("BaseCosts", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAppliedValue_type)), true));
        attributes.push_back(new attribute("BaseQuantity", new named_type(IFC4X3_RC2_IfcPhysicalQuantity_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("BaseCosts", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAppliedValue_type)), true));
        attributes.push_back(new attribute("BaseQuantity", new named_type(IFC4X3_RC2_IfcPhysicalQuantity_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConstructionResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("ObjectType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Phase", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("RepresentationContexts", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcRepresentationContext_type)), true));
        attributes.push_back(new attribute("UnitsInContext", new named_type(IFC4X3_RC2_IfcUnitAssignment_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcContext_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcContextDependentUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcControl_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcControllerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcController_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcControllerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcControllerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("ConversionFactor", new named_type(IFC4X3_RC2_IfcMeasureWithUnit_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConversionBasedUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ConversionOffset", new named_type(IFC4X3_RC2_IfcReal_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConveyorSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcConveyorSegmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCooledBeamTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCooledBeam_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCooledBeamTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCooledBeamType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCoolingTowerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoolingTower_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCoolingTowerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoolingTowerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SourceCRS", new named_type(IFC4X3_RC2_IfcCoordinateReferenceSystemSelect_type), false));
        attributes.push_back(new attribute("TargetCRS", new named_type(IFC4X3_RC2_IfcCoordinateReferenceSystem_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoordinateOperation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("GeodeticDatum", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("VerticalDatum", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoordinateReferenceSystem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCostItemTypeEnum_type), true));
        attributes.push_back(new attribute("CostValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcCostValue_type)), true));
        attributes.push_back(new attribute("CostQuantities", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPhysicalQuantity_type)), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCostItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCostScheduleTypeEnum_type), true));
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("SubmittedOn", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("UpdateDate", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCostSchedule_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCostValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCourseTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCourse_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCourseTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCourseType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCoveringTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCovering_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCoveringTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCoveringType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCrewResourceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCrewResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCrewResourceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCrewResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcCsgPrimitive3D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("TreeRootExpression", new named_type(IFC4X3_RC2_IfcCsgSelect_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcCsgSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("RelatingMonetaryUnit", new named_type(IFC4X3_RC2_IfcMonetaryUnit_type), false));
        attributes.push_back(new attribute("RelatedMonetaryUnit", new named_type(IFC4X3_RC2_IfcMonetaryUnit_type), false));
        attributes.push_back(new attribute("ExchangeRate", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), false));
        attributes.push_back(new attribute("RateDateTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("RateSource", new named_type(IFC4X3_RC2_IfcLibraryInformation_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurrencyRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCurtainWallTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurtainWall_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcCurtainWallTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurtainWallType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("BasisSurface", new named_type(IFC4X3_RC2_IfcPlane_type), false));
        attributes.push_back(new attribute("OuterBoundary", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("InnerBoundaries", new aggregation_type(aggregation_type::set_type, 0, -1, new named_type(IFC4X3_RC2_IfcCurve_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveBoundedPlane_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("BasisSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        attributes.push_back(new attribute("Boundaries", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcBoundaryCurve_type)), false));
        attributes.push_back(new attribute("ImplicitOuter", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveBoundedSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("StartPlacement", new named_type(IFC4X3_RC2_IfcPlacement_type), false));
        attributes.push_back(new attribute("SegmentLength", new named_type(IFC4X3_RC2_IfcCurveMeasureSelect_type), false));
        attributes.push_back(new attribute("ParentCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("StartPoint", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), false));
        attributes.push_back(new attribute("StartDirection", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), false));
        attributes.push_back(new attribute("SegmentLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveSegment2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("CurveFont", new named_type(IFC4X3_RC2_IfcCurveFontOrScaledCurveFontSelect_type), true));
        attributes.push_back(new attribute("CurveWidth", new named_type(IFC4X3_RC2_IfcSizeSelect_type), true));
        attributes.push_back(new attribute("CurveColour", new named_type(IFC4X3_RC2_IfcColour_type), true));
        attributes.push_back(new attribute("ModelOrDraughting", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("PatternList", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcCurveStyleFontPattern_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveStyleFont_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("CurveFont", new named_type(IFC4X3_RC2_IfcCurveStyleFontSelect_type), false));
        attributes.push_back(new attribute("CurveFontScaling", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveStyleFontAndScaling_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("VisibleSegmentLength", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("InvisibleSegmentLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCurveStyleFontPattern_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcCylindricalSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDamperTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDamper_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDamperTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDamperType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDeepFoundation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDeepFoundationType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("ParentProfile", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        attributes.push_back(new attribute("Operator", new named_type(IFC4X3_RC2_IfcCartesianTransformationOperator2D_type), false));
        attributes.push_back(new attribute("Label", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDerivedProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Elements", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDerivedUnitElement_type)), false));
        attributes.push_back(new attribute("UnitType", new named_type(IFC4X3_RC2_IfcDerivedUnitEnum_type), false));
        attributes.push_back(new attribute("UserDefinedType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDerivedUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcNamedUnit_type), false));
        attributes.push_back(new attribute("Exponent", new simple_type(simple_type::integer_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDerivedUnitElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("LengthExponent", new simple_type(simple_type::integer_type), false));
        attributes.push_back(new attribute("MassExponent", new simple_type(simple_type::integer_type), false));
        attributes.push_back(new attribute("TimeExponent", new simple_type(simple_type::integer_type), false));
        attributes.push_back(new attribute("ElectricCurrentExponent", new simple_type(simple_type::integer_type), false));
        attributes.push_back(new attribute("ThermodynamicTemperatureExponent", new simple_type(simple_type::integer_type), false));
        attributes.push_back(new attribute("AmountOfSubstanceExponent", new simple_type(simple_type::integer_type), false));
        attributes.push_back(new attribute("LuminousIntensityExponent", new simple_type(simple_type::integer_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDimensionalExponents_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("DirectionRatios", new aggregation_type(aggregation_type::list_type, 2, 3, new named_type(IFC4X3_RC2_IfcReal_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcDirection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Directrix", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("StartParam", new named_type(IFC4X3_RC2_IfcCurveMeasureSelect_type), true));
        attributes.push_back(new attribute("EndParam", new named_type(IFC4X3_RC2_IfcCurveMeasureSelect_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Directrix", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("StartDistance", new named_type(IFC4X3_RC2_IfcPointByDistanceExpression_type), true));
        attributes.push_back(new attribute("EndDistance", new named_type(IFC4X3_RC2_IfcPointByDistanceExpression_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDiscreteAccessory_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDiscreteAccessoryType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDistributionBoardTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionBoard_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDistributionBoardTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionBoardType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionChamberElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionChamberElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionCircuit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionControlElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionControlElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionFlowElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionFlowElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("FlowDirection", new named_type(IFC4X3_RC2_IfcFlowDirectionEnum_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDistributionPortTypeEnum_type), true));
        attributes.push_back(new attribute("SystemType", new named_type(IFC4X3_RC2_IfcDistributionSystemEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionPort_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDistributionSystemEnum_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDistributionSystem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(17);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), false));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Location", new named_type(IFC4X3_RC2_IfcURIReference_type), true));
        attributes.push_back(new attribute("Purpose", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("IntendedUse", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Scope", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Revision", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("DocumentOwner", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("Editors", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcActorSelect_type)), true));
        attributes.push_back(new attribute("CreationTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("LastRevisionTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ElectronicFormat", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("ValidFrom", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("ValidUntil", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("Confidentiality", new named_type(IFC4X3_RC2_IfcDocumentConfidentialityEnum_type), true));
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcDocumentStatusEnum_type), true));
        std::vector<bool> derived; derived.reserve(17);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDocumentInformation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("RelatingDocument", new named_type(IFC4X3_RC2_IfcDocumentInformation_type), false));
        attributes.push_back(new attribute("RelatedDocuments", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDocumentInformation_type)), false));
        attributes.push_back(new attribute("RelationshipType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDocumentInformationRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("ReferencedDocument", new named_type(IFC4X3_RC2_IfcDocumentInformation_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDocumentReference_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("OverallHeight", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("OverallWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDoorTypeEnum_type), true));
        attributes.push_back(new attribute("OperationType", new named_type(IFC4X3_RC2_IfcDoorTypeOperationEnum_type), true));
        attributes.push_back(new attribute("UserDefinedOperationType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDoor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(13);
        attributes.push_back(new attribute("LiningDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("LiningThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("ThresholdDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("ThresholdThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("TransomThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("TransomOffset", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("LiningOffset", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("ThresholdOffset", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("CasingThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("CasingDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("ShapeAspectStyle", new named_type(IFC4X3_RC2_IfcShapeAspect_type), true));
        attributes.push_back(new attribute("LiningToPanelOffsetX", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("LiningToPanelOffsetY", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(17);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDoorLiningProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("PanelDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PanelOperation", new named_type(IFC4X3_RC2_IfcDoorPanelOperationEnum_type), false));
        attributes.push_back(new attribute("PanelWidth", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("PanelPosition", new named_type(IFC4X3_RC2_IfcDoorPanelPositionEnum_type), false));
        attributes.push_back(new attribute("ShapeAspectStyle", new named_type(IFC4X3_RC2_IfcShapeAspect_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDoorPanelProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDoorStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("OperationType", new named_type(IFC4X3_RC2_IfcDoorStyleOperationEnum_type), false));
        attributes.push_back(new attribute("ConstructionType", new named_type(IFC4X3_RC2_IfcDoorStyleConstructionEnum_type), false));
        attributes.push_back(new attribute("ParameterTakesPrecedence", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("Sizeable", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDoorStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDoorTypeEnum_type), false));
        attributes.push_back(new attribute("OperationType", new named_type(IFC4X3_RC2_IfcDoorTypeOperationEnum_type), false));
        attributes.push_back(new attribute("ParameterTakesPrecedence", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("UserDefinedOperationType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDoorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcDraughtingPreDefinedColour_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDuctFittingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDuctFitting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDuctFittingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDuctFittingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDuctSegmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDuctSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDuctSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDuctSegmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDuctSilencerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDuctSilencer_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcDuctSilencerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcDuctSilencerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEarthworksCutTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEarthworksCut_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEarthworksElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEarthworksFillTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEarthworksFill_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("EdgeStart", new named_type(IFC4X3_RC2_IfcVertex_type), false));
        attributes.push_back(new attribute("EdgeEnd", new named_type(IFC4X3_RC2_IfcVertex_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEdge_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("EdgeGeometry", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("SameSense", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEdgeCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("EdgeList", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcOrientedEdge_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcEdgeLoop_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricApplianceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricAppliance_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricApplianceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricApplianceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricDistributionBoard_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricDistributionBoardType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricFlowStorageDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricGenerator_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricGeneratorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricMotorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricMotor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricMotorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricMotorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricTimeControl_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElectricTimeControlType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Tag", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("AssemblyPlace", new named_type(IFC4X3_RC2_IfcAssemblyPlaceEnum_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElementAssemblyTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElementAssembly_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcElementAssemblyTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElementAssemblyType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElementComponent_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElementComponentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("MethodOfMeasurement", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Quantities", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPhysicalQuantity_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElementQuantity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ElementType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcElementarySurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SemiAxis1", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("SemiAxis2", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEllipse_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SemiAxis1", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("SemiAxis2", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEllipseProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEnergyConversionDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEnergyConversionDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEngineTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEngine_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEngineTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEngineType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEvaporativeCooler_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEvaporativeCoolerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEvaporatorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEvaporator_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEvaporatorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEvaporatorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEventTypeEnum_type), true));
        attributes.push_back(new attribute("EventTriggerType", new named_type(IFC4X3_RC2_IfcEventTriggerTypeEnum_type), true));
        attributes.push_back(new attribute("UserDefinedEventTriggerType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("EventOccurenceTime", new named_type(IFC4X3_RC2_IfcEventTime_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEvent_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("ActualDate", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("EarlyDate", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("LateDate", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ScheduleDate", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEventTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcEventTypeEnum_type), false));
        attributes.push_back(new attribute("EventTriggerType", new named_type(IFC4X3_RC2_IfcEventTriggerTypeEnum_type), false));
        attributes.push_back(new attribute("UserDefinedEventTriggerType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcEventType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Properties", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcProperty_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExtendedProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcExternalInformation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Location", new named_type(IFC4X3_RC2_IfcURIReference_type), true));
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternalReference_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingReference", new named_type(IFC4X3_RC2_IfcExternalReference_type), false));
        attributes.push_back(new attribute("RelatedResourceObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcResourceObjectSelect_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternalReferenceRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternalSpatialElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternalSpatialStructureElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExternallyDefinedTextFont_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ExtrudedDirection", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExtrudedAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("EndSweptArea", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Bounds", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcFaceBound_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcFace_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("FbsmFaces", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcConnectedFaceSet_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcFaceBasedSurfaceModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Bound", new named_type(IFC4X3_RC2_IfcLoop_type), false));
        attributes.push_back(new attribute("Orientation", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFaceBound_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFaceOuterBound_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("FaceSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        attributes.push_back(new attribute("SameSense", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFaceSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcFacetedBrep_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Voids", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcClosedShell_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFacetedBrepWithVoids_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFacility_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFacilityPartTypeSelect_type), false));
        attributes.push_back(new attribute("UsageType", new named_type(IFC4X3_RC2_IfcFacilityUsageEnum_type), false));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFacilityPart_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("TensionFailureX", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("TensionFailureY", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("TensionFailureZ", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("CompressionFailureX", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("CompressionFailureY", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("CompressionFailureZ", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFailureConnectionCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFanTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFan_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFanTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFanType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFastenerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFastener_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFastenerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFastenerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFeatureElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFeatureElementAddition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFeatureElementSubtraction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("FillStyles", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcFillStyleSelect_type)), false));
        attributes.push_back(new attribute("ModelOrDraughting", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFillAreaStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("HatchLineAppearance", new named_type(IFC4X3_RC2_IfcCurveStyle_type), false));
        attributes.push_back(new attribute("StartOfNextHatchLine", new named_type(IFC4X3_RC2_IfcHatchLineDistanceSelect_type), false));
        attributes.push_back(new attribute("PointOfReferenceHatchLine", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), true));
        attributes.push_back(new attribute("PatternStart", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), true));
        attributes.push_back(new attribute("HatchLineAngle", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFillAreaStyleHatching_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("TilingPattern", new aggregation_type(aggregation_type::list_type, 2, 2, new named_type(IFC4X3_RC2_IfcVector_type)), false));
        attributes.push_back(new attribute("Tiles", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcStyledItem_type)), false));
        attributes.push_back(new attribute("TilingScale", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFillAreaStyleTiles_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFilterTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFilter_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFilterTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFilterType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFireSuppressionTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFireSuppressionTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("FixedReference", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowController_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowControllerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowFitting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowFittingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowInstrument_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowInstrumentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFlowMeterTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowMeter_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFlowMeterTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowMeterType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowMovingDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowMovingDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowSegmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowStorageDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowStorageDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowTreatmentDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFlowTreatmentDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFootingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFooting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFootingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFootingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFurnishingElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFurnishingElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFurnitureTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFurniture_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("AssemblyPlace", new named_type(IFC4X3_RC2_IfcAssemblyPlaceEnum_type), false));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcFurnitureTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcFurnitureType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcGeographicElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeographicElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcGeographicElementTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeographicElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcGeometricCurveSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("CoordinateSpaceDimension", new named_type(IFC4X3_RC2_IfcDimensionCount_type), false));
        attributes.push_back(new attribute("Precision", new named_type(IFC4X3_RC2_IfcReal_type), true));
        attributes.push_back(new attribute("WorldCoordinateSystem", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        attributes.push_back(new attribute("TrueNorth", new named_type(IFC4X3_RC2_IfcDirection_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeometricRepresentationContext_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcGeometricRepresentationItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("ParentContext", new named_type(IFC4X3_RC2_IfcGeometricRepresentationContext_type), false));
        attributes.push_back(new attribute("TargetScale", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), true));
        attributes.push_back(new attribute("TargetView", new named_type(IFC4X3_RC2_IfcGeometricProjectionEnum_type), false));
        attributes.push_back(new attribute("UserDefinedTargetView", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(true); derived.push_back(true); derived.push_back(true); derived.push_back(true); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeometricRepresentationSubContext_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Elements", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcGeometricSetSelect_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcGeometricSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeomodel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeoslice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeotechnicalAssembly_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeotechnicalElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGeotechnicalStratum_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("BaseCurve", new named_type(IFC4X3_RC2_IfcBoundedCurve_type), false));
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcCurveSegment_type)), false));
        attributes.push_back(new attribute("EndPoint", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGradientCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("UAxes", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcGridAxis_type)), false));
        attributes.push_back(new attribute("VAxes", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcGridAxis_type)), false));
        attributes.push_back(new attribute("WAxes", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcGridAxis_type)), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcGridTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGrid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("AxisTag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("AxisCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("SameSense", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGridAxis_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PlacementLocation", new named_type(IFC4X3_RC2_IfcVirtualGridIntersection_type), false));
        attributes.push_back(new attribute("PlacementRefDirection", new named_type(IFC4X3_RC2_IfcGridPlacementDirectionSelect_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGridPlacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcGroup_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("BaseSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        attributes.push_back(new attribute("AgreementFlag", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcHalfSpaceSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcHeatExchangerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcHeatExchanger_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcHeatExchangerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcHeatExchangerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcHumidifierTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcHumidifier_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcHumidifierTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcHumidifierType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("OverallWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("OverallDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("WebThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("FlangeEdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("FlangeSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("URLReference", new named_type(IFC4X3_RC2_IfcURIReference_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcImageTexture_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcImpactProtectionDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcImpactProtectionDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("FixedAxisVertical", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("Inclinating", new named_type(IFC4X3_RC2_IfcAxisLateralInclination_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("MappedTo", new named_type(IFC4X3_RC2_IfcTessellatedFaceSet_type), false));
        attributes.push_back(new attribute("Opacity", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("Colours", new named_type(IFC4X3_RC2_IfcColourRgbList_type), false));
        attributes.push_back(new attribute("ColourIndex", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPositiveInteger_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIndexedColourMap_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Points", new named_type(IFC4X3_RC2_IfcCartesianPointList_type), false));
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcSegmentIndexSelect_type)), true));
        attributes.push_back(new attribute("SelfIntersect", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIndexedPolyCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("CoordIndex", new aggregation_type(aggregation_type::list_type, 3, -1, new named_type(IFC4X3_RC2_IfcPositiveInteger_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcIndexedPolygonalFace_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("InnerCoordIndices", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 3, -1, new named_type(IFC4X3_RC2_IfcPositiveInteger_type))), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("MappedTo", new named_type(IFC4X3_RC2_IfcTessellatedFaceSet_type), false));
        attributes.push_back(new attribute("TexCoords", new named_type(IFC4X3_RC2_IfcTextureVertexList_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIndexedTextureMap_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("TexCoordIndex", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcPositiveInteger_type))), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIndexedTriangleTextureMap_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcInterceptorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcInterceptor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcInterceptorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcInterceptorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIntersectionCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcInventoryTypeEnum_type), true));
        attributes.push_back(new attribute("Jurisdiction", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("ResponsiblePersons", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPerson_type)), true));
        attributes.push_back(new attribute("LastUpdateDate", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("CurrentValue", new named_type(IFC4X3_RC2_IfcCostValue_type), true));
        attributes.push_back(new attribute("OriginalValue", new named_type(IFC4X3_RC2_IfcCostValue_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcInventory_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Values", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcIrregularTimeSeriesValue_type)), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIrregularTimeSeries_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("TimeStamp", new named_type(IFC4X3_RC2_IfcDateTime_type), false));
        attributes.push_back(new attribute("ListValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcIrregularTimeSeriesValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcJunctionBoxTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcJunctionBox_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcJunctionBoxTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcJunctionBoxType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Mountable", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcKerb_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Mountable", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcKerbType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Width", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("Thickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("EdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("LegSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLaborResourceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLaborResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLaborResourceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLaborResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("LagValue", new named_type(IFC4X3_RC2_IfcTimeOrRatioSelect_type), false));
        attributes.push_back(new attribute("DurationType", new named_type(IFC4X3_RC2_IfcTaskDurationEnum_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLagTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLampTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLamp_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLampTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLampType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Version", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Publisher", new named_type(IFC4X3_RC2_IfcActorSelect_type), true));
        attributes.push_back(new attribute("VersionDate", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("Location", new named_type(IFC4X3_RC2_IfcURIReference_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLibraryInformation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Language", new named_type(IFC4X3_RC2_IfcLanguageId_type), true));
        attributes.push_back(new attribute("ReferencedLibrary", new named_type(IFC4X3_RC2_IfcLibraryInformation_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLibraryReference_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("MainPlaneAngle", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), false));
        attributes.push_back(new attribute("SecondaryPlaneAngle", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type)), false));
        attributes.push_back(new attribute("LuminousIntensity", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightDistributionData_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLightFixtureTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightFixture_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLightFixtureTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightFixtureType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("LightDistributionCurve", new named_type(IFC4X3_RC2_IfcLightDistributionCurveEnum_type), false));
        attributes.push_back(new attribute("DistributionData", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLightDistributionData_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightIntensityDistribution_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("LightColour", new named_type(IFC4X3_RC2_IfcColourRgb_type), false));
        attributes.push_back(new attribute("AmbientIntensity", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("Intensity", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightSource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightSourceAmbient_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Orientation", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightSourceDirectional_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), false));
        attributes.push_back(new attribute("ColourAppearance", new named_type(IFC4X3_RC2_IfcColourRgb_type), true));
        attributes.push_back(new attribute("ColourTemperature", new named_type(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type), false));
        attributes.push_back(new attribute("LuminousFlux", new named_type(IFC4X3_RC2_IfcLuminousFluxMeasure_type), false));
        attributes.push_back(new attribute("LightEmissionSource", new named_type(IFC4X3_RC2_IfcLightEmissionSourceEnum_type), false));
        attributes.push_back(new attribute("LightDistributionDataSource", new named_type(IFC4X3_RC2_IfcLightDistributionDataSourceSelect_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightSourceGoniometric_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), false));
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("ConstantAttenuation", new named_type(IFC4X3_RC2_IfcReal_type), false));
        attributes.push_back(new attribute("DistanceAttenuation", new named_type(IFC4X3_RC2_IfcReal_type), false));
        attributes.push_back(new attribute("QuadricAttenuation", new named_type(IFC4X3_RC2_IfcReal_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightSourcePositional_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Orientation", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        attributes.push_back(new attribute("ConcentrationExponent", new named_type(IFC4X3_RC2_IfcReal_type), true));
        attributes.push_back(new attribute("SpreadAngle", new named_type(IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type), false));
        attributes.push_back(new attribute("BeamWidthAngle", new named_type(IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type), false));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLightSourceSpot_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Pnt", new named_type(IFC4X3_RC2_IfcCartesianPoint_type), false));
        attributes.push_back(new attribute("Dir", new named_type(IFC4X3_RC2_IfcVector_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLine_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLineSegment2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Directrix", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("Inclinating", new named_type(IFC4X3_RC2_IfcAxisLateralInclination_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLinearAxisWithInclination_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLinearElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("PlacementMeasuredAlong", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("Distance", new named_type(IFC4X3_RC2_IfcPointByDistanceExpression_type), false));
        attributes.push_back(new attribute("RelativePlacement", new named_type(IFC4X3_RC2_IfcAxis2PlacementLinear_type), false));
        attributes.push_back(new attribute("CartesianPosition", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLinearPlacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Inclinating", new named_type(IFC4X3_RC2_IfcAxisLateralInclination_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLinearPlacementWithInclination_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLinearPositioningElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Span", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLinearSpanPlacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLiquidTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLiquidTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelativePlacement", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcLocalPlacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcLoop_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Outer", new named_type(IFC4X3_RC2_IfcClosedShell_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcManifoldSolidBrep_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Eastings", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("Northings", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("OrthogonalHeight", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("XAxisAbscissa", new named_type(IFC4X3_RC2_IfcReal_type), true));
        attributes.push_back(new attribute("XAxisOrdinate", new named_type(IFC4X3_RC2_IfcReal_type), true));
        attributes.push_back(new attribute("Scale", new named_type(IFC4X3_RC2_IfcReal_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMapConversion_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("MappingSource", new named_type(IFC4X3_RC2_IfcRepresentationMap_type), false));
        attributes.push_back(new attribute("MappingTarget", new named_type(IFC4X3_RC2_IfcCartesianTransformationOperator_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMappedItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMarineFacilityTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMarineFacility_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Category", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterial_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("MaterialClassifications", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcClassificationSelect_type)), false));
        attributes.push_back(new attribute("ClassifiedMaterial", new named_type(IFC4X3_RC2_IfcMaterial_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialClassificationRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Material", new named_type(IFC4X3_RC2_IfcMaterial_type), false));
        attributes.push_back(new attribute("Fraction", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("Category", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialConstituent_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("MaterialConstituents", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcMaterialConstituent_type)), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialConstituentSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcMaterialDefinition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RepresentedMaterial", new named_type(IFC4X3_RC2_IfcMaterial_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("Material", new named_type(IFC4X3_RC2_IfcMaterial_type), true));
        attributes.push_back(new attribute("LayerThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), false));
        attributes.push_back(new attribute("IsVentilated", new named_type(IFC4X3_RC2_IfcLogical_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Category", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Priority", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialLayer_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("MaterialLayers", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcMaterialLayer_type)), false));
        attributes.push_back(new attribute("LayerSetName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialLayerSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("ForLayerSet", new named_type(IFC4X3_RC2_IfcMaterialLayerSet_type), false));
        attributes.push_back(new attribute("LayerSetDirection", new named_type(IFC4X3_RC2_IfcLayerSetDirectionEnum_type), false));
        attributes.push_back(new attribute("DirectionSense", new named_type(IFC4X3_RC2_IfcDirectionSenseEnum_type), false));
        attributes.push_back(new attribute("OffsetFromReferenceLine", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("ReferenceExtent", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialLayerSetUsage_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("OffsetDirection", new named_type(IFC4X3_RC2_IfcLayerSetDirectionEnum_type), false));
        attributes.push_back(new attribute("OffsetValues", new aggregation_type(aggregation_type::array_type, 1, 2, new named_type(IFC4X3_RC2_IfcLengthMeasure_type)), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialLayerWithOffsets_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Materials", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcMaterial_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcMaterialList_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Material", new named_type(IFC4X3_RC2_IfcMaterial_type), true));
        attributes.push_back(new attribute("Profile", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        attributes.push_back(new attribute("Priority", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("Category", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialProfile_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("MaterialProfiles", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcMaterialProfile_type)), false));
        attributes.push_back(new attribute("CompositeProfile", new named_type(IFC4X3_RC2_IfcCompositeProfileDef_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialProfileSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("ForProfileSet", new named_type(IFC4X3_RC2_IfcMaterialProfileSet_type), false));
        attributes.push_back(new attribute("CardinalPoint", new named_type(IFC4X3_RC2_IfcCardinalPointReference_type), true));
        attributes.push_back(new attribute("ReferenceExtent", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialProfileSetUsage_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ForProfileEndSet", new named_type(IFC4X3_RC2_IfcMaterialProfileSet_type), false));
        attributes.push_back(new attribute("CardinalEndPoint", new named_type(IFC4X3_RC2_IfcCardinalPointReference_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("OffsetValues", new aggregation_type(aggregation_type::array_type, 1, 2, new named_type(IFC4X3_RC2_IfcLengthMeasure_type)), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialProfileWithOffsets_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Material", new named_type(IFC4X3_RC2_IfcMaterialDefinition_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("RelatingMaterial", new named_type(IFC4X3_RC2_IfcMaterial_type), false));
        attributes.push_back(new attribute("RelatedMaterials", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcMaterial_type)), false));
        attributes.push_back(new attribute("Expression", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMaterialRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcMaterialUsageDefinition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ValueComponent", new named_type(IFC4X3_RC2_IfcValue_type), false));
        attributes.push_back(new attribute("UnitComponent", new named_type(IFC4X3_RC2_IfcUnit_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMeasureWithUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("NominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("NominalLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMechanicalFastener_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type), false));
        attributes.push_back(new attribute("NominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("NominalLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMechanicalFastenerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMedicalDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMedicalDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMemberTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMember_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMemberStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMemberTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMemberType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Benchmark", new named_type(IFC4X3_RC2_IfcBenchmarkEnum_type), false));
        attributes.push_back(new attribute("ValueSource", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("DataValue", new named_type(IFC4X3_RC2_IfcMetricValueSelect_type), true));
        attributes.push_back(new attribute("ReferencePath", new named_type(IFC4X3_RC2_IfcReference_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMetric_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(true); derived.push_back(false);
        IFC4X3_RC2_IfcMirroredProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Currency", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcMonetaryUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMooringDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMooringDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMooringDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMooringDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMotorConnectionTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMotorConnection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcMotorConnectionTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcMotorConnectionType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Dimensions", new named_type(IFC4X3_RC2_IfcDimensionalExponents_type), false));
        attributes.push_back(new attribute("UnitType", new named_type(IFC4X3_RC2_IfcUnitEnum_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcNamedUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcNavigationElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcNavigationElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcNavigationElementTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcNavigationElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ObjectType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcObject_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcObjectDefinition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PlacementRelTo", new named_type(IFC4X3_RC2_IfcObjectPlacement_type), true));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcObjectPlacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("BenchmarkValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcConstraint_type)), true));
        attributes.push_back(new attribute("LogicalAggregator", new named_type(IFC4X3_RC2_IfcLogicalOperatorEnum_type), true));
        attributes.push_back(new attribute("ObjectiveQualifier", new named_type(IFC4X3_RC2_IfcObjectiveEnum_type), false));
        attributes.push_back(new attribute("UserDefinedQualifier", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcObjective_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcOccupantTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOccupant_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("BasisCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcOffsetCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Distance", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("SelfIntersect", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOffsetCurve2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Distance", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("SelfIntersect", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("RefDirection", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOffsetCurve3D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("OffsetValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPointByDistanceExpression_type)), false));
        attributes.push_back(new attribute("Tag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOffsetCurveByDistances_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("HorizontalWidths", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("Widths", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type)), false));
        attributes.push_back(new attribute("Slopes", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type)), false));
        attributes.push_back(new attribute("Tags", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOpenCrossProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcOpenShell_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcOpeningElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOpeningElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOpeningStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Roles", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcActorRole_type)), true));
        attributes.push_back(new attribute("Addresses", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAddress_type)), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOrganization_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingOrganization", new named_type(IFC4X3_RC2_IfcOrganization_type), false));
        attributes.push_back(new attribute("RelatedOrganizations", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcOrganization_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOrganizationRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("EdgeElement", new named_type(IFC4X3_RC2_IfcEdge_type), false));
        attributes.push_back(new attribute("Orientation", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(true); derived.push_back(true); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOrientedEdge_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOuterBoundaryCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcOutletTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOutlet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcOutletTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOutletType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("OwningUser", new named_type(IFC4X3_RC2_IfcPersonAndOrganization_type), false));
        attributes.push_back(new attribute("OwningApplication", new named_type(IFC4X3_RC2_IfcApplication_type), false));
        attributes.push_back(new attribute("State", new named_type(IFC4X3_RC2_IfcStateEnum_type), true));
        attributes.push_back(new attribute("ChangeAction", new named_type(IFC4X3_RC2_IfcChangeActionEnum_type), true));
        attributes.push_back(new attribute("LastModifiedDate", new named_type(IFC4X3_RC2_IfcTimeStamp_type), true));
        attributes.push_back(new attribute("LastModifyingUser", new named_type(IFC4X3_RC2_IfcPersonAndOrganization_type), true));
        attributes.push_back(new attribute("LastModifyingApplication", new named_type(IFC4X3_RC2_IfcApplication_type), true));
        attributes.push_back(new attribute("CreationDate", new named_type(IFC4X3_RC2_IfcTimeStamp_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcOwnerHistory_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement2D_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcParameterizedProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("EdgeList", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcOrientedEdge_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPath_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Flexible", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPavement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Flexible", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPavementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("BasisSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        attributes.push_back(new attribute("ReferenceCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPcurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("LifeCyclePhase", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPerformanceHistory_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("OperationType", new named_type(IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type), false));
        attributes.push_back(new attribute("PanelPosition", new named_type(IFC4X3_RC2_IfcWindowPanelPositionEnum_type), false));
        attributes.push_back(new attribute("FrameDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("FrameThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("ShapeAspectStyle", new named_type(IFC4X3_RC2_IfcShapeAspect_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPermeableCoveringProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPermitTypeEnum_type), true));
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPermit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("FamilyName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("GivenName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("MiddleNames", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("PrefixTitles", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("SuffixTitles", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("Roles", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcActorRole_type)), true));
        attributes.push_back(new attribute("Addresses", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcAddress_type)), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPerson_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("ThePerson", new named_type(IFC4X3_RC2_IfcPerson_type), false));
        attributes.push_back(new attribute("TheOrganization", new named_type(IFC4X3_RC2_IfcOrganization_type), false));
        attributes.push_back(new attribute("Roles", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcActorRole_type)), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPersonAndOrganization_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("HasQuantities", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPhysicalQuantity_type)), false));
        attributes.push_back(new attribute("Discrimination", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Quality", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Usage", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPhysicalComplexQuantity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPhysicalQuantity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcNamedUnit_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPhysicalSimpleQuantity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPileTypeEnum_type), true));
        attributes.push_back(new attribute("ConstructionType", new named_type(IFC4X3_RC2_IfcPileConstructionEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPile_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPileTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPileType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPipeFittingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPipeFitting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPipeFittingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPipeFittingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPipeSegmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPipeSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPipeSegmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPipeSegmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Width", new named_type(IFC4X3_RC2_IfcInteger_type), false));
        attributes.push_back(new attribute("Height", new named_type(IFC4X3_RC2_IfcInteger_type), false));
        attributes.push_back(new attribute("ColourComponents", new named_type(IFC4X3_RC2_IfcInteger_type), false));
        attributes.push_back(new attribute("Pixel", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcBinary_type)), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPixelTexture_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Location", new named_type(IFC4X3_RC2_IfcPoint_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPlacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Placement", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPlanarBox_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SizeInX", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("SizeInY", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPlanarExtent_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPlane_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPlant_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPlateTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPlate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPlateStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPlateTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPlateType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcPoint_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("DistanceAlong", new named_type(IFC4X3_RC2_IfcCurveMeasureSelect_type), false));
        attributes.push_back(new attribute("OffsetLateral", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("OffsetVertical", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("OffsetLongitudinal", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("BasisCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPointByDistanceExpression_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("BasisCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("PointParameter", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPointOnCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("BasisSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        attributes.push_back(new attribute("PointParameterU", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        attributes.push_back(new attribute("PointParameterV", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPointOnSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Polygon", new aggregation_type(aggregation_type::list_type, 3, -1, new named_type(IFC4X3_RC2_IfcCartesianPoint_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPolyLoop_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), false));
        attributes.push_back(new attribute("PolygonalBoundary", new named_type(IFC4X3_RC2_IfcBoundedCurve_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Closed", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("Faces", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcIndexedPolygonalFace_type)), false));
        attributes.push_back(new attribute("PnIndex", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPositiveInteger_type)), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPolygonalFaceSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Points", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcCartesianPoint_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPolyline_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPort_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPositioningElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("InternalLocation", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("AddressLines", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("PostalBox", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Town", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Region", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("PostalCode", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Country", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPostalAddress_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPreDefinedColour_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPreDefinedCurveFont_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPreDefinedItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcPreDefinedProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPreDefinedPropertySet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPreDefinedTextFont_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcPresentationItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("AssignedItems", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcLayeredItem_type)), false));
        attributes.push_back(new attribute("Identifier", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPresentationLayerAssignment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("LayerOn", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("LayerFrozen", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("LayerBlocked", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("LayerStyles", new aggregation_type(aggregation_type::set_type, 0, -1, new named_type(IFC4X3_RC2_IfcPresentationStyle_type)), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPresentationLayerWithStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPresentationStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Styles", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPresentationStyleSelect_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcPresentationStyleAssignment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProcedureTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProcedure_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProcedureTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProcedureType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProcess_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ObjectPlacement", new named_type(IFC4X3_RC2_IfcObjectPlacement_type), true));
        attributes.push_back(new attribute("Representation", new named_type(IFC4X3_RC2_IfcProductRepresentation_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProduct_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProductDefinitionShape_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Representations", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcRepresentation_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProductRepresentation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ProfileType", new named_type(IFC4X3_RC2_IfcProfileTypeEnum_type), false));
        attributes.push_back(new attribute("ProfileName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ProfileDefinition", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProfileProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProject_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProjectLibrary_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProjectOrderTypeEnum_type), true));
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProjectOrder_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("MapProjection", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("MapZone", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("MapUnit", new named_type(IFC4X3_RC2_IfcNamedUnit_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProjectedCRS_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProjectionElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProjectionElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcIdentifier_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProperty_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcPropertyAbstraction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("UpperBoundValue", new named_type(IFC4X3_RC2_IfcValue_type), true));
        attributes.push_back(new attribute("LowerBoundValue", new named_type(IFC4X3_RC2_IfcValue_type), true));
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        attributes.push_back(new attribute("SetPointValue", new named_type(IFC4X3_RC2_IfcValue_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyBoundedValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyDefinition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("DependingProperty", new named_type(IFC4X3_RC2_IfcProperty_type), false));
        attributes.push_back(new attribute("DependantProperty", new named_type(IFC4X3_RC2_IfcProperty_type), false));
        attributes.push_back(new attribute("Expression", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyDependencyRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("EnumerationValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), true));
        attributes.push_back(new attribute("EnumerationReference", new named_type(IFC4X3_RC2_IfcPropertyEnumeration_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyEnumeratedValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("EnumerationValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), false));
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyEnumeration_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ListValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), true));
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyListValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("UsageName", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("PropertyReference", new named_type(IFC4X3_RC2_IfcObjectReferenceSelect_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyReferenceValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("HasProperties", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcProperty_type)), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertySet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertySetDefinition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("TemplateType", new named_type(IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type), true));
        attributes.push_back(new attribute("ApplicableEntity", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("HasPropertyTemplates", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPropertyTemplate_type)), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertySetTemplate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("NominalValue", new named_type(IFC4X3_RC2_IfcValue_type), true));
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertySingleValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("DefiningValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), true));
        attributes.push_back(new attribute("DefinedValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), true));
        attributes.push_back(new attribute("Expression", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("DefiningUnit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        attributes.push_back(new attribute("DefinedUnit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        attributes.push_back(new attribute("CurveInterpolation", new named_type(IFC4X3_RC2_IfcCurveInterpolationEnum_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyTableValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyTemplate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPropertyTemplateDefinition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProtectiveDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProtectiveDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ProxyType", new named_type(IFC4X3_RC2_IfcObjectTypeEnum_type), false));
        attributes.push_back(new attribute("Tag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcProxy_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPumpTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPump_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcPumpTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcPumpType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("AreaValue", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), false));
        attributes.push_back(new attribute("Formula", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantityArea_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("CountValue", new named_type(IFC4X3_RC2_IfcCountMeasure_type), false));
        attributes.push_back(new attribute("Formula", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantityCount_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("LengthValue", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("Formula", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantityLength_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantitySet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("TimeValue", new named_type(IFC4X3_RC2_IfcTimeMeasure_type), false));
        attributes.push_back(new attribute("Formula", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantityTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("VolumeValue", new named_type(IFC4X3_RC2_IfcVolumeMeasure_type), false));
        attributes.push_back(new attribute("Formula", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantityVolume_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("WeightValue", new named_type(IFC4X3_RC2_IfcMassMeasure_type), false));
        attributes.push_back(new attribute("Formula", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcQuantityWeight_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRailTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRail_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRailTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRailType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRailingTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRailing_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRailingTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRailingType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRailway_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRampTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRamp_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRampFlightTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRampFlight_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRampFlightTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRampFlightType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRampTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRampType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("WeightsData", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcReal_type)), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("WeightsData", new aggregation_type(aggregation_type::list_type, 2, -1, new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcReal_type))), false));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("WallThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("InnerFilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("OuterFilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRectangleHollowProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("XDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("YDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRectangleProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("XLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("YLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Height", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRectangularPyramid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("BasisSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        attributes.push_back(new attribute("U1", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        attributes.push_back(new attribute("V1", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        attributes.push_back(new attribute("U2", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        attributes.push_back(new attribute("V2", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        attributes.push_back(new attribute("Usense", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("Vsense", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRectangularTrimmedSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("RecurrenceType", new named_type(IFC4X3_RC2_IfcRecurrenceTypeEnum_type), false));
        attributes.push_back(new attribute("DayComponent", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDayInMonthNumber_type)), true));
        attributes.push_back(new attribute("WeekdayComponent", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDayInWeekNumber_type)), true));
        attributes.push_back(new attribute("MonthComponent", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcMonthInYearNumber_type)), true));
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("Interval", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("Occurrences", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("TimePeriods", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcTimePeriod_type)), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRecurrencePattern_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("TypeIdentifier", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("AttributeIdentifier", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("InstanceName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("ListPositions", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), true));
        attributes.push_back(new attribute("InnerReference", new named_type(IFC4X3_RC2_IfcReference_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReference_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcReferentTypeEnum_type), true));
        attributes.push_back(new attribute("RestartDistance", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReferent_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("TimeStep", new named_type(IFC4X3_RC2_IfcTimeMeasure_type), false));
        attributes.push_back(new attribute("Values", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcTimeSeriesValue_type)), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRegularTimeSeries_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcedSoil_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("TotalCrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), false));
        attributes.push_back(new attribute("SteelGrade", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("BarSurface", new named_type(IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type), true));
        attributes.push_back(new attribute("EffectiveDepth", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("NominalBarDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("BarCount", new named_type(IFC4X3_RC2_IfcCountMeasure_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcementBarProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("DefinitionType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("ReinforcementSectionDefinitions", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcSectionReinforcementProperties_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcementDefinitionProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("NominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("CrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("BarLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcReinforcingBarTypeEnum_type), true));
        attributes.push_back(new attribute("BarSurface", new named_type(IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type), true));
        std::vector<bool> derived; derived.reserve(14);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcingBar_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcReinforcingBarTypeEnum_type), false));
        attributes.push_back(new attribute("NominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("CrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("BarLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("BarSurface", new named_type(IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type), true));
        attributes.push_back(new attribute("BendingShapeCode", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("BendingParameters", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcBendingParameterSelect_type)), true));
        std::vector<bool> derived; derived.reserve(16);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcingBarType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("SteelGrade", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcingElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcingElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(9);
        attributes.push_back(new attribute("MeshLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("MeshWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("LongitudinalBarNominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("TransverseBarNominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("LongitudinalBarCrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("TransverseBarCrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("LongitudinalBarSpacing", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("TransverseBarSpacing", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(18);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcingMesh_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(11);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type), false));
        attributes.push_back(new attribute("MeshLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("MeshWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("LongitudinalBarNominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("TransverseBarNominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("LongitudinalBarCrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("TransverseBarCrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("LongitudinalBarSpacing", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("TransverseBarSpacing", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("BendingShapeCode", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("BendingParameters", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcBendingParameterSelect_type)), true));
        std::vector<bool> derived; derived.reserve(20);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReinforcingMeshType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingObject", new named_type(IFC4X3_RC2_IfcObjectDefinition_type), false));
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcObjectDefinition_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAggregates_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcObjectDefinition_type)), false));
        attributes.push_back(new attribute("RelatedObjectsType", new named_type(IFC4X3_RC2_IfcObjectTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssigns_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingActor", new named_type(IFC4X3_RC2_IfcActor_type), false));
        attributes.push_back(new attribute("ActingRole", new named_type(IFC4X3_RC2_IfcActorRole_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToActor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingControl", new named_type(IFC4X3_RC2_IfcControl_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToControl_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingGroup", new named_type(IFC4X3_RC2_IfcGroup_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToGroup_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Factor", new named_type(IFC4X3_RC2_IfcRatioMeasure_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingProcess", new named_type(IFC4X3_RC2_IfcProcessSelect_type), false));
        attributes.push_back(new attribute("QuantityInProcess", new named_type(IFC4X3_RC2_IfcMeasureWithUnit_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToProcess_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingProduct", new named_type(IFC4X3_RC2_IfcProductSelect_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToProduct_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingResource", new named_type(IFC4X3_RC2_IfcResourceSelect_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssignsToResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDefinitionSelect_type)), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociates_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingApproval", new named_type(IFC4X3_RC2_IfcApproval_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesApproval_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingClassification", new named_type(IFC4X3_RC2_IfcClassificationSelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesClassification_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Intent", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("RelatingConstraint", new named_type(IFC4X3_RC2_IfcConstraint_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesConstraint_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingDocument", new named_type(IFC4X3_RC2_IfcDocumentSelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesDocument_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingLibrary", new named_type(IFC4X3_RC2_IfcLibrarySelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesLibrary_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingMaterial", new named_type(IFC4X3_RC2_IfcMaterialSelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesMaterial_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RelatingProfileDef", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelAssociatesProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnects_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("ConnectionGeometry", new named_type(IFC4X3_RC2_IfcConnectionGeometry_type), true));
        attributes.push_back(new attribute("RelatingElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        attributes.push_back(new attribute("RelatedElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsElements_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("RelatingPriorities", new aggregation_type(aggregation_type::list_type, 0, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), false));
        attributes.push_back(new attribute("RelatedPriorities", new aggregation_type(aggregation_type::list_type, 0, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), false));
        attributes.push_back(new attribute("RelatedConnectionType", new named_type(IFC4X3_RC2_IfcConnectionTypeEnum_type), false));
        attributes.push_back(new attribute("RelatingConnectionType", new named_type(IFC4X3_RC2_IfcConnectionTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsPathElements_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingPort", new named_type(IFC4X3_RC2_IfcPort_type), false));
        attributes.push_back(new attribute("RelatedElement", new named_type(IFC4X3_RC2_IfcDistributionElement_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsPortToElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("RelatingPort", new named_type(IFC4X3_RC2_IfcPort_type), false));
        attributes.push_back(new attribute("RelatedPort", new named_type(IFC4X3_RC2_IfcPort_type), false));
        attributes.push_back(new attribute("RealizingElement", new named_type(IFC4X3_RC2_IfcElement_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsPorts_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingElement", new named_type(IFC4X3_RC2_IfcStructuralActivityAssignmentSelect_type), false));
        attributes.push_back(new attribute("RelatedStructuralActivity", new named_type(IFC4X3_RC2_IfcStructuralActivity_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsStructuralActivity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("RelatingStructuralMember", new named_type(IFC4X3_RC2_IfcStructuralMember_type), false));
        attributes.push_back(new attribute("RelatedStructuralConnection", new named_type(IFC4X3_RC2_IfcStructuralConnection_type), false));
        attributes.push_back(new attribute("AppliedCondition", new named_type(IFC4X3_RC2_IfcBoundaryCondition_type), true));
        attributes.push_back(new attribute("AdditionalConditions", new named_type(IFC4X3_RC2_IfcStructuralConnectionCondition_type), true));
        attributes.push_back(new attribute("SupportedLength", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("ConditionCoordinateSystem", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsStructuralMember_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ConnectionConstraint", new named_type(IFC4X3_RC2_IfcConnectionGeometry_type), false));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsWithEccentricity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RealizingElements", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcElement_type)), false));
        attributes.push_back(new attribute("ConnectionType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedElements", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcProduct_type)), false));
        attributes.push_back(new attribute("RelatingStructure", new named_type(IFC4X3_RC2_IfcSpatialElement_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelContainedInSpatialStructure_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingBuildingElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        attributes.push_back(new attribute("RelatedCoverings", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcCovering_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelCoversBldgElements_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingSpace", new named_type(IFC4X3_RC2_IfcSpace_type), false));
        attributes.push_back(new attribute("RelatedCoverings", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcCovering_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelCoversSpaces_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingContext", new named_type(IFC4X3_RC2_IfcContext_type), false));
        attributes.push_back(new attribute("RelatedDefinitions", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDefinitionSelect_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDeclares_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDecomposes_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDefines_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcObject_type)), false));
        attributes.push_back(new attribute("RelatingObject", new named_type(IFC4X3_RC2_IfcObject_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDefinesByObject_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcObjectDefinition_type)), false));
        attributes.push_back(new attribute("RelatingPropertyDefinition", new named_type(IFC4X3_RC2_IfcPropertySetDefinitionSelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDefinesByProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedPropertySets", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPropertySetDefinition_type)), false));
        attributes.push_back(new attribute("RelatingTemplate", new named_type(IFC4X3_RC2_IfcPropertySetTemplate_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDefinesByTemplate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcObject_type)), false));
        attributes.push_back(new attribute("RelatingType", new named_type(IFC4X3_RC2_IfcTypeObject_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelDefinesByType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingOpeningElement", new named_type(IFC4X3_RC2_IfcOpeningElement_type), false));
        attributes.push_back(new attribute("RelatedBuildingElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelFillsElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedControlElements", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcDistributionControlElement_type)), false));
        attributes.push_back(new attribute("RelatingFlowElement", new named_type(IFC4X3_RC2_IfcDistributionFlowElement_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelFlowControlElements_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("RelatingElement", new named_type(IFC4X3_RC2_IfcInterferenceSelect_type), false));
        attributes.push_back(new attribute("RelatedElement", new named_type(IFC4X3_RC2_IfcInterferenceSelect_type), false));
        attributes.push_back(new attribute("InterferenceGeometry", new named_type(IFC4X3_RC2_IfcConnectionGeometry_type), true));
        attributes.push_back(new attribute("InterferenceType", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("ImpliedOrder", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelInterferesElements_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingObject", new named_type(IFC4X3_RC2_IfcObjectDefinition_type), false));
        attributes.push_back(new attribute("RelatedObjects", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcObjectDefinition_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelNests_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingPositioningElement", new named_type(IFC4X3_RC2_IfcPositioningElement_type), false));
        attributes.push_back(new attribute("RelatedProducts", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcProduct_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelPositions_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        attributes.push_back(new attribute("RelatedFeatureElement", new named_type(IFC4X3_RC2_IfcFeatureElementAddition_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelProjectsElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedElements", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcSpatialReferenceSelect_type)), false));
        attributes.push_back(new attribute("RelatingStructure", new named_type(IFC4X3_RC2_IfcSpatialElement_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("RelatingProcess", new named_type(IFC4X3_RC2_IfcProcess_type), false));
        attributes.push_back(new attribute("RelatedProcess", new named_type(IFC4X3_RC2_IfcProcess_type), false));
        attributes.push_back(new attribute("TimeLag", new named_type(IFC4X3_RC2_IfcLagTime_type), true));
        attributes.push_back(new attribute("SequenceType", new named_type(IFC4X3_RC2_IfcSequenceEnum_type), true));
        attributes.push_back(new attribute("UserDefinedSequenceType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelSequence_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingSystem", new named_type(IFC4X3_RC2_IfcSystem_type), false));
        attributes.push_back(new attribute("RelatedBuildings", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcSpatialElement_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelServicesBuildings_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("RelatingSpace", new named_type(IFC4X3_RC2_IfcSpaceBoundarySelect_type), false));
        attributes.push_back(new attribute("RelatedBuildingElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        attributes.push_back(new attribute("ConnectionGeometry", new named_type(IFC4X3_RC2_IfcConnectionGeometry_type), true));
        attributes.push_back(new attribute("PhysicalOrVirtualBoundary", new named_type(IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type), false));
        attributes.push_back(new attribute("InternalOrExternalBoundary", new named_type(IFC4X3_RC2_IfcInternalOrExternalEnum_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelSpaceBoundary_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ParentBoundary", new named_type(IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("CorrespondingBoundary", new named_type(IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingBuildingElement", new named_type(IFC4X3_RC2_IfcElement_type), false));
        attributes.push_back(new attribute("RelatedOpeningElement", new named_type(IFC4X3_RC2_IfcFeatureElementSubtraction_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelVoidsElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ParamLength", new named_type(IFC4X3_RC2_IfcParameterValue_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("ContextOfItems", new named_type(IFC4X3_RC2_IfcRepresentationContext_type), false));
        attributes.push_back(new attribute("RepresentationIdentifier", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("RepresentationType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Items", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcRepresentationItem_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRepresentation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ContextIdentifier", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("ContextType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRepresentationContext_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcRepresentationItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("MappingOrigin", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        attributes.push_back(new attribute("MappedRepresentation", new named_type(IFC4X3_RC2_IfcRepresentation_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRepresentationMap_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatedResourceObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcResourceObjectSelect_type)), false));
        attributes.push_back(new attribute("RelatingApproval", new named_type(IFC4X3_RC2_IfcApproval_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcResourceApprovalRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RelatingConstraint", new named_type(IFC4X3_RC2_IfcConstraint_type), false));
        attributes.push_back(new attribute("RelatedResourceObjects", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcResourceObjectSelect_type)), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcResourceConstraintRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcResourceLevelRelationship_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(15);
        attributes.push_back(new attribute("ScheduleWork", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("ScheduleUsage", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), true));
        attributes.push_back(new attribute("ScheduleStart", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ScheduleFinish", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ScheduleContour", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("LevelingDelay", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("IsOverAllocated", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("StatusTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ActualWork", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("ActualUsage", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), true));
        attributes.push_back(new attribute("ActualStart", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ActualFinish", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("RemainingWork", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("RemainingUsage", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), true));
        attributes.push_back(new attribute("Completion", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), true));
        std::vector<bool> derived; derived.reserve(18);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcResourceTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcAxis1Placement_type), false));
        attributes.push_back(new attribute("Angle", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRevolvedAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("EndSweptArea", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Height", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("BottomRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRightCircularCone_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Height", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRightCircularCylinder_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRoad_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRoofTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRoof_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcRoofTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRoofType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("GlobalId", new named_type(IFC4X3_RC2_IfcGloballyUniqueId_type), false));
        attributes.push_back(new attribute("OwnerHistory", new named_type(IFC4X3_RC2_IfcOwnerHistory_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRoot_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("RoundingRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcRoundedRectangleProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Prefix", new named_type(IFC4X3_RC2_IfcSIPrefix_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcSIUnitName_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(true); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSIUnit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSanitaryTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSanitaryTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("DataOrigin", new named_type(IFC4X3_RC2_IfcDataOriginEnum_type), true));
        attributes.push_back(new attribute("UserDefinedDataOrigin", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSchedulingTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSeamCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("SectionType", new named_type(IFC4X3_RC2_IfcSectionTypeEnum_type), false));
        attributes.push_back(new attribute("StartProfile", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        attributes.push_back(new attribute("EndProfile", new named_type(IFC4X3_RC2_IfcProfileDef_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSectionProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("LongitudinalStartPosition", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("LongitudinalEndPosition", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        attributes.push_back(new attribute("TransversePosition", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("ReinforcementRole", new named_type(IFC4X3_RC2_IfcReinforcingBarRoleEnum_type), false));
        attributes.push_back(new attribute("SectionDefinition", new named_type(IFC4X3_RC2_IfcSectionProperties_type), false));
        attributes.push_back(new attribute("CrossSectionReinforcementDefinitions", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcReinforcementBarProperties_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSectionReinforcementProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Directrix", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("CrossSections", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcProfileDef_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSectionedSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("CrossSectionPositions", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcPointByDistanceExpression_type)), false));
        attributes.push_back(new attribute("FixedAxisVertical", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSectionedSolidHorizontal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("SpineCurve", new named_type(IFC4X3_RC2_IfcCompositeCurve_type), false));
        attributes.push_back(new attribute("CrossSections", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcProfileDef_type)), false));
        attributes.push_back(new attribute("CrossSectionPositions", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSectionedSpine_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Directrix", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("CrossSectionPositions", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcPointByDistanceExpression_type)), false));
        attributes.push_back(new attribute("CrossSections", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcProfileDef_type)), false));
        attributes.push_back(new attribute("FixedAxisVertical", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSectionedSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Transition", new named_type(IFC4X3_RC2_IfcTransitionCode_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcSegment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("BaseCurve", new named_type(IFC4X3_RC2_IfcBoundedCurve_type), false));
        attributes.push_back(new attribute("Segments", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcCurveSegment_type)), false));
        attributes.push_back(new attribute("EndPoint", new named_type(IFC4X3_RC2_IfcPlacement_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSegmentedReferenceCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSensorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSensor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSensorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSensorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcPlacement_type), false));
        attributes.push_back(new attribute("CoefficientsX", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcReal_type)), false));
        attributes.push_back(new attribute("CoefficientsY", new aggregation_type(aggregation_type::list_type, 2, -1, new named_type(IFC4X3_RC2_IfcReal_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSeriesParameterCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcShadingDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcShadingDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcShadingDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcShadingDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("ShapeRepresentations", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcShapeModel_type)), false));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("ProductDefinitional", new named_type(IFC4X3_RC2_IfcLogical_type), false));
        attributes.push_back(new attribute("PartOfProductDefinitionShape", new named_type(IFC4X3_RC2_IfcProductRepresentationSelect_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcShapeAspect_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcShapeModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcShapeRepresentation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("SbsmBoundary", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcShell_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcShellBasedSurfaceModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSignTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSign_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSignTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSignType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSignalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSignal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSignalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSignalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSimpleProperty_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("TemplateType", new named_type(IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type), true));
        attributes.push_back(new attribute("PrimaryMeasureType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("SecondaryMeasureType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Enumerators", new named_type(IFC4X3_RC2_IfcPropertyEnumeration_type), true));
        attributes.push_back(new attribute("PrimaryUnit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        attributes.push_back(new attribute("SecondaryUnit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        attributes.push_back(new attribute("Expression", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("AccessState", new named_type(IFC4X3_RC2_IfcStateEnum_type), true));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSimplePropertyTemplate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("RefLatitude", new named_type(IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type), true));
        attributes.push_back(new attribute("RefLongitude", new named_type(IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type), true));
        attributes.push_back(new attribute("RefElevation", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("LandTitleNumber", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("SiteAddress", new named_type(IFC4X3_RC2_IfcPostalAddress_type), true));
        std::vector<bool> derived; derived.reserve(14);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSite_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSlabTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSlab_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSlabElementedCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSlabStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSlabTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSlabType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("SlippageX", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("SlippageY", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("SlippageZ", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSlippageConnectionCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSolarDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSolarDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSolarDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSolarDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcSolidModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSolidStratum_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSpaceTypeEnum_type), true));
        attributes.push_back(new attribute("ElevationWithFlooring", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpace_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpaceHeater_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpaceHeaterType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSpaceTypeEnum_type), false));
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpaceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpatialElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ElementType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpatialElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("CompositionType", new named_type(IFC4X3_RC2_IfcElementCompositionEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpatialStructureElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpatialStructureElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSpatialZoneTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpatialZone_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSpatialZoneTypeEnum_type), false));
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSpatialZoneType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSphere_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSphericalSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStackTerminalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStackTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStackTerminalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStackTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStairTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStair_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("NumberOfRisers", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("NumberOfTreads", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("RiserHeight", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("TreadLength", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStairFlightTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStairFlight_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStairFlightTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStairFlightType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStairTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStairType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("DestabilizingLoad", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralAction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("AppliedLoad", new named_type(IFC4X3_RC2_IfcStructuralLoad_type), false));
        attributes.push_back(new attribute("GlobalOrLocal", new named_type(IFC4X3_RC2_IfcGlobalOrLocalEnum_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralActivity_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcAnalysisModelTypeEnum_type), false));
        attributes.push_back(new attribute("OrientationOf2DPlane", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), true));
        attributes.push_back(new attribute("LoadedBy", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcStructuralLoadGroup_type)), true));
        attributes.push_back(new attribute("HasResults", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcStructuralResultGroup_type)), true));
        attributes.push_back(new attribute("SharedPlacement", new named_type(IFC4X3_RC2_IfcObjectPlacement_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralAnalysisModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("AppliedCondition", new named_type(IFC4X3_RC2_IfcBoundaryCondition_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralConnection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcStructuralConnectionCondition_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ProjectedOrTrue", new named_type(IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralCurveAction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralCurveConnection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type), false));
        attributes.push_back(new attribute("Axis", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralCurveMember_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralCurveMemberVarying_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralCurveReaction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLinearAction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoad_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("SelfWeightCoefficients", new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcRatioMeasure_type)), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Values", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcStructuralLoadOrResult_type)), false));
        attributes.push_back(new attribute("Locations", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 1, 2, new named_type(IFC4X3_RC2_IfcLengthMeasure_type))), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadConfiguration_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcLoadGroupTypeEnum_type), false));
        attributes.push_back(new attribute("ActionType", new named_type(IFC4X3_RC2_IfcActionTypeEnum_type), false));
        attributes.push_back(new attribute("ActionSource", new named_type(IFC4X3_RC2_IfcActionSourceTypeEnum_type), false));
        attributes.push_back(new attribute("Coefficient", new named_type(IFC4X3_RC2_IfcRatioMeasure_type), true));
        attributes.push_back(new attribute("Purpose", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadGroup_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("LinearForceX", new named_type(IFC4X3_RC2_IfcLinearForceMeasure_type), true));
        attributes.push_back(new attribute("LinearForceY", new named_type(IFC4X3_RC2_IfcLinearForceMeasure_type), true));
        attributes.push_back(new attribute("LinearForceZ", new named_type(IFC4X3_RC2_IfcLinearForceMeasure_type), true));
        attributes.push_back(new attribute("LinearMomentX", new named_type(IFC4X3_RC2_IfcLinearMomentMeasure_type), true));
        attributes.push_back(new attribute("LinearMomentY", new named_type(IFC4X3_RC2_IfcLinearMomentMeasure_type), true));
        attributes.push_back(new attribute("LinearMomentZ", new named_type(IFC4X3_RC2_IfcLinearMomentMeasure_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadLinearForce_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadOrResult_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("PlanarForceX", new named_type(IFC4X3_RC2_IfcPlanarForceMeasure_type), true));
        attributes.push_back(new attribute("PlanarForceY", new named_type(IFC4X3_RC2_IfcPlanarForceMeasure_type), true));
        attributes.push_back(new attribute("PlanarForceZ", new named_type(IFC4X3_RC2_IfcPlanarForceMeasure_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadPlanarForce_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("DisplacementX", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("DisplacementY", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("DisplacementZ", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("RotationalDisplacementRX", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        attributes.push_back(new attribute("RotationalDisplacementRY", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        attributes.push_back(new attribute("RotationalDisplacementRZ", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Distortion", new named_type(IFC4X3_RC2_IfcCurvatureMeasure_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("ForceX", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("ForceY", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("ForceZ", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("MomentX", new named_type(IFC4X3_RC2_IfcTorqueMeasure_type), true));
        attributes.push_back(new attribute("MomentY", new named_type(IFC4X3_RC2_IfcTorqueMeasure_type), true));
        attributes.push_back(new attribute("MomentZ", new named_type(IFC4X3_RC2_IfcTorqueMeasure_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadSingleForce_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("WarpingMoment", new named_type(IFC4X3_RC2_IfcWarpingMomentMeasure_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadStatic_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("DeltaTConstant", new named_type(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type), true));
        attributes.push_back(new attribute("DeltaTY", new named_type(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type), true));
        attributes.push_back(new attribute("DeltaTZ", new named_type(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralLoadTemperature_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralMember_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralPlanarAction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralPointAction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ConditionCoordinateSystem", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralPointConnection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralPointReaction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralReaction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("TheoryType", new named_type(IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type), false));
        attributes.push_back(new attribute("ResultForLoadGroup", new named_type(IFC4X3_RC2_IfcStructuralLoadGroup_type), true));
        attributes.push_back(new attribute("IsLinear", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralResultGroup_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ProjectedOrTrue", new named_type(IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralSurfaceAction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralSurfaceConnection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type), false));
        attributes.push_back(new attribute("Thickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralSurfaceMember_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStructuralSurfaceReaction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStyleModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Item", new named_type(IFC4X3_RC2_IfcRepresentationItem_type), true));
        attributes.push_back(new attribute("Styles", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcStyleAssignmentSelect_type)), false));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStyledItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcStyledRepresentation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSubContractResourceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSubContractResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSubContractResourceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSubContractResourceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ParentEdge", new named_type(IFC4X3_RC2_IfcEdge_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSubedge_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Curve3D", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("AssociatedGeometry", new aggregation_type(aggregation_type::list_type, 1, 2, new named_type(IFC4X3_RC2_IfcPcurve_type)), false));
        attributes.push_back(new attribute("MasterRepresentation", new named_type(IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ReferenceSurface", new named_type(IFC4X3_RC2_IfcSurface_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceFeature_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ExtrudedDirection", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("AxisPosition", new named_type(IFC4X3_RC2_IfcAxis1Placement_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceOfRevolution_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("SurfaceReinforcement1", new aggregation_type(aggregation_type::list_type, 2, 3, new named_type(IFC4X3_RC2_IfcLengthMeasure_type)), true));
        attributes.push_back(new attribute("SurfaceReinforcement2", new aggregation_type(aggregation_type::list_type, 2, 3, new named_type(IFC4X3_RC2_IfcLengthMeasure_type)), true));
        attributes.push_back(new attribute("ShearReinforcement", new named_type(IFC4X3_RC2_IfcRatioMeasure_type), true));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceReinforcementArea_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Side", new named_type(IFC4X3_RC2_IfcSurfaceSide_type), false));
        attributes.push_back(new attribute("Styles", new aggregation_type(aggregation_type::set_type, 1, 5, new named_type(IFC4X3_RC2_IfcSurfaceStyleElementSelect_type)), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("DiffuseTransmissionColour", new named_type(IFC4X3_RC2_IfcColourRgb_type), false));
        attributes.push_back(new attribute("DiffuseReflectionColour", new named_type(IFC4X3_RC2_IfcColourRgb_type), false));
        attributes.push_back(new attribute("TransmissionColour", new named_type(IFC4X3_RC2_IfcColourRgb_type), false));
        attributes.push_back(new attribute("ReflectanceColour", new named_type(IFC4X3_RC2_IfcColourRgb_type), false));
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceStyleLighting_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RefractionIndex", new named_type(IFC4X3_RC2_IfcReal_type), true));
        attributes.push_back(new attribute("DispersionFactor", new named_type(IFC4X3_RC2_IfcReal_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceStyleRefraction_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("DiffuseColour", new named_type(IFC4X3_RC2_IfcColourOrFactor_type), true));
        attributes.push_back(new attribute("TransmissionColour", new named_type(IFC4X3_RC2_IfcColourOrFactor_type), true));
        attributes.push_back(new attribute("DiffuseTransmissionColour", new named_type(IFC4X3_RC2_IfcColourOrFactor_type), true));
        attributes.push_back(new attribute("ReflectionColour", new named_type(IFC4X3_RC2_IfcColourOrFactor_type), true));
        attributes.push_back(new attribute("SpecularColour", new named_type(IFC4X3_RC2_IfcColourOrFactor_type), true));
        attributes.push_back(new attribute("SpecularHighlight", new named_type(IFC4X3_RC2_IfcSpecularHighlightSelect_type), true));
        attributes.push_back(new attribute("ReflectanceMethod", new named_type(IFC4X3_RC2_IfcReflectanceMethodEnum_type), false));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceStyleRendering_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SurfaceColour", new named_type(IFC4X3_RC2_IfcColourRgb_type), false));
        attributes.push_back(new attribute("Transparency", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceStyleShading_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Textures", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcSurfaceTexture_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceStyleWithTextures_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("RepeatS", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("RepeatT", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("Mode", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("TextureTransform", new named_type(IFC4X3_RC2_IfcCartesianTransformationOperator2D_type), true));
        attributes.push_back(new attribute("Parameter", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcIdentifier_type)), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSurfaceTexture_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SweptArea", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSweptAreaSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Directrix", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("Radius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("InnerRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("StartParam", new named_type(IFC4X3_RC2_IfcParameterValue_type), true));
        attributes.push_back(new attribute("EndParam", new named_type(IFC4X3_RC2_IfcParameterValue_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSweptDiskSolid_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("FilletRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("SweptCurve", new named_type(IFC4X3_RC2_IfcProfileDef_type), false));
        attributes.push_back(new attribute("Position", new named_type(IFC4X3_RC2_IfcAxis2Placement3D_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSweptSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSwitchingDevice_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSwitchingDeviceType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSystem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSystemFurnitureElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcSystemFurnitureElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(9);
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("WebThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("FlangeEdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("WebEdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("WebSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        attributes.push_back(new attribute("FlangeSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Rows", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcTableRow_type)), true));
        attributes.push_back(new attribute("Columns", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcTableColumn_type)), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTable_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("Identifier", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        attributes.push_back(new attribute("ReferencePath", new named_type(IFC4X3_RC2_IfcReference_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTableColumn_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RowCells", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), true));
        attributes.push_back(new attribute("IsHeading", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTableRow_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTankTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTank_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTankTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTankType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Status", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("WorkMethod", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("IsMilestone", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("Priority", new named_type(IFC4X3_RC2_IfcInteger_type), true));
        attributes.push_back(new attribute("TaskTime", new named_type(IFC4X3_RC2_IfcTaskTime_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTaskTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTask_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(17);
        attributes.push_back(new attribute("DurationType", new named_type(IFC4X3_RC2_IfcTaskDurationEnum_type), true));
        attributes.push_back(new attribute("ScheduleDuration", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("ScheduleStart", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ScheduleFinish", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("EarlyStart", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("EarlyFinish", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("LateStart", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("LateFinish", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("FreeFloat", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("TotalFloat", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("IsCritical", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("StatusTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ActualDuration", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("ActualStart", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("ActualFinish", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        attributes.push_back(new attribute("RemainingTime", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("Completion", new named_type(IFC4X3_RC2_IfcPositiveRatioMeasure_type), true));
        std::vector<bool> derived; derived.reserve(20);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTaskTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Recurrence", new named_type(IFC4X3_RC2_IfcRecurrencePattern_type), false));
        std::vector<bool> derived; derived.reserve(21);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTaskTimeRecurring_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTaskTypeEnum_type), false));
        attributes.push_back(new attribute("WorkMethod", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(11);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTaskType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("TelephoneNumbers", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("FacsimileNumbers", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("PagerNumber", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("ElectronicMailAddresses", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcLabel_type)), true));
        attributes.push_back(new attribute("WWWHomePageURL", new named_type(IFC4X3_RC2_IfcURIReference_type), true));
        attributes.push_back(new attribute("MessagingIDs", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcURIReference_type)), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTelecomAddress_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTendonTypeEnum_type), true));
        attributes.push_back(new attribute("NominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("CrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("TensionForce", new named_type(IFC4X3_RC2_IfcForceMeasure_type), true));
        attributes.push_back(new attribute("PreStress", new named_type(IFC4X3_RC2_IfcPressureMeasure_type), true));
        attributes.push_back(new attribute("FrictionCoefficient", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("AnchorageSlip", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("MinCurvatureRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(17);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTendon_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTendonAnchorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTendonAnchor_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTendonAnchorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTendonAnchorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTendonConduitTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTendonConduit_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTendonConduitTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTendonConduitType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTendonTypeEnum_type), false));
        attributes.push_back(new attribute("NominalDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("CrossSectionArea", new named_type(IFC4X3_RC2_IfcAreaMeasure_type), true));
        attributes.push_back(new attribute("SheathDiameter", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTendonType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Coordinates", new named_type(IFC4X3_RC2_IfcCartesianPointList3D_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcTessellatedFaceSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcTessellatedItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Literal", new named_type(IFC4X3_RC2_IfcPresentableText_type), false));
        attributes.push_back(new attribute("Placement", new named_type(IFC4X3_RC2_IfcAxis2Placement_type), false));
        attributes.push_back(new attribute("Path", new named_type(IFC4X3_RC2_IfcTextPath_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextLiteral_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Extent", new named_type(IFC4X3_RC2_IfcPlanarExtent_type), false));
        attributes.push_back(new attribute("BoxAlignment", new named_type(IFC4X3_RC2_IfcBoxAlignment_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextLiteralWithExtent_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("TextCharacterAppearance", new named_type(IFC4X3_RC2_IfcTextStyleForDefinedFont_type), true));
        attributes.push_back(new attribute("TextStyle", new named_type(IFC4X3_RC2_IfcTextStyleTextModel_type), true));
        attributes.push_back(new attribute("TextFontStyle", new named_type(IFC4X3_RC2_IfcTextFontSelect_type), false));
        attributes.push_back(new attribute("ModelOrDraughting", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("FontFamily", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcTextFontName_type)), false));
        attributes.push_back(new attribute("FontStyle", new named_type(IFC4X3_RC2_IfcFontStyle_type), true));
        attributes.push_back(new attribute("FontVariant", new named_type(IFC4X3_RC2_IfcFontVariant_type), true));
        attributes.push_back(new attribute("FontWeight", new named_type(IFC4X3_RC2_IfcFontWeight_type), true));
        attributes.push_back(new attribute("FontSize", new named_type(IFC4X3_RC2_IfcSizeSelect_type), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextStyleFontModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Colour", new named_type(IFC4X3_RC2_IfcColour_type), false));
        attributes.push_back(new attribute("BackgroundColour", new named_type(IFC4X3_RC2_IfcColour_type), true));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextStyleForDefinedFont_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("TextIndent", new named_type(IFC4X3_RC2_IfcSizeSelect_type), true));
        attributes.push_back(new attribute("TextAlign", new named_type(IFC4X3_RC2_IfcTextAlignment_type), true));
        attributes.push_back(new attribute("TextDecoration", new named_type(IFC4X3_RC2_IfcTextDecoration_type), true));
        attributes.push_back(new attribute("LetterSpacing", new named_type(IFC4X3_RC2_IfcSizeSelect_type), true));
        attributes.push_back(new attribute("WordSpacing", new named_type(IFC4X3_RC2_IfcSizeSelect_type), true));
        attributes.push_back(new attribute("TextTransform", new named_type(IFC4X3_RC2_IfcTextTransformation_type), true));
        attributes.push_back(new attribute("LineHeight", new named_type(IFC4X3_RC2_IfcSizeSelect_type), true));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextStyleTextModel_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Maps", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcSurfaceTexture_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcTextureCoordinate_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Mode", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Parameter", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcReal_type)), true));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextureCoordinateGenerator_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Vertices", new aggregation_type(aggregation_type::list_type, 3, -1, new named_type(IFC4X3_RC2_IfcTextureVertex_type)), false));
        attributes.push_back(new attribute("MappedTo", new named_type(IFC4X3_RC2_IfcFace_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTextureMap_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Coordinates", new aggregation_type(aggregation_type::list_type, 2, 2, new named_type(IFC4X3_RC2_IfcParameterValue_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcTextureVertex_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("TexCoordsList", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 2, 2, new named_type(IFC4X3_RC2_IfcParameterValue_type))), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcTextureVertexList_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("StartTime", new named_type(IFC4X3_RC2_IfcTime_type), false));
        attributes.push_back(new attribute("EndTime", new named_type(IFC4X3_RC2_IfcTime_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTimePeriod_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(8);
        attributes.push_back(new attribute("Name", new named_type(IFC4X3_RC2_IfcLabel_type), false));
        attributes.push_back(new attribute("Description", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("StartTime", new named_type(IFC4X3_RC2_IfcDateTime_type), false));
        attributes.push_back(new attribute("EndTime", new named_type(IFC4X3_RC2_IfcDateTime_type), false));
        attributes.push_back(new attribute("TimeSeriesDataType", new named_type(IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type), false));
        attributes.push_back(new attribute("DataOrigin", new named_type(IFC4X3_RC2_IfcDataOriginEnum_type), false));
        attributes.push_back(new attribute("UserDefinedDataOrigin", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Unit", new named_type(IFC4X3_RC2_IfcUnit_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTimeSeries_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("ListValues", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcValue_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcTimeSeriesValue_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcTopologicalRepresentationItem_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(4);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTopologyRepresentation_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("MajorRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("MinorRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(3);
        derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcToroidalSurface_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTrackElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTrackElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTrackElementTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTrackElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTransformerTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTransformer_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTransformerTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTransformerType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("StartRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("EndRadius", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("IsStartRadiusCCW", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("IsEndRadiusCCW", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("TransitionCurveType", new named_type(IFC4X3_RC2_IfcTransitionCurveType_type), false));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTransitionCurveSegment2D_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTransportElementTypeSelect_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTransportElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTransportElementTypeSelect_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTransportElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("BottomXDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("TopXDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("YDim", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("TopXOffset", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(7);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTrapeziumProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("Normals", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcParameterValue_type))), true));
        attributes.push_back(new attribute("Closed", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("CoordIndex", new aggregation_type(aggregation_type::list_type, 1, -1, new aggregation_type(aggregation_type::list_type, 3, 3, new named_type(IFC4X3_RC2_IfcPositiveInteger_type))), false));
        attributes.push_back(new attribute("PnIndex", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcPositiveInteger_type)), true));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTriangulatedFaceSet_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Flags", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcInteger_type)), false));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("BasisCurve", new named_type(IFC4X3_RC2_IfcCurve_type), false));
        attributes.push_back(new attribute("Trim1", new aggregation_type(aggregation_type::set_type, 1, 2, new named_type(IFC4X3_RC2_IfcTrimmingSelect_type)), false));
        attributes.push_back(new attribute("Trim2", new aggregation_type(aggregation_type::set_type, 1, 2, new named_type(IFC4X3_RC2_IfcTrimmingSelect_type)), false));
        attributes.push_back(new attribute("SenseAgreement", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("MasterRepresentation", new named_type(IFC4X3_RC2_IfcTrimmingPreference_type), false));
        std::vector<bool> derived; derived.reserve(5);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTrimmedCurve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTubeBundleTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTubeBundle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcTubeBundleTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTubeBundleType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("ApplicableOccurrence", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("HasPropertySets", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPropertySetDefinition_type)), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTypeObject_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("ProcessType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTypeProcess_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("RepresentationMaps", new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(IFC4X3_RC2_IfcRepresentationMap_type)), true));
        attributes.push_back(new attribute("Tag", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTypeProduct_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("Identification", new named_type(IFC4X3_RC2_IfcIdentifier_type), true));
        attributes.push_back(new attribute("LongDescription", new named_type(IFC4X3_RC2_IfcText_type), true));
        attributes.push_back(new attribute("ResourceType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcTypeResource_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("WebThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("EdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("FlangeSlope", new named_type(IFC4X3_RC2_IfcPlaneAngleMeasure_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcUShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("Units", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcUnit_type)), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcUnitAssignment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcUnitaryControlElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcUnitaryControlElementType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcUnitaryEquipment_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcUnitaryEquipmentType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcValveTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcValve_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcValveTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcValveType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("Orientation", new named_type(IFC4X3_RC2_IfcDirection_type), false));
        attributes.push_back(new attribute("Magnitude", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVector_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(0);
        
        IFC4X3_RC2_IfcVertex_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("LoopVertex", new named_type(IFC4X3_RC2_IfcVertex_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcVertexLoop_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("VertexGeometry", new named_type(IFC4X3_RC2_IfcPoint_type), false));
        std::vector<bool> derived; derived.reserve(1);
        derived.push_back(false);
        IFC4X3_RC2_IfcVertexPoint_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcVibrationDamperTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVibrationDamper_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcVibrationDamperTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVibrationDamperType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVibrationIsolator_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVibrationIsolatorType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVirtualElement_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new attribute("IntersectingAxes", new aggregation_type(aggregation_type::list_type, 2, 2, new named_type(IFC4X3_RC2_IfcGridAxis_type)), false));
        attributes.push_back(new attribute("OffsetDistances", new aggregation_type(aggregation_type::list_type, 2, 3, new named_type(IFC4X3_RC2_IfcLengthMeasure_type)), false));
        std::vector<bool> derived; derived.reserve(2);
        derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVirtualGridIntersection_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVoidStratum_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcVoidingFeature_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWallTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWall_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWallElementedCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWallStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWallTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWallType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWasteTerminalTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWasteTerminal_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWasteTerminalTypeEnum_type), false));
        std::vector<bool> derived; derived.reserve(10);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWasteTerminalType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(8);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWaterStratum_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("OverallHeight", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("OverallWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWindowTypeEnum_type), true));
        attributes.push_back(new attribute("PartitioningType", new named_type(IFC4X3_RC2_IfcWindowTypePartitioningEnum_type), true));
        attributes.push_back(new attribute("UserDefinedPartitioningType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWindow_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(12);
        attributes.push_back(new attribute("LiningDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("LiningThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("TransomThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("MullionThickness", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("FirstTransomOffset", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("SecondTransomOffset", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("FirstMullionOffset", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("SecondMullionOffset", new named_type(IFC4X3_RC2_IfcNormalisedRatioMeasure_type), true));
        attributes.push_back(new attribute("ShapeAspectStyle", new named_type(IFC4X3_RC2_IfcShapeAspect_type), true));
        attributes.push_back(new attribute("LiningOffset", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("LiningToPanelOffsetX", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        attributes.push_back(new attribute("LiningToPanelOffsetY", new named_type(IFC4X3_RC2_IfcLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(16);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWindowLiningProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new attribute("OperationType", new named_type(IFC4X3_RC2_IfcWindowPanelOperationEnum_type), false));
        attributes.push_back(new attribute("PanelPosition", new named_type(IFC4X3_RC2_IfcWindowPanelPositionEnum_type), false));
        attributes.push_back(new attribute("FrameDepth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("FrameThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), true));
        attributes.push_back(new attribute("ShapeAspectStyle", new named_type(IFC4X3_RC2_IfcShapeAspect_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWindowPanelProperties_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(0);
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWindowStandardCase_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("ConstructionType", new named_type(IFC4X3_RC2_IfcWindowStyleConstructionEnum_type), false));
        attributes.push_back(new attribute("OperationType", new named_type(IFC4X3_RC2_IfcWindowStyleOperationEnum_type), false));
        attributes.push_back(new attribute("ParameterTakesPrecedence", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        attributes.push_back(new attribute("Sizeable", new named_type(IFC4X3_RC2_IfcBoolean_type), false));
        std::vector<bool> derived; derived.reserve(12);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWindowStyle_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWindowTypeEnum_type), false));
        attributes.push_back(new attribute("PartitioningType", new named_type(IFC4X3_RC2_IfcWindowTypePartitioningEnum_type), false));
        attributes.push_back(new attribute("ParameterTakesPrecedence", new named_type(IFC4X3_RC2_IfcBoolean_type), true));
        attributes.push_back(new attribute("UserDefinedPartitioningType", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWindowType_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("WorkingTimes", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcWorkTime_type)), true));
        attributes.push_back(new attribute("ExceptionTimes", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcWorkTime_type)), true));
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWorkCalendarTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWorkCalendar_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new attribute("CreationDate", new named_type(IFC4X3_RC2_IfcDateTime_type), false));
        attributes.push_back(new attribute("Creators", new aggregation_type(aggregation_type::set_type, 1, -1, new named_type(IFC4X3_RC2_IfcPerson_type)), true));
        attributes.push_back(new attribute("Purpose", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        attributes.push_back(new attribute("Duration", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("TotalFloat", new named_type(IFC4X3_RC2_IfcDuration_type), true));
        attributes.push_back(new attribute("StartTime", new named_type(IFC4X3_RC2_IfcDateTime_type), false));
        attributes.push_back(new attribute("FinishTime", new named_type(IFC4X3_RC2_IfcDateTime_type), true));
        std::vector<bool> derived; derived.reserve(13);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWorkControl_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWorkPlanTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(14);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWorkPlan_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("PredefinedType", new named_type(IFC4X3_RC2_IfcWorkScheduleTypeEnum_type), true));
        std::vector<bool> derived; derived.reserve(14);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWorkSchedule_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new attribute("RecurrencePattern", new named_type(IFC4X3_RC2_IfcRecurrencePattern_type), true));
        attributes.push_back(new attribute("Start", new named_type(IFC4X3_RC2_IfcDate_type), true));
        attributes.push_back(new attribute("Finish", new named_type(IFC4X3_RC2_IfcDate_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcWorkTime_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new attribute("Depth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeWidth", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("WebThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FlangeThickness", new named_type(IFC4X3_RC2_IfcPositiveLengthMeasure_type), false));
        attributes.push_back(new attribute("FilletRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        attributes.push_back(new attribute("EdgeRadius", new named_type(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type), true));
        std::vector<bool> derived; derived.reserve(9);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcZShapeProfileDef_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new attribute("LongName", new named_type(IFC4X3_RC2_IfcLabel_type), true));
        std::vector<bool> derived; derived.reserve(6);
        derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false); derived.push_back(false);
        IFC4X3_RC2_IfcZone_type->set_attributes(attributes, derived);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("IsActingUpon", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToActor_type, IFC4X3_RC2_IfcRelAssignsToActor_type->attributes()[0]));
        IFC4X3_RC2_IfcActor_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReference", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcActorRole_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("OfPerson", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPerson_type, IFC4X3_RC2_IfcPerson_type->attributes()[7]));
        attributes.push_back(new inverse_attribute("OfOrganization", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcOrganization_type, IFC4X3_RC2_IfcOrganization_type->attributes()[4]));
        IFC4X3_RC2_IfcAddress_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ContainedInStructure", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type->attributes()[0]));
        IFC4X3_RC2_IfcAnnotation_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReference", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcAppliedValue_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(5);
        attributes.push_back(new inverse_attribute("HasExternalReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ApprovedObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesApproval_type, IFC4X3_RC2_IfcRelAssociatesApproval_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("ApprovedResources", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcResourceApprovalRelationship_type, IFC4X3_RC2_IfcResourceApprovalRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsRelatedWith", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcApprovalRelationship_type, IFC4X3_RC2_IfcApprovalRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("Relates", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcApprovalRelationship_type, IFC4X3_RC2_IfcApprovalRelationship_type->attributes()[0]));
        IFC4X3_RC2_IfcApproval_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ToLinearAxis", inverse_attribute::set_type, 1, 1, IFC4X3_RC2_IfcLinearAxisWithInclination_type, IFC4X3_RC2_IfcLinearAxisWithInclination_type->attributes()[1]));
        IFC4X3_RC2_IfcAxisLateralInclination_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("PositioningElement", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcLinearPositioningElement_type, IFC4X3_RC2_IfcLinearPositioningElement_type->attributes()[0]));
        IFC4X3_RC2_IfcBoundedCurve_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("ClassificationForObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesClassification_type, IFC4X3_RC2_IfcRelAssociatesClassification_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcClassificationReference_type, IFC4X3_RC2_IfcClassificationReference_type->attributes()[0]));
        IFC4X3_RC2_IfcClassification_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("ClassificationRefForObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesClassification_type, IFC4X3_RC2_IfcRelAssociatesClassification_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcClassificationReference_type, IFC4X3_RC2_IfcClassificationReference_type->attributes()[0]));
        IFC4X3_RC2_IfcClassificationReference_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("UsingCurves", inverse_attribute::set_type, 1, -1, IFC4X3_RC2_IfcCompositeCurve_type, IFC4X3_RC2_IfcCompositeCurve_type->attributes()[0]));
        IFC4X3_RC2_IfcCompositeCurveSegment_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasExternalReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("PropertiesForConstraint", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcResourceConstraintRelationship_type, IFC4X3_RC2_IfcResourceConstraintRelationship_type->attributes()[0]));
        IFC4X3_RC2_IfcConstraint_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("IsDefinedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDefinesByProperties_type, IFC4X3_RC2_IfcRelDefinesByProperties_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("Declares", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDeclares_type, IFC4X3_RC2_IfcRelDeclares_type->attributes()[0]));
        IFC4X3_RC2_IfcContext_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReference", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcContextDependentUnit_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("Controls", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToControl_type, IFC4X3_RC2_IfcRelAssignsToControl_type->attributes()[0]));
        IFC4X3_RC2_IfcControl_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReference", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcConversionBasedUnit_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasCoordinateOperation", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcCoordinateOperation_type, IFC4X3_RC2_IfcCoordinateOperation_type->attributes()[0]));
        IFC4X3_RC2_IfcCoordinateReferenceSystem_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("CoversSpaces", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelCoversSpaces_type, IFC4X3_RC2_IfcRelCoversSpaces_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("CoversElements", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelCoversBldgElements_type, IFC4X3_RC2_IfcRelCoversBldgElements_type->attributes()[1]));
        IFC4X3_RC2_IfcCovering_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("AssignedToFlowElement", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelFlowControlElements_type, IFC4X3_RC2_IfcRelFlowControlElements_type->attributes()[0]));
        IFC4X3_RC2_IfcDistributionControlElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasPorts", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelConnectsPortToElement_type, IFC4X3_RC2_IfcRelConnectsPortToElement_type->attributes()[1]));
        IFC4X3_RC2_IfcDistributionElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasControlElements", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelFlowControlElements_type, IFC4X3_RC2_IfcRelFlowControlElements_type->attributes()[1]));
        IFC4X3_RC2_IfcDistributionFlowElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new inverse_attribute("DocumentInfoForObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesDocument_type, IFC4X3_RC2_IfcRelAssociatesDocument_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasDocumentReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcDocumentReference_type, IFC4X3_RC2_IfcDocumentReference_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsPointedTo", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcDocumentInformationRelationship_type, IFC4X3_RC2_IfcDocumentInformationRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsPointer", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcDocumentInformationRelationship_type, IFC4X3_RC2_IfcDocumentInformationRelationship_type->attributes()[0]));
        IFC4X3_RC2_IfcDocumentInformation_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("DocumentRefForObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesDocument_type, IFC4X3_RC2_IfcRelAssociatesDocument_type->attributes()[0]));
        IFC4X3_RC2_IfcDocumentReference_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(11);
        attributes.push_back(new inverse_attribute("FillsVoids", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelFillsElement_type, IFC4X3_RC2_IfcRelFillsElement_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ConnectedTo", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelConnectsElements_type, IFC4X3_RC2_IfcRelConnectsElements_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsInterferedByElements", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelInterferesElements_type, IFC4X3_RC2_IfcRelInterferesElements_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("InterferesElements", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelInterferesElements_type, IFC4X3_RC2_IfcRelInterferesElements_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasProjections", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelProjectsElement_type, IFC4X3_RC2_IfcRelProjectsElement_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasOpenings", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelVoidsElement_type, IFC4X3_RC2_IfcRelVoidsElement_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("IsConnectionRealization", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type, IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("ProvidesBoundaries", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelSpaceBoundary_type, IFC4X3_RC2_IfcRelSpaceBoundary_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ConnectedFrom", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelConnectsElements_type, IFC4X3_RC2_IfcRelConnectsElements_type->attributes()[2]));
        attributes.push_back(new inverse_attribute("ContainedInStructure", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasCoverings", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelCoversBldgElements_type, IFC4X3_RC2_IfcRelCoversBldgElements_type->attributes()[0]));
        IFC4X3_RC2_IfcElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ExternalReferenceForResources", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[0]));
        IFC4X3_RC2_IfcExternalReference_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("BoundedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelSpaceBoundary_type, IFC4X3_RC2_IfcRelSpaceBoundary_type->attributes()[0]));
        IFC4X3_RC2_IfcExternalSpatialElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasTextureMaps", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcTextureMap_type, IFC4X3_RC2_IfcTextureMap_type->attributes()[1]));
        IFC4X3_RC2_IfcFace_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ProjectsElements", inverse_attribute::unspecified_type, -1, -1, IFC4X3_RC2_IfcRelProjectsElement_type, IFC4X3_RC2_IfcRelProjectsElement_type->attributes()[1]));
        IFC4X3_RC2_IfcFeatureElementAddition_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("VoidsElements", inverse_attribute::unspecified_type, -1, -1, IFC4X3_RC2_IfcRelVoidsElement_type, IFC4X3_RC2_IfcRelVoidsElement_type->attributes()[1]));
        IFC4X3_RC2_IfcFeatureElementSubtraction_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasSubContexts", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcGeometricRepresentationSubContext_type, IFC4X3_RC2_IfcGeometricRepresentationSubContext_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasCoordinateOperation", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcCoordinateOperation_type, IFC4X3_RC2_IfcCoordinateOperation_type->attributes()[0]));
        IFC4X3_RC2_IfcGeometricRepresentationContext_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new inverse_attribute("PartOfW", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcGrid_type, IFC4X3_RC2_IfcGrid_type->attributes()[2]));
        attributes.push_back(new inverse_attribute("PartOfV", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcGrid_type, IFC4X3_RC2_IfcGrid_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("PartOfU", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcGrid_type, IFC4X3_RC2_IfcGrid_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasIntersections", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcVirtualGridIntersection_type, IFC4X3_RC2_IfcVirtualGridIntersection_type->attributes()[0]));
        IFC4X3_RC2_IfcGridAxis_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("IsGroupedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToGroup_type, IFC4X3_RC2_IfcRelAssignsToGroup_type->attributes()[0]));
        IFC4X3_RC2_IfcGroup_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ToFaceSet", inverse_attribute::set_type, 1, -1, IFC4X3_RC2_IfcPolygonalFaceSet_type, IFC4X3_RC2_IfcPolygonalFaceSet_type->attributes()[1]));
        IFC4X3_RC2_IfcIndexedPolygonalFace_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("LibraryInfoForObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesLibrary_type, IFC4X3_RC2_IfcRelAssociatesLibrary_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasLibraryReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcLibraryReference_type, IFC4X3_RC2_IfcLibraryReference_type->attributes()[2]));
        IFC4X3_RC2_IfcLibraryInformation_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("LibraryRefForObjects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesLibrary_type, IFC4X3_RC2_IfcRelAssociatesLibrary_type->attributes()[0]));
        IFC4X3_RC2_IfcLibraryReference_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("HasRepresentation", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type, IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("IsRelatedWith", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcMaterialRelationship_type, IFC4X3_RC2_IfcMaterialRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("RelatesTo", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcMaterialRelationship_type, IFC4X3_RC2_IfcMaterialRelationship_type->attributes()[0]));
        IFC4X3_RC2_IfcMaterial_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ToMaterialConstituentSet", inverse_attribute::unspecified_type, -1, -1, IFC4X3_RC2_IfcMaterialConstituentSet_type, IFC4X3_RC2_IfcMaterialConstituentSet_type->attributes()[2]));
        IFC4X3_RC2_IfcMaterialConstituent_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("AssociatedTo", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociatesMaterial_type, IFC4X3_RC2_IfcRelAssociatesMaterial_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasExternalReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasProperties", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcMaterialProperties_type, IFC4X3_RC2_IfcMaterialProperties_type->attributes()[0]));
        IFC4X3_RC2_IfcMaterialDefinition_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ToMaterialLayerSet", inverse_attribute::unspecified_type, -1, -1, IFC4X3_RC2_IfcMaterialLayerSet_type, IFC4X3_RC2_IfcMaterialLayerSet_type->attributes()[0]));
        IFC4X3_RC2_IfcMaterialLayer_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ToMaterialProfileSet", inverse_attribute::unspecified_type, -1, -1, IFC4X3_RC2_IfcMaterialProfileSet_type, IFC4X3_RC2_IfcMaterialProfileSet_type->attributes()[2]));
        IFC4X3_RC2_IfcMaterialProfile_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("AssociatedTo", inverse_attribute::set_type, 1, -1, IFC4X3_RC2_IfcRelAssociatesMaterial_type, IFC4X3_RC2_IfcRelAssociatesMaterial_type->attributes()[0]));
        IFC4X3_RC2_IfcMaterialUsageDefinition_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(4);
        attributes.push_back(new inverse_attribute("IsDeclaredBy", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelDefinesByObject_type, IFC4X3_RC2_IfcRelDefinesByObject_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("Declares", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDefinesByObject_type, IFC4X3_RC2_IfcRelDefinesByObject_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsTypedBy", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelDefinesByType_type, IFC4X3_RC2_IfcRelDefinesByType_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("IsDefinedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDefinesByProperties_type, IFC4X3_RC2_IfcRelDefinesByProperties_type->attributes()[0]));
        IFC4X3_RC2_IfcObject_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(7);
        attributes.push_back(new inverse_attribute("HasAssignments", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssigns_type, IFC4X3_RC2_IfcRelAssigns_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("Nests", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelNests_type, IFC4X3_RC2_IfcRelNests_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsNestedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelNests_type, IFC4X3_RC2_IfcRelNests_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasContext", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelDeclares_type, IFC4X3_RC2_IfcRelDeclares_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsDecomposedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAggregates_type, IFC4X3_RC2_IfcRelAggregates_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("Decomposes", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelAggregates_type, IFC4X3_RC2_IfcRelAggregates_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasAssociations", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociates_type, IFC4X3_RC2_IfcRelAssociates_type->attributes()[0]));
        IFC4X3_RC2_IfcObjectDefinition_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("PlacesObject", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcProduct_type, IFC4X3_RC2_IfcProduct_type->attributes()[0]));
        IFC4X3_RC2_IfcObjectPlacement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasFillings", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelFillsElement_type, IFC4X3_RC2_IfcRelFillsElement_type->attributes()[0]));
        IFC4X3_RC2_IfcOpeningElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("IsRelatedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcOrganizationRelationship_type, IFC4X3_RC2_IfcOrganizationRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("Relates", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcOrganizationRelationship_type, IFC4X3_RC2_IfcOrganizationRelationship_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("Engages", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPersonAndOrganization_type, IFC4X3_RC2_IfcPersonAndOrganization_type->attributes()[1]));
        IFC4X3_RC2_IfcOrganization_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("EngagedIn", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPersonAndOrganization_type, IFC4X3_RC2_IfcPersonAndOrganization_type->attributes()[0]));
        IFC4X3_RC2_IfcPerson_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasExternalReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("PartOfComplex", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcPhysicalComplexQuantity_type, IFC4X3_RC2_IfcPhysicalComplexQuantity_type->attributes()[0]));
        IFC4X3_RC2_IfcPhysicalQuantity_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("ContainedIn", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelConnectsPortToElement_type, IFC4X3_RC2_IfcRelConnectsPortToElement_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("ConnectedFrom", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelConnectsPorts_type, IFC4X3_RC2_IfcRelConnectsPorts_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ConnectedTo", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelConnectsPorts_type, IFC4X3_RC2_IfcRelConnectsPorts_type->attributes()[0]));
        IFC4X3_RC2_IfcPort_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("ContainedInStructure", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("Positions", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelPositions_type, IFC4X3_RC2_IfcRelPositions_type->attributes()[0]));
        IFC4X3_RC2_IfcPositioningElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("IsPredecessorTo", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelSequence_type, IFC4X3_RC2_IfcRelSequence_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("IsSuccessorFrom", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelSequence_type, IFC4X3_RC2_IfcRelSequence_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("OperatesOn", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToProcess_type, IFC4X3_RC2_IfcRelAssignsToProcess_type->attributes()[0]));
        IFC4X3_RC2_IfcProcess_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("ReferencedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToProduct_type, IFC4X3_RC2_IfcRelAssignsToProduct_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("PositionedRelativeTo", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelPositions_type, IFC4X3_RC2_IfcRelPositions_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ReferencedInStructures", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type, IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type->attributes()[0]));
        IFC4X3_RC2_IfcProduct_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("ShapeOfProduct", inverse_attribute::set_type, 1, -1, IFC4X3_RC2_IfcProduct_type, IFC4X3_RC2_IfcProduct_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasShapeAspects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcShapeAspect_type, IFC4X3_RC2_IfcShapeAspect_type->attributes()[4]));
        IFC4X3_RC2_IfcProductDefinitionShape_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasExternalReference", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasProperties", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcProfileProperties_type, IFC4X3_RC2_IfcProfileProperties_type->attributes()[0]));
        IFC4X3_RC2_IfcProfileDef_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(6);
        attributes.push_back(new inverse_attribute("PartOfPset", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPropertySet_type, IFC4X3_RC2_IfcPropertySet_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("PropertyForDependance", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPropertyDependencyRelationship_type, IFC4X3_RC2_IfcPropertyDependencyRelationship_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("PropertyDependsOn", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPropertyDependencyRelationship_type, IFC4X3_RC2_IfcPropertyDependencyRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("PartOfComplex", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcComplexProperty_type, IFC4X3_RC2_IfcComplexProperty_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasConstraints", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcResourceConstraintRelationship_type, IFC4X3_RC2_IfcResourceConstraintRelationship_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasApprovals", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcResourceApprovalRelationship_type, IFC4X3_RC2_IfcResourceApprovalRelationship_type->attributes()[0]));
        IFC4X3_RC2_IfcProperty_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcPropertyAbstraction_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasContext", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelDeclares_type, IFC4X3_RC2_IfcRelDeclares_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("HasAssociations", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssociates_type, IFC4X3_RC2_IfcRelAssociates_type->attributes()[0]));
        IFC4X3_RC2_IfcPropertyDefinition_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("DefinesType", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcTypeObject_type, IFC4X3_RC2_IfcTypeObject_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("IsDefinedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDefinesByTemplate_type, IFC4X3_RC2_IfcRelDefinesByTemplate_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("DefinesOccurrence", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDefinesByProperties_type, IFC4X3_RC2_IfcRelDefinesByProperties_type->attributes()[1]));
        IFC4X3_RC2_IfcPropertySetDefinition_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("Defines", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelDefinesByTemplate_type, IFC4X3_RC2_IfcRelDefinesByTemplate_type->attributes()[1]));
        IFC4X3_RC2_IfcPropertySetTemplate_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("PartOfComplexTemplate", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcComplexPropertyTemplate_type, IFC4X3_RC2_IfcComplexPropertyTemplate_type->attributes()[2]));
        attributes.push_back(new inverse_attribute("PartOfPsetTemplate", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPropertySetTemplate_type, IFC4X3_RC2_IfcPropertySetTemplate_type->attributes()[2]));
        IFC4X3_RC2_IfcPropertyTemplate_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("InnerBoundaries", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type, IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type->attributes()[0]));
        IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("Corresponds", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type, IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type->attributes()[0]));
        IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("RepresentationMap", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRepresentationMap_type, IFC4X3_RC2_IfcRepresentationMap_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("LayerAssignments", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcPresentationLayerAssignment_type, IFC4X3_RC2_IfcPresentationLayerAssignment_type->attributes()[2]));
        attributes.push_back(new inverse_attribute("OfProductRepresentation", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcProductRepresentation_type, IFC4X3_RC2_IfcProductRepresentation_type->attributes()[2]));
        IFC4X3_RC2_IfcRepresentation_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("RepresentationsInContext", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRepresentation_type, IFC4X3_RC2_IfcRepresentation_type->attributes()[0]));
        IFC4X3_RC2_IfcRepresentationContext_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("LayerAssignment", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcPresentationLayerAssignment_type, IFC4X3_RC2_IfcPresentationLayerAssignment_type->attributes()[2]));
        attributes.push_back(new inverse_attribute("StyledByItem", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcStyledItem_type, IFC4X3_RC2_IfcStyledItem_type->attributes()[0]));
        IFC4X3_RC2_IfcRepresentationItem_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasShapeAspects", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcShapeAspect_type, IFC4X3_RC2_IfcShapeAspect_type->attributes()[4]));
        attributes.push_back(new inverse_attribute("MapUsage", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcMappedItem_type, IFC4X3_RC2_IfcMappedItem_type->attributes()[0]));
        IFC4X3_RC2_IfcRepresentationMap_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ResourceOf", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToResource_type, IFC4X3_RC2_IfcRelAssignsToResource_type->attributes()[0]));
        IFC4X3_RC2_IfcResource_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReferences", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcShapeAspect_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("OfShapeAspect", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcShapeAspect_type, IFC4X3_RC2_IfcShapeAspect_type->attributes()[0]));
        IFC4X3_RC2_IfcShapeModel_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasCoverings", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelCoversSpaces_type, IFC4X3_RC2_IfcRelCoversSpaces_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("BoundedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelSpaceBoundary_type, IFC4X3_RC2_IfcRelSpaceBoundary_type->attributes()[0]));
        IFC4X3_RC2_IfcSpace_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(3);
        attributes.push_back(new inverse_attribute("ContainsElements", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, IFC4X3_RC2_IfcRelContainedInSpatialStructure_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ServicedBySystems", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelServicesBuildings_type, IFC4X3_RC2_IfcRelServicesBuildings_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("ReferencesElements", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type, IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type->attributes()[1]));
        IFC4X3_RC2_IfcSpatialElement_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("AssignedToStructuralItem", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelConnectsStructuralActivity_type, IFC4X3_RC2_IfcRelConnectsStructuralActivity_type->attributes()[1]));
        IFC4X3_RC2_IfcStructuralActivity_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ConnectsStructuralMembers", inverse_attribute::set_type, 1, -1, IFC4X3_RC2_IfcRelConnectsStructuralMember_type, IFC4X3_RC2_IfcRelConnectsStructuralMember_type->attributes()[1]));
        IFC4X3_RC2_IfcStructuralConnection_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("AssignedStructuralActivity", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelConnectsStructuralActivity_type, IFC4X3_RC2_IfcRelConnectsStructuralActivity_type->attributes()[0]));
        IFC4X3_RC2_IfcStructuralItem_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("SourceOfResultGroup", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcStructuralResultGroup_type, IFC4X3_RC2_IfcStructuralResultGroup_type->attributes()[1]));
        attributes.push_back(new inverse_attribute("LoadGroupFor", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcStructuralAnalysisModel_type, IFC4X3_RC2_IfcStructuralAnalysisModel_type->attributes()[2]));
        IFC4X3_RC2_IfcStructuralLoadGroup_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ConnectedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelConnectsStructuralMember_type, IFC4X3_RC2_IfcRelConnectsStructuralMember_type->attributes()[0]));
        IFC4X3_RC2_IfcStructuralMember_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ResultGroupFor", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcStructuralAnalysisModel_type, IFC4X3_RC2_IfcStructuralAnalysisModel_type->attributes()[3]));
        IFC4X3_RC2_IfcStructuralResultGroup_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("IsMappedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcTextureCoordinate_type, IFC4X3_RC2_IfcTextureCoordinate_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("UsedInStyles", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcSurfaceStyleWithTextures_type, IFC4X3_RC2_IfcSurfaceStyleWithTextures_type->attributes()[0]));
        IFC4X3_RC2_IfcSurfaceTexture_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("ServicesBuildings", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelServicesBuildings_type, IFC4X3_RC2_IfcRelServicesBuildings_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("ServicesFacilities", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type, IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type->attributes()[0]));
        IFC4X3_RC2_IfcSystem_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(2);
        attributes.push_back(new inverse_attribute("HasColours", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcIndexedColourMap_type, IFC4X3_RC2_IfcIndexedColourMap_type->attributes()[0]));
        attributes.push_back(new inverse_attribute("HasTextures", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcIndexedTextureMap_type, IFC4X3_RC2_IfcIndexedTextureMap_type->attributes()[0]));
        IFC4X3_RC2_IfcTessellatedFaceSet_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("HasExternalReference", inverse_attribute::set_type, 1, -1, IFC4X3_RC2_IfcExternalReferenceRelationship_type, IFC4X3_RC2_IfcExternalReferenceRelationship_type->attributes()[1]));
        IFC4X3_RC2_IfcTimeSeries_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("Types", inverse_attribute::set_type, 0, 1, IFC4X3_RC2_IfcRelDefinesByType_type, IFC4X3_RC2_IfcRelDefinesByType_type->attributes()[1]));
        IFC4X3_RC2_IfcTypeObject_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("OperatesOn", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToProcess_type, IFC4X3_RC2_IfcRelAssignsToProcess_type->attributes()[0]));
        IFC4X3_RC2_IfcTypeProcess_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ReferencedBy", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToProduct_type, IFC4X3_RC2_IfcRelAssignsToProduct_type->attributes()[0]));
        IFC4X3_RC2_IfcTypeProduct_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const inverse_attribute*> attributes; attributes.reserve(1);
        attributes.push_back(new inverse_attribute("ResourceOf", inverse_attribute::set_type, 0, -1, IFC4X3_RC2_IfcRelAssignsToResource_type, IFC4X3_RC2_IfcRelAssignsToResource_type->attributes()[0]));
        IFC4X3_RC2_IfcTypeResource_type->set_inverse_attributes(attributes);
    }
    {
        std::vector<const entity*> defs; defs.reserve(8);
        defs.push_back(IFC4X3_RC2_IfcActionRequest_type);defs.push_back(IFC4X3_RC2_IfcCostItem_type);defs.push_back(IFC4X3_RC2_IfcCostSchedule_type);defs.push_back(IFC4X3_RC2_IfcPerformanceHistory_type);defs.push_back(IFC4X3_RC2_IfcPermit_type);defs.push_back(IFC4X3_RC2_IfcProjectOrder_type);defs.push_back(IFC4X3_RC2_IfcWorkCalendar_type);defs.push_back(IFC4X3_RC2_IfcWorkControl_type);
        IFC4X3_RC2_IfcControl_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcActor_type);defs.push_back(IFC4X3_RC2_IfcControl_type);defs.push_back(IFC4X3_RC2_IfcGroup_type);defs.push_back(IFC4X3_RC2_IfcProcess_type);defs.push_back(IFC4X3_RC2_IfcProduct_type);defs.push_back(IFC4X3_RC2_IfcResource_type);
        IFC4X3_RC2_IfcObject_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(7);
        defs.push_back(IFC4X3_RC2_IfcActuator_type);defs.push_back(IFC4X3_RC2_IfcAlarm_type);defs.push_back(IFC4X3_RC2_IfcController_type);defs.push_back(IFC4X3_RC2_IfcFlowInstrument_type);defs.push_back(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type);defs.push_back(IFC4X3_RC2_IfcSensor_type);defs.push_back(IFC4X3_RC2_IfcUnitaryControlElement_type);
        IFC4X3_RC2_IfcDistributionControlElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(7);
        defs.push_back(IFC4X3_RC2_IfcActuatorType_type);defs.push_back(IFC4X3_RC2_IfcAlarmType_type);defs.push_back(IFC4X3_RC2_IfcControllerType_type);defs.push_back(IFC4X3_RC2_IfcFlowInstrumentType_type);defs.push_back(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type);defs.push_back(IFC4X3_RC2_IfcSensorType_type);defs.push_back(IFC4X3_RC2_IfcUnitaryControlElementType_type);
        IFC4X3_RC2_IfcDistributionControlElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcAdvancedBrep_type);defs.push_back(IFC4X3_RC2_IfcFacetedBrep_type);
        IFC4X3_RC2_IfcManifoldSolidBrep_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcAdvancedBrepWithVoids_type);
        IFC4X3_RC2_IfcAdvancedBrep_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcAdvancedFace_type);
        IFC4X3_RC2_IfcFaceSurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(16);
        defs.push_back(IFC4X3_RC2_IfcAirTerminal_type);defs.push_back(IFC4X3_RC2_IfcAudioVisualAppliance_type);defs.push_back(IFC4X3_RC2_IfcCommunicationsAppliance_type);defs.push_back(IFC4X3_RC2_IfcElectricAppliance_type);defs.push_back(IFC4X3_RC2_IfcFireSuppressionTerminal_type);defs.push_back(IFC4X3_RC2_IfcLamp_type);defs.push_back(IFC4X3_RC2_IfcLightFixture_type);defs.push_back(IFC4X3_RC2_IfcLiquidTerminal_type);defs.push_back(IFC4X3_RC2_IfcMedicalDevice_type);defs.push_back(IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type);defs.push_back(IFC4X3_RC2_IfcOutlet_type);defs.push_back(IFC4X3_RC2_IfcSanitaryTerminal_type);defs.push_back(IFC4X3_RC2_IfcSignal_type);defs.push_back(IFC4X3_RC2_IfcSpaceHeater_type);defs.push_back(IFC4X3_RC2_IfcStackTerminal_type);defs.push_back(IFC4X3_RC2_IfcWasteTerminal_type);
        IFC4X3_RC2_IfcFlowTerminal_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcAirTerminalBox_type);defs.push_back(IFC4X3_RC2_IfcDamper_type);defs.push_back(IFC4X3_RC2_IfcDistributionBoard_type);defs.push_back(IFC4X3_RC2_IfcElectricDistributionBoard_type);defs.push_back(IFC4X3_RC2_IfcElectricTimeControl_type);defs.push_back(IFC4X3_RC2_IfcFlowMeter_type);defs.push_back(IFC4X3_RC2_IfcProtectiveDevice_type);defs.push_back(IFC4X3_RC2_IfcSwitchingDevice_type);defs.push_back(IFC4X3_RC2_IfcValve_type);
        IFC4X3_RC2_IfcFlowController_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcAirTerminalBoxType_type);defs.push_back(IFC4X3_RC2_IfcDamperType_type);defs.push_back(IFC4X3_RC2_IfcDistributionBoardType_type);defs.push_back(IFC4X3_RC2_IfcElectricDistributionBoardType_type);defs.push_back(IFC4X3_RC2_IfcElectricTimeControlType_type);defs.push_back(IFC4X3_RC2_IfcFlowMeterType_type);defs.push_back(IFC4X3_RC2_IfcProtectiveDeviceType_type);defs.push_back(IFC4X3_RC2_IfcSwitchingDeviceType_type);defs.push_back(IFC4X3_RC2_IfcValveType_type);
        IFC4X3_RC2_IfcFlowControllerType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(16);
        defs.push_back(IFC4X3_RC2_IfcAirTerminalType_type);defs.push_back(IFC4X3_RC2_IfcAudioVisualApplianceType_type);defs.push_back(IFC4X3_RC2_IfcCommunicationsApplianceType_type);defs.push_back(IFC4X3_RC2_IfcElectricApplianceType_type);defs.push_back(IFC4X3_RC2_IfcFireSuppressionTerminalType_type);defs.push_back(IFC4X3_RC2_IfcLampType_type);defs.push_back(IFC4X3_RC2_IfcLightFixtureType_type);defs.push_back(IFC4X3_RC2_IfcLiquidTerminalType_type);defs.push_back(IFC4X3_RC2_IfcMedicalDeviceType_type);defs.push_back(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type);defs.push_back(IFC4X3_RC2_IfcOutletType_type);defs.push_back(IFC4X3_RC2_IfcSanitaryTerminalType_type);defs.push_back(IFC4X3_RC2_IfcSignalType_type);defs.push_back(IFC4X3_RC2_IfcSpaceHeaterType_type);defs.push_back(IFC4X3_RC2_IfcStackTerminalType_type);defs.push_back(IFC4X3_RC2_IfcWasteTerminalType_type);
        IFC4X3_RC2_IfcFlowTerminalType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(20);
        defs.push_back(IFC4X3_RC2_IfcAirToAirHeatRecovery_type);defs.push_back(IFC4X3_RC2_IfcBoiler_type);defs.push_back(IFC4X3_RC2_IfcBurner_type);defs.push_back(IFC4X3_RC2_IfcChiller_type);defs.push_back(IFC4X3_RC2_IfcCoil_type);defs.push_back(IFC4X3_RC2_IfcCondenser_type);defs.push_back(IFC4X3_RC2_IfcCooledBeam_type);defs.push_back(IFC4X3_RC2_IfcCoolingTower_type);defs.push_back(IFC4X3_RC2_IfcElectricGenerator_type);defs.push_back(IFC4X3_RC2_IfcElectricMotor_type);defs.push_back(IFC4X3_RC2_IfcEngine_type);defs.push_back(IFC4X3_RC2_IfcEvaporativeCooler_type);defs.push_back(IFC4X3_RC2_IfcEvaporator_type);defs.push_back(IFC4X3_RC2_IfcHeatExchanger_type);defs.push_back(IFC4X3_RC2_IfcHumidifier_type);defs.push_back(IFC4X3_RC2_IfcMotorConnection_type);defs.push_back(IFC4X3_RC2_IfcSolarDevice_type);defs.push_back(IFC4X3_RC2_IfcTransformer_type);defs.push_back(IFC4X3_RC2_IfcTubeBundle_type);defs.push_back(IFC4X3_RC2_IfcUnitaryEquipment_type);
        IFC4X3_RC2_IfcEnergyConversionDevice_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(20);
        defs.push_back(IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type);defs.push_back(IFC4X3_RC2_IfcBoilerType_type);defs.push_back(IFC4X3_RC2_IfcBurnerType_type);defs.push_back(IFC4X3_RC2_IfcChillerType_type);defs.push_back(IFC4X3_RC2_IfcCoilType_type);defs.push_back(IFC4X3_RC2_IfcCondenserType_type);defs.push_back(IFC4X3_RC2_IfcCooledBeamType_type);defs.push_back(IFC4X3_RC2_IfcCoolingTowerType_type);defs.push_back(IFC4X3_RC2_IfcElectricGeneratorType_type);defs.push_back(IFC4X3_RC2_IfcElectricMotorType_type);defs.push_back(IFC4X3_RC2_IfcEngineType_type);defs.push_back(IFC4X3_RC2_IfcEvaporativeCoolerType_type);defs.push_back(IFC4X3_RC2_IfcEvaporatorType_type);defs.push_back(IFC4X3_RC2_IfcHeatExchangerType_type);defs.push_back(IFC4X3_RC2_IfcHumidifierType_type);defs.push_back(IFC4X3_RC2_IfcMotorConnectionType_type);defs.push_back(IFC4X3_RC2_IfcSolarDeviceType_type);defs.push_back(IFC4X3_RC2_IfcTransformerType_type);defs.push_back(IFC4X3_RC2_IfcTubeBundleType_type);defs.push_back(IFC4X3_RC2_IfcUnitaryEquipmentType_type);
        IFC4X3_RC2_IfcEnergyConversionDeviceType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcAlignment_type);
        IFC4X3_RC2_IfcLinearPositioningElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type);defs.push_back(IFC4X3_RC2_IfcAlignment2DVerSegLine_type);defs.push_back(IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type);
        IFC4X3_RC2_IfcAlignmentVerticalSegment_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcAlignmentCant_type);defs.push_back(IFC4X3_RC2_IfcAlignmentHorizontal_type);defs.push_back(IFC4X3_RC2_IfcAlignmentSegment_type);defs.push_back(IFC4X3_RC2_IfcAlignmentVertical_type);
        IFC4X3_RC2_IfcLinearElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcAlignmentCantSegment_type);defs.push_back(IFC4X3_RC2_IfcAlignmentHorizontalSegment_type);defs.push_back(IFC4X3_RC2_IfcAlignmentVerticalSegment_type);
        IFC4X3_RC2_IfcAlignmentParameterSegment_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcAlignmentCurve_type);defs.push_back(IFC4X3_RC2_IfcBSplineCurve_type);defs.push_back(IFC4X3_RC2_IfcCompositeCurve_type);defs.push_back(IFC4X3_RC2_IfcCurveSegment2D_type);defs.push_back(IFC4X3_RC2_IfcGradientCurve_type);defs.push_back(IFC4X3_RC2_IfcIndexedPolyCurve_type);defs.push_back(IFC4X3_RC2_IfcPolyline_type);defs.push_back(IFC4X3_RC2_IfcSegmentedReferenceCurve_type);defs.push_back(IFC4X3_RC2_IfcTrimmedCurve_type);
        IFC4X3_RC2_IfcBoundedCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcAnnotation_type);defs.push_back(IFC4X3_RC2_IfcElement_type);defs.push_back(IFC4X3_RC2_IfcLinearElement_type);defs.push_back(IFC4X3_RC2_IfcPort_type);defs.push_back(IFC4X3_RC2_IfcPositioningElement_type);defs.push_back(IFC4X3_RC2_IfcProxy_type);defs.push_back(IFC4X3_RC2_IfcSpatialElement_type);defs.push_back(IFC4X3_RC2_IfcStructuralActivity_type);defs.push_back(IFC4X3_RC2_IfcStructuralItem_type);
        IFC4X3_RC2_IfcProduct_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(27);
        defs.push_back(IFC4X3_RC2_IfcAnnotationFillArea_type);defs.push_back(IFC4X3_RC2_IfcAxisLateralInclination_type);defs.push_back(IFC4X3_RC2_IfcBooleanResult_type);defs.push_back(IFC4X3_RC2_IfcBoundingBox_type);defs.push_back(IFC4X3_RC2_IfcCartesianPointList_type);defs.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator_type);defs.push_back(IFC4X3_RC2_IfcCsgPrimitive3D_type);defs.push_back(IFC4X3_RC2_IfcCurve_type);defs.push_back(IFC4X3_RC2_IfcDirection_type);defs.push_back(IFC4X3_RC2_IfcFaceBasedSurfaceModel_type);defs.push_back(IFC4X3_RC2_IfcFillAreaStyleHatching_type);defs.push_back(IFC4X3_RC2_IfcFillAreaStyleTiles_type);defs.push_back(IFC4X3_RC2_IfcGeometricSet_type);defs.push_back(IFC4X3_RC2_IfcHalfSpaceSolid_type);defs.push_back(IFC4X3_RC2_IfcLightSource_type);defs.push_back(IFC4X3_RC2_IfcLinearAxisWithInclination_type);defs.push_back(IFC4X3_RC2_IfcPlacement_type);defs.push_back(IFC4X3_RC2_IfcPlanarExtent_type);defs.push_back(IFC4X3_RC2_IfcPoint_type);defs.push_back(IFC4X3_RC2_IfcSectionedSpine_type);defs.push_back(IFC4X3_RC2_IfcSegment_type);defs.push_back(IFC4X3_RC2_IfcShellBasedSurfaceModel_type);defs.push_back(IFC4X3_RC2_IfcSolidModel_type);defs.push_back(IFC4X3_RC2_IfcSurface_type);defs.push_back(IFC4X3_RC2_IfcTessellatedItem_type);defs.push_back(IFC4X3_RC2_IfcTextLiteral_type);defs.push_back(IFC4X3_RC2_IfcVector_type);
        IFC4X3_RC2_IfcGeometricRepresentationItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcApprovalRelationship_type);defs.push_back(IFC4X3_RC2_IfcCurrencyRelationship_type);defs.push_back(IFC4X3_RC2_IfcDocumentInformationRelationship_type);defs.push_back(IFC4X3_RC2_IfcExternalReferenceRelationship_type);defs.push_back(IFC4X3_RC2_IfcMaterialRelationship_type);defs.push_back(IFC4X3_RC2_IfcOrganizationRelationship_type);defs.push_back(IFC4X3_RC2_IfcPropertyDependencyRelationship_type);defs.push_back(IFC4X3_RC2_IfcResourceApprovalRelationship_type);defs.push_back(IFC4X3_RC2_IfcResourceConstraintRelationship_type);
        IFC4X3_RC2_IfcResourceLevelRelationship_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcArbitraryClosedProfileDef_type);defs.push_back(IFC4X3_RC2_IfcArbitraryOpenProfileDef_type);defs.push_back(IFC4X3_RC2_IfcCompositeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcDerivedProfileDef_type);defs.push_back(IFC4X3_RC2_IfcOpenCrossProfileDef_type);defs.push_back(IFC4X3_RC2_IfcParameterizedProfileDef_type);
        IFC4X3_RC2_IfcProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type);
        IFC4X3_RC2_IfcArbitraryClosedProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcAsset_type);defs.push_back(IFC4X3_RC2_IfcInventory_type);defs.push_back(IFC4X3_RC2_IfcStructuralLoadGroup_type);defs.push_back(IFC4X3_RC2_IfcStructuralResultGroup_type);defs.push_back(IFC4X3_RC2_IfcSystem_type);
        IFC4X3_RC2_IfcGroup_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(11);
        defs.push_back(IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcCShapeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcCircleProfileDef_type);defs.push_back(IFC4X3_RC2_IfcEllipseProfileDef_type);defs.push_back(IFC4X3_RC2_IfcIShapeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcLShapeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcRectangleProfileDef_type);defs.push_back(IFC4X3_RC2_IfcTShapeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcTrapeziumProfileDef_type);defs.push_back(IFC4X3_RC2_IfcUShapeProfileDef_type);defs.push_back(IFC4X3_RC2_IfcZShapeProfileDef_type);
        IFC4X3_RC2_IfcParameterizedProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcAxis1Placement_type);defs.push_back(IFC4X3_RC2_IfcAxis2Placement2D_type);defs.push_back(IFC4X3_RC2_IfcAxis2Placement3D_type);defs.push_back(IFC4X3_RC2_IfcAxis2PlacementLinear_type);
        IFC4X3_RC2_IfcPlacement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBSplineCurveWithKnots_type);
        IFC4X3_RC2_IfcBSplineCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcBSplineSurface_type);defs.push_back(IFC4X3_RC2_IfcCurveBoundedPlane_type);defs.push_back(IFC4X3_RC2_IfcCurveBoundedSurface_type);defs.push_back(IFC4X3_RC2_IfcRectangularTrimmedSurface_type);
        IFC4X3_RC2_IfcBoundedSurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type);
        IFC4X3_RC2_IfcBSplineSurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(30);
        defs.push_back(IFC4X3_RC2_IfcBeam_type);defs.push_back(IFC4X3_RC2_IfcBearing_type);defs.push_back(IFC4X3_RC2_IfcBuildingElementProxy_type);defs.push_back(IFC4X3_RC2_IfcChimney_type);defs.push_back(IFC4X3_RC2_IfcColumn_type);defs.push_back(IFC4X3_RC2_IfcCourse_type);defs.push_back(IFC4X3_RC2_IfcCovering_type);defs.push_back(IFC4X3_RC2_IfcCurtainWall_type);defs.push_back(IFC4X3_RC2_IfcDeepFoundation_type);defs.push_back(IFC4X3_RC2_IfcDoor_type);defs.push_back(IFC4X3_RC2_IfcEarthworksElement_type);defs.push_back(IFC4X3_RC2_IfcFooting_type);defs.push_back(IFC4X3_RC2_IfcKerb_type);defs.push_back(IFC4X3_RC2_IfcMember_type);defs.push_back(IFC4X3_RC2_IfcMooringDevice_type);defs.push_back(IFC4X3_RC2_IfcNavigationElement_type);defs.push_back(IFC4X3_RC2_IfcPavement_type);defs.push_back(IFC4X3_RC2_IfcPlate_type);defs.push_back(IFC4X3_RC2_IfcRail_type);defs.push_back(IFC4X3_RC2_IfcRailing_type);defs.push_back(IFC4X3_RC2_IfcRamp_type);defs.push_back(IFC4X3_RC2_IfcRampFlight_type);defs.push_back(IFC4X3_RC2_IfcRoof_type);defs.push_back(IFC4X3_RC2_IfcShadingDevice_type);defs.push_back(IFC4X3_RC2_IfcSlab_type);defs.push_back(IFC4X3_RC2_IfcStair_type);defs.push_back(IFC4X3_RC2_IfcStairFlight_type);defs.push_back(IFC4X3_RC2_IfcTrackElement_type);defs.push_back(IFC4X3_RC2_IfcWall_type);defs.push_back(IFC4X3_RC2_IfcWindow_type);
        IFC4X3_RC2_IfcBuiltElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBeamStandardCase_type);
        IFC4X3_RC2_IfcBeam_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(29);
        defs.push_back(IFC4X3_RC2_IfcBeamType_type);defs.push_back(IFC4X3_RC2_IfcBearingType_type);defs.push_back(IFC4X3_RC2_IfcBuildingElementProxyType_type);defs.push_back(IFC4X3_RC2_IfcChimneyType_type);defs.push_back(IFC4X3_RC2_IfcColumnType_type);defs.push_back(IFC4X3_RC2_IfcCourseType_type);defs.push_back(IFC4X3_RC2_IfcCoveringType_type);defs.push_back(IFC4X3_RC2_IfcCurtainWallType_type);defs.push_back(IFC4X3_RC2_IfcDeepFoundationType_type);defs.push_back(IFC4X3_RC2_IfcDoorType_type);defs.push_back(IFC4X3_RC2_IfcFootingType_type);defs.push_back(IFC4X3_RC2_IfcKerbType_type);defs.push_back(IFC4X3_RC2_IfcMemberType_type);defs.push_back(IFC4X3_RC2_IfcMooringDeviceType_type);defs.push_back(IFC4X3_RC2_IfcNavigationElementType_type);defs.push_back(IFC4X3_RC2_IfcPavementType_type);defs.push_back(IFC4X3_RC2_IfcPlateType_type);defs.push_back(IFC4X3_RC2_IfcRailType_type);defs.push_back(IFC4X3_RC2_IfcRailingType_type);defs.push_back(IFC4X3_RC2_IfcRampFlightType_type);defs.push_back(IFC4X3_RC2_IfcRampType_type);defs.push_back(IFC4X3_RC2_IfcRoofType_type);defs.push_back(IFC4X3_RC2_IfcShadingDeviceType_type);defs.push_back(IFC4X3_RC2_IfcSlabType_type);defs.push_back(IFC4X3_RC2_IfcStairFlightType_type);defs.push_back(IFC4X3_RC2_IfcStairType_type);defs.push_back(IFC4X3_RC2_IfcTrackElementType_type);defs.push_back(IFC4X3_RC2_IfcWallType_type);defs.push_back(IFC4X3_RC2_IfcWindowType_type);
        IFC4X3_RC2_IfcBuiltElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcBlobTexture_type);defs.push_back(IFC4X3_RC2_IfcImageTexture_type);defs.push_back(IFC4X3_RC2_IfcPixelTexture_type);
        IFC4X3_RC2_IfcSurfaceTexture_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcBlock_type);defs.push_back(IFC4X3_RC2_IfcRectangularPyramid_type);defs.push_back(IFC4X3_RC2_IfcRightCircularCone_type);defs.push_back(IFC4X3_RC2_IfcRightCircularCylinder_type);defs.push_back(IFC4X3_RC2_IfcSphere_type);
        IFC4X3_RC2_IfcCsgPrimitive3D_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcBlossCurve_type);defs.push_back(IFC4X3_RC2_IfcBoundedCurve_type);defs.push_back(IFC4X3_RC2_IfcClothoid_type);defs.push_back(IFC4X3_RC2_IfcConic_type);defs.push_back(IFC4X3_RC2_IfcLine_type);defs.push_back(IFC4X3_RC2_IfcOffsetCurve_type);defs.push_back(IFC4X3_RC2_IfcPcurve_type);defs.push_back(IFC4X3_RC2_IfcSeriesParameterCurve_type);defs.push_back(IFC4X3_RC2_IfcSurfaceCurve_type);
        IFC4X3_RC2_IfcCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBooleanClippingResult_type);
        IFC4X3_RC2_IfcBooleanResult_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcBorehole_type);defs.push_back(IFC4X3_RC2_IfcGeomodel_type);defs.push_back(IFC4X3_RC2_IfcGeoslice_type);
        IFC4X3_RC2_IfcGeotechnicalAssembly_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBoundaryCurve_type);
        IFC4X3_RC2_IfcCompositeCurveOnSurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcBoundaryEdgeCondition_type);defs.push_back(IFC4X3_RC2_IfcBoundaryFaceCondition_type);defs.push_back(IFC4X3_RC2_IfcBoundaryNodeCondition_type);
        IFC4X3_RC2_IfcBoundaryCondition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type);
        IFC4X3_RC2_IfcBoundaryNodeCondition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcBoundedSurface_type);defs.push_back(IFC4X3_RC2_IfcElementarySurface_type);defs.push_back(IFC4X3_RC2_IfcSectionedSurface_type);defs.push_back(IFC4X3_RC2_IfcSweptSurface_type);
        IFC4X3_RC2_IfcSurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcBoxedHalfSpace_type);defs.push_back(IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type);
        IFC4X3_RC2_IfcHalfSpaceSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcBridge_type);defs.push_back(IFC4X3_RC2_IfcBuilding_type);defs.push_back(IFC4X3_RC2_IfcMarineFacility_type);defs.push_back(IFC4X3_RC2_IfcRailway_type);defs.push_back(IFC4X3_RC2_IfcRoad_type);
        IFC4X3_RC2_IfcFacility_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcBridgePart_type);
        IFC4X3_RC2_IfcFacilityPart_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcBuildingElementPart_type);defs.push_back(IFC4X3_RC2_IfcDiscreteAccessory_type);defs.push_back(IFC4X3_RC2_IfcFastener_type);defs.push_back(IFC4X3_RC2_IfcImpactProtectionDevice_type);defs.push_back(IFC4X3_RC2_IfcMechanicalFastener_type);defs.push_back(IFC4X3_RC2_IfcReinforcingElement_type);defs.push_back(IFC4X3_RC2_IfcSign_type);defs.push_back(IFC4X3_RC2_IfcVibrationDamper_type);defs.push_back(IFC4X3_RC2_IfcVibrationIsolator_type);
        IFC4X3_RC2_IfcElementComponent_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcBuildingElementPartType_type);defs.push_back(IFC4X3_RC2_IfcDiscreteAccessoryType_type);defs.push_back(IFC4X3_RC2_IfcFastenerType_type);defs.push_back(IFC4X3_RC2_IfcImpactProtectionDeviceType_type);defs.push_back(IFC4X3_RC2_IfcMechanicalFastenerType_type);defs.push_back(IFC4X3_RC2_IfcReinforcingElementType_type);defs.push_back(IFC4X3_RC2_IfcSignType_type);defs.push_back(IFC4X3_RC2_IfcVibrationDamperType_type);defs.push_back(IFC4X3_RC2_IfcVibrationIsolatorType_type);
        IFC4X3_RC2_IfcElementComponentType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcBuildingStorey_type);defs.push_back(IFC4X3_RC2_IfcFacility_type);defs.push_back(IFC4X3_RC2_IfcFacilityPart_type);defs.push_back(IFC4X3_RC2_IfcSite_type);defs.push_back(IFC4X3_RC2_IfcSpace_type);
        IFC4X3_RC2_IfcSpatialStructureElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcBuildingSystem_type);defs.push_back(IFC4X3_RC2_IfcBuiltSystem_type);defs.push_back(IFC4X3_RC2_IfcDistributionSystem_type);defs.push_back(IFC4X3_RC2_IfcStructuralAnalysisModel_type);defs.push_back(IFC4X3_RC2_IfcZone_type);
        IFC4X3_RC2_IfcSystem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(11);
        defs.push_back(IFC4X3_RC2_IfcBuiltElement_type);defs.push_back(IFC4X3_RC2_IfcCivilElement_type);defs.push_back(IFC4X3_RC2_IfcDistributionElement_type);defs.push_back(IFC4X3_RC2_IfcElementAssembly_type);defs.push_back(IFC4X3_RC2_IfcElementComponent_type);defs.push_back(IFC4X3_RC2_IfcFeatureElement_type);defs.push_back(IFC4X3_RC2_IfcFurnishingElement_type);defs.push_back(IFC4X3_RC2_IfcGeographicElement_type);defs.push_back(IFC4X3_RC2_IfcGeotechnicalElement_type);defs.push_back(IFC4X3_RC2_IfcTransportElement_type);defs.push_back(IFC4X3_RC2_IfcVirtualElement_type);
        IFC4X3_RC2_IfcElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(8);
        defs.push_back(IFC4X3_RC2_IfcBuiltElementType_type);defs.push_back(IFC4X3_RC2_IfcCivilElementType_type);defs.push_back(IFC4X3_RC2_IfcDistributionElementType_type);defs.push_back(IFC4X3_RC2_IfcElementAssemblyType_type);defs.push_back(IFC4X3_RC2_IfcElementComponentType_type);defs.push_back(IFC4X3_RC2_IfcFurnishingElementType_type);defs.push_back(IFC4X3_RC2_IfcGeographicElementType_type);defs.push_back(IFC4X3_RC2_IfcTransportElementType_type);
        IFC4X3_RC2_IfcElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcCableCarrierFitting_type);defs.push_back(IFC4X3_RC2_IfcCableFitting_type);defs.push_back(IFC4X3_RC2_IfcDuctFitting_type);defs.push_back(IFC4X3_RC2_IfcJunctionBox_type);defs.push_back(IFC4X3_RC2_IfcPipeFitting_type);
        IFC4X3_RC2_IfcFlowFitting_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcCableCarrierFittingType_type);defs.push_back(IFC4X3_RC2_IfcCableFittingType_type);defs.push_back(IFC4X3_RC2_IfcDuctFittingType_type);defs.push_back(IFC4X3_RC2_IfcJunctionBoxType_type);defs.push_back(IFC4X3_RC2_IfcPipeFittingType_type);
        IFC4X3_RC2_IfcFlowFittingType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcCableCarrierSegment_type);defs.push_back(IFC4X3_RC2_IfcCableSegment_type);defs.push_back(IFC4X3_RC2_IfcConveyorSegment_type);defs.push_back(IFC4X3_RC2_IfcDuctSegment_type);defs.push_back(IFC4X3_RC2_IfcPipeSegment_type);
        IFC4X3_RC2_IfcFlowSegment_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcCableCarrierSegmentType_type);defs.push_back(IFC4X3_RC2_IfcCableSegmentType_type);defs.push_back(IFC4X3_RC2_IfcConveyorSegmentType_type);defs.push_back(IFC4X3_RC2_IfcDuctSegmentType_type);defs.push_back(IFC4X3_RC2_IfcPipeSegmentType_type);
        IFC4X3_RC2_IfcFlowSegmentType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcCaissonFoundation_type);defs.push_back(IFC4X3_RC2_IfcPile_type);
        IFC4X3_RC2_IfcDeepFoundation_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcCaissonFoundationType_type);defs.push_back(IFC4X3_RC2_IfcPileType_type);
        IFC4X3_RC2_IfcDeepFoundationType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcCartesianPoint_type);defs.push_back(IFC4X3_RC2_IfcPointByDistanceExpression_type);defs.push_back(IFC4X3_RC2_IfcPointOnCurve_type);defs.push_back(IFC4X3_RC2_IfcPointOnSurface_type);
        IFC4X3_RC2_IfcPoint_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcCartesianPointList2D_type);defs.push_back(IFC4X3_RC2_IfcCartesianPointList3D_type);
        IFC4X3_RC2_IfcCartesianPointList_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator2D_type);defs.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator3D_type);
        IFC4X3_RC2_IfcCartesianTransformationOperator_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type);
        IFC4X3_RC2_IfcCartesianTransformationOperator2D_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type);
        IFC4X3_RC2_IfcCartesianTransformationOperator3D_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcCenterLineProfileDef_type);
        IFC4X3_RC2_IfcArbitraryOpenProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcCircle_type);defs.push_back(IFC4X3_RC2_IfcEllipse_type);
        IFC4X3_RC2_IfcConic_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcCircleHollowProfileDef_type);
        IFC4X3_RC2_IfcCircleProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcCircularArcSegment2D_type);defs.push_back(IFC4X3_RC2_IfcLineSegment2D_type);defs.push_back(IFC4X3_RC2_IfcTransitionCurveSegment2D_type);
        IFC4X3_RC2_IfcCurveSegment2D_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcClassification_type);defs.push_back(IFC4X3_RC2_IfcDocumentInformation_type);defs.push_back(IFC4X3_RC2_IfcLibraryInformation_type);
        IFC4X3_RC2_IfcExternalInformation_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcClassificationReference_type);defs.push_back(IFC4X3_RC2_IfcDocumentReference_type);defs.push_back(IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type);defs.push_back(IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type);defs.push_back(IFC4X3_RC2_IfcExternallyDefinedTextFont_type);defs.push_back(IFC4X3_RC2_IfcLibraryReference_type);
        IFC4X3_RC2_IfcExternalReference_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcClosedShell_type);defs.push_back(IFC4X3_RC2_IfcOpenShell_type);
        IFC4X3_RC2_IfcConnectedFaceSet_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcColourRgb_type);
        IFC4X3_RC2_IfcColourSpecification_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(17);
        defs.push_back(IFC4X3_RC2_IfcColourRgbList_type);defs.push_back(IFC4X3_RC2_IfcColourSpecification_type);defs.push_back(IFC4X3_RC2_IfcCurveStyleFont_type);defs.push_back(IFC4X3_RC2_IfcCurveStyleFontAndScaling_type);defs.push_back(IFC4X3_RC2_IfcCurveStyleFontPattern_type);defs.push_back(IFC4X3_RC2_IfcIndexedColourMap_type);defs.push_back(IFC4X3_RC2_IfcPreDefinedItem_type);defs.push_back(IFC4X3_RC2_IfcSurfaceStyleLighting_type);defs.push_back(IFC4X3_RC2_IfcSurfaceStyleRefraction_type);defs.push_back(IFC4X3_RC2_IfcSurfaceStyleShading_type);defs.push_back(IFC4X3_RC2_IfcSurfaceStyleWithTextures_type);defs.push_back(IFC4X3_RC2_IfcSurfaceTexture_type);defs.push_back(IFC4X3_RC2_IfcTextStyleForDefinedFont_type);defs.push_back(IFC4X3_RC2_IfcTextStyleTextModel_type);defs.push_back(IFC4X3_RC2_IfcTextureCoordinate_type);defs.push_back(IFC4X3_RC2_IfcTextureVertex_type);defs.push_back(IFC4X3_RC2_IfcTextureVertexList_type);
        IFC4X3_RC2_IfcPresentationItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcColumnStandardCase_type);
        IFC4X3_RC2_IfcColumn_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcComplexProperty_type);defs.push_back(IFC4X3_RC2_IfcSimpleProperty_type);
        IFC4X3_RC2_IfcProperty_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcComplexPropertyTemplate_type);defs.push_back(IFC4X3_RC2_IfcSimplePropertyTemplate_type);
        IFC4X3_RC2_IfcPropertyTemplate_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcCompositeCurveOnSurface_type);
        IFC4X3_RC2_IfcCompositeCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcCompositeCurveSegment_type);defs.push_back(IFC4X3_RC2_IfcCurveSegment_type);
        IFC4X3_RC2_IfcSegment_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcCompressor_type);defs.push_back(IFC4X3_RC2_IfcFan_type);defs.push_back(IFC4X3_RC2_IfcPump_type);
        IFC4X3_RC2_IfcFlowMovingDevice_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcCompressorType_type);defs.push_back(IFC4X3_RC2_IfcFanType_type);defs.push_back(IFC4X3_RC2_IfcPumpType_type);
        IFC4X3_RC2_IfcFlowMovingDeviceType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(7);
        defs.push_back(IFC4X3_RC2_IfcConnectedFaceSet_type);defs.push_back(IFC4X3_RC2_IfcEdge_type);defs.push_back(IFC4X3_RC2_IfcFace_type);defs.push_back(IFC4X3_RC2_IfcFaceBound_type);defs.push_back(IFC4X3_RC2_IfcLoop_type);defs.push_back(IFC4X3_RC2_IfcPath_type);defs.push_back(IFC4X3_RC2_IfcVertex_type);
        IFC4X3_RC2_IfcTopologicalRepresentationItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcConnectionCurveGeometry_type);defs.push_back(IFC4X3_RC2_IfcConnectionPointGeometry_type);defs.push_back(IFC4X3_RC2_IfcConnectionSurfaceGeometry_type);defs.push_back(IFC4X3_RC2_IfcConnectionVolumeGeometry_type);
        IFC4X3_RC2_IfcConnectionGeometry_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcConnectionPointEccentricity_type);
        IFC4X3_RC2_IfcConnectionPointGeometry_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcConstructionEquipmentResource_type);defs.push_back(IFC4X3_RC2_IfcConstructionMaterialResource_type);defs.push_back(IFC4X3_RC2_IfcConstructionProductResource_type);defs.push_back(IFC4X3_RC2_IfcCrewResource_type);defs.push_back(IFC4X3_RC2_IfcLaborResource_type);defs.push_back(IFC4X3_RC2_IfcSubContractResource_type);
        IFC4X3_RC2_IfcConstructionResource_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcConstructionEquipmentResourceType_type);defs.push_back(IFC4X3_RC2_IfcConstructionMaterialResourceType_type);defs.push_back(IFC4X3_RC2_IfcConstructionProductResourceType_type);defs.push_back(IFC4X3_RC2_IfcCrewResourceType_type);defs.push_back(IFC4X3_RC2_IfcLaborResourceType_type);defs.push_back(IFC4X3_RC2_IfcSubContractResourceType_type);
        IFC4X3_RC2_IfcConstructionResourceType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcConstructionResource_type);
        IFC4X3_RC2_IfcResource_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcConstructionResourceType_type);
        IFC4X3_RC2_IfcTypeResource_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcContext_type);defs.push_back(IFC4X3_RC2_IfcObject_type);defs.push_back(IFC4X3_RC2_IfcTypeObject_type);
        IFC4X3_RC2_IfcObjectDefinition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcContextDependentUnit_type);defs.push_back(IFC4X3_RC2_IfcConversionBasedUnit_type);defs.push_back(IFC4X3_RC2_IfcSIUnit_type);
        IFC4X3_RC2_IfcNamedUnit_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type);
        IFC4X3_RC2_IfcConversionBasedUnit_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcCostValue_type);
        IFC4X3_RC2_IfcAppliedValue_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcCsgSolid_type);defs.push_back(IFC4X3_RC2_IfcManifoldSolidBrep_type);defs.push_back(IFC4X3_RC2_IfcSectionedSolid_type);defs.push_back(IFC4X3_RC2_IfcSweptAreaSolid_type);defs.push_back(IFC4X3_RC2_IfcSweptDiskSolid_type);
        IFC4X3_RC2_IfcSolidModel_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcCurveStyle_type);defs.push_back(IFC4X3_RC2_IfcFillAreaStyle_type);defs.push_back(IFC4X3_RC2_IfcSurfaceStyle_type);defs.push_back(IFC4X3_RC2_IfcTextStyle_type);
        IFC4X3_RC2_IfcPresentationStyle_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcCylindricalSurface_type);defs.push_back(IFC4X3_RC2_IfcPlane_type);defs.push_back(IFC4X3_RC2_IfcSphericalSurface_type);defs.push_back(IFC4X3_RC2_IfcToroidalSurface_type);
        IFC4X3_RC2_IfcElementarySurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type);defs.push_back(IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type);defs.push_back(IFC4X3_RC2_IfcExtrudedAreaSolid_type);defs.push_back(IFC4X3_RC2_IfcRevolvedAreaSolid_type);
        IFC4X3_RC2_IfcSweptAreaSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcDistributionChamberElement_type);defs.push_back(IFC4X3_RC2_IfcEnergyConversionDevice_type);defs.push_back(IFC4X3_RC2_IfcFlowController_type);defs.push_back(IFC4X3_RC2_IfcFlowFitting_type);defs.push_back(IFC4X3_RC2_IfcFlowMovingDevice_type);defs.push_back(IFC4X3_RC2_IfcFlowSegment_type);defs.push_back(IFC4X3_RC2_IfcFlowStorageDevice_type);defs.push_back(IFC4X3_RC2_IfcFlowTerminal_type);defs.push_back(IFC4X3_RC2_IfcFlowTreatmentDevice_type);
        IFC4X3_RC2_IfcDistributionFlowElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(9);
        defs.push_back(IFC4X3_RC2_IfcDistributionChamberElementType_type);defs.push_back(IFC4X3_RC2_IfcEnergyConversionDeviceType_type);defs.push_back(IFC4X3_RC2_IfcFlowControllerType_type);defs.push_back(IFC4X3_RC2_IfcFlowFittingType_type);defs.push_back(IFC4X3_RC2_IfcFlowMovingDeviceType_type);defs.push_back(IFC4X3_RC2_IfcFlowSegmentType_type);defs.push_back(IFC4X3_RC2_IfcFlowStorageDeviceType_type);defs.push_back(IFC4X3_RC2_IfcFlowTerminalType_type);defs.push_back(IFC4X3_RC2_IfcFlowTreatmentDeviceType_type);
        IFC4X3_RC2_IfcDistributionFlowElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcDistributionCircuit_type);
        IFC4X3_RC2_IfcDistributionSystem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcDistributionControlElement_type);defs.push_back(IFC4X3_RC2_IfcDistributionFlowElement_type);
        IFC4X3_RC2_IfcDistributionElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcDistributionControlElementType_type);defs.push_back(IFC4X3_RC2_IfcDistributionFlowElementType_type);
        IFC4X3_RC2_IfcDistributionElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcDistributionPort_type);
        IFC4X3_RC2_IfcPort_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcDoorLiningProperties_type);defs.push_back(IFC4X3_RC2_IfcDoorPanelProperties_type);defs.push_back(IFC4X3_RC2_IfcPermeableCoveringProperties_type);defs.push_back(IFC4X3_RC2_IfcReinforcementDefinitionProperties_type);defs.push_back(IFC4X3_RC2_IfcWindowLiningProperties_type);defs.push_back(IFC4X3_RC2_IfcWindowPanelProperties_type);
        IFC4X3_RC2_IfcPreDefinedPropertySet_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcDoorStandardCase_type);
        IFC4X3_RC2_IfcDoor_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcDoorStyle_type);defs.push_back(IFC4X3_RC2_IfcElementType_type);defs.push_back(IFC4X3_RC2_IfcSpatialElementType_type);defs.push_back(IFC4X3_RC2_IfcWindowStyle_type);
        IFC4X3_RC2_IfcTypeProduct_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcDraughtingPreDefinedColour_type);
        IFC4X3_RC2_IfcPreDefinedColour_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type);
        IFC4X3_RC2_IfcPreDefinedCurveFont_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcDuctSilencer_type);defs.push_back(IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type);defs.push_back(IFC4X3_RC2_IfcFilter_type);defs.push_back(IFC4X3_RC2_IfcInterceptor_type);
        IFC4X3_RC2_IfcFlowTreatmentDevice_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcDuctSilencerType_type);defs.push_back(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type);defs.push_back(IFC4X3_RC2_IfcFilterType_type);defs.push_back(IFC4X3_RC2_IfcInterceptorType_type);
        IFC4X3_RC2_IfcFlowTreatmentDeviceType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcEarthworksCut_type);defs.push_back(IFC4X3_RC2_IfcOpeningElement_type);defs.push_back(IFC4X3_RC2_IfcVoidingFeature_type);
        IFC4X3_RC2_IfcFeatureElementSubtraction_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcEarthworksFill_type);defs.push_back(IFC4X3_RC2_IfcReinforcedSoil_type);
        IFC4X3_RC2_IfcEarthworksElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcEdgeCurve_type);defs.push_back(IFC4X3_RC2_IfcOrientedEdge_type);defs.push_back(IFC4X3_RC2_IfcSubedge_type);
        IFC4X3_RC2_IfcEdge_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcEdgeLoop_type);defs.push_back(IFC4X3_RC2_IfcPolyLoop_type);defs.push_back(IFC4X3_RC2_IfcVertexLoop_type);
        IFC4X3_RC2_IfcLoop_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcElectricFlowStorageDevice_type);defs.push_back(IFC4X3_RC2_IfcTank_type);
        IFC4X3_RC2_IfcFlowStorageDevice_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type);defs.push_back(IFC4X3_RC2_IfcTankType_type);
        IFC4X3_RC2_IfcFlowStorageDeviceType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcElementQuantity_type);
        IFC4X3_RC2_IfcQuantitySet_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcEvent_type);defs.push_back(IFC4X3_RC2_IfcProcedure_type);defs.push_back(IFC4X3_RC2_IfcTask_type);
        IFC4X3_RC2_IfcProcess_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcEventTime_type);defs.push_back(IFC4X3_RC2_IfcLagTime_type);defs.push_back(IFC4X3_RC2_IfcResourceTime_type);defs.push_back(IFC4X3_RC2_IfcTaskTime_type);defs.push_back(IFC4X3_RC2_IfcWorkTime_type);
        IFC4X3_RC2_IfcSchedulingTime_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcEventType_type);defs.push_back(IFC4X3_RC2_IfcProcedureType_type);defs.push_back(IFC4X3_RC2_IfcTaskType_type);
        IFC4X3_RC2_IfcTypeProcess_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcExtendedProperties_type);defs.push_back(IFC4X3_RC2_IfcPreDefinedProperties_type);defs.push_back(IFC4X3_RC2_IfcProperty_type);defs.push_back(IFC4X3_RC2_IfcPropertyEnumeration_type);
        IFC4X3_RC2_IfcPropertyAbstraction_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcExternalSpatialElement_type);
        IFC4X3_RC2_IfcExternalSpatialStructureElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcExternalSpatialStructureElement_type);defs.push_back(IFC4X3_RC2_IfcSpatialStructureElement_type);defs.push_back(IFC4X3_RC2_IfcSpatialZone_type);
        IFC4X3_RC2_IfcSpatialElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type);
        IFC4X3_RC2_IfcExtrudedAreaSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcFaceOuterBound_type);
        IFC4X3_RC2_IfcFaceBound_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcFaceSurface_type);
        IFC4X3_RC2_IfcFace_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcFacetedBrepWithVoids_type);
        IFC4X3_RC2_IfcFacetedBrep_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcFailureConnectionCondition_type);defs.push_back(IFC4X3_RC2_IfcSlippageConnectionCondition_type);
        IFC4X3_RC2_IfcStructuralConnectionCondition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcFeatureElementAddition_type);defs.push_back(IFC4X3_RC2_IfcFeatureElementSubtraction_type);defs.push_back(IFC4X3_RC2_IfcSurfaceFeature_type);
        IFC4X3_RC2_IfcFeatureElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type);defs.push_back(IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type);
        IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcFurniture_type);defs.push_back(IFC4X3_RC2_IfcSystemFurnitureElement_type);
        IFC4X3_RC2_IfcFurnishingElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcFurnitureType_type);defs.push_back(IFC4X3_RC2_IfcSystemFurnitureElementType_type);
        IFC4X3_RC2_IfcFurnishingElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcGeometricCurveSet_type);
        IFC4X3_RC2_IfcGeometricSet_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcGeometricRepresentationContext_type);
        IFC4X3_RC2_IfcRepresentationContext_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcGeometricRepresentationItem_type);defs.push_back(IFC4X3_RC2_IfcMappedItem_type);defs.push_back(IFC4X3_RC2_IfcStyledItem_type);defs.push_back(IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
        IFC4X3_RC2_IfcRepresentationItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcGeometricRepresentationSubContext_type);
        IFC4X3_RC2_IfcGeometricRepresentationContext_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcGeotechnicalAssembly_type);defs.push_back(IFC4X3_RC2_IfcGeotechnicalStratum_type);
        IFC4X3_RC2_IfcGeotechnicalElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcGrid_type);defs.push_back(IFC4X3_RC2_IfcLinearPositioningElement_type);defs.push_back(IFC4X3_RC2_IfcReferent_type);
        IFC4X3_RC2_IfcPositioningElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcGridPlacement_type);defs.push_back(IFC4X3_RC2_IfcLinearPlacement_type);defs.push_back(IFC4X3_RC2_IfcLocalPlacement_type);
        IFC4X3_RC2_IfcObjectPlacement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type);
        IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcIndexedPolygonalFace_type);defs.push_back(IFC4X3_RC2_IfcTessellatedFaceSet_type);
        IFC4X3_RC2_IfcTessellatedItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type);
        IFC4X3_RC2_IfcIndexedPolygonalFace_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcIndexedTextureMap_type);defs.push_back(IFC4X3_RC2_IfcTextureCoordinateGenerator_type);defs.push_back(IFC4X3_RC2_IfcTextureMap_type);
        IFC4X3_RC2_IfcTextureCoordinate_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcIndexedTriangleTextureMap_type);
        IFC4X3_RC2_IfcIndexedTextureMap_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcIntersectionCurve_type);defs.push_back(IFC4X3_RC2_IfcSeamCurve_type);
        IFC4X3_RC2_IfcSurfaceCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcIrregularTimeSeries_type);defs.push_back(IFC4X3_RC2_IfcRegularTimeSeries_type);
        IFC4X3_RC2_IfcTimeSeries_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcLightSourceAmbient_type);defs.push_back(IFC4X3_RC2_IfcLightSourceDirectional_type);defs.push_back(IFC4X3_RC2_IfcLightSourceGoniometric_type);defs.push_back(IFC4X3_RC2_IfcLightSourcePositional_type);
        IFC4X3_RC2_IfcLightSource_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcLightSourceSpot_type);
        IFC4X3_RC2_IfcLightSourcePositional_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcLinearPlacementWithInclination_type);defs.push_back(IFC4X3_RC2_IfcLinearSpanPlacement_type);
        IFC4X3_RC2_IfcLinearPlacement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcMapConversion_type);
        IFC4X3_RC2_IfcCoordinateOperation_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(7);
        defs.push_back(IFC4X3_RC2_IfcMaterial_type);defs.push_back(IFC4X3_RC2_IfcMaterialConstituent_type);defs.push_back(IFC4X3_RC2_IfcMaterialConstituentSet_type);defs.push_back(IFC4X3_RC2_IfcMaterialLayer_type);defs.push_back(IFC4X3_RC2_IfcMaterialLayerSet_type);defs.push_back(IFC4X3_RC2_IfcMaterialProfile_type);defs.push_back(IFC4X3_RC2_IfcMaterialProfileSet_type);
        IFC4X3_RC2_IfcMaterialDefinition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type);defs.push_back(IFC4X3_RC2_IfcProductDefinitionShape_type);
        IFC4X3_RC2_IfcProductRepresentation_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcMaterialLayerSetUsage_type);defs.push_back(IFC4X3_RC2_IfcMaterialProfileSetUsage_type);
        IFC4X3_RC2_IfcMaterialUsageDefinition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcMaterialLayerWithOffsets_type);
        IFC4X3_RC2_IfcMaterialLayer_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type);
        IFC4X3_RC2_IfcMaterialProfileSetUsage_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcMaterialProfileWithOffsets_type);
        IFC4X3_RC2_IfcMaterialProfile_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcMaterialProperties_type);defs.push_back(IFC4X3_RC2_IfcProfileProperties_type);
        IFC4X3_RC2_IfcExtendedProperties_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcMemberStandardCase_type);
        IFC4X3_RC2_IfcMember_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcMetric_type);defs.push_back(IFC4X3_RC2_IfcObjective_type);
        IFC4X3_RC2_IfcConstraint_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcMirroredProfileDef_type);
        IFC4X3_RC2_IfcDerivedProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcObjectDefinition_type);defs.push_back(IFC4X3_RC2_IfcPropertyDefinition_type);defs.push_back(IFC4X3_RC2_IfcRelationship_type);
        IFC4X3_RC2_IfcRoot_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcOccupant_type);
        IFC4X3_RC2_IfcActor_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcOffsetCurve2D_type);defs.push_back(IFC4X3_RC2_IfcOffsetCurve3D_type);defs.push_back(IFC4X3_RC2_IfcOffsetCurveByDistances_type);
        IFC4X3_RC2_IfcOffsetCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcOpeningStandardCase_type);
        IFC4X3_RC2_IfcOpeningElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcOuterBoundaryCurve_type);
        IFC4X3_RC2_IfcBoundaryCurve_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcPhysicalComplexQuantity_type);defs.push_back(IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
        IFC4X3_RC2_IfcPhysicalQuantity_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcPlanarBox_type);
        IFC4X3_RC2_IfcPlanarExtent_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcPlant_type);
        IFC4X3_RC2_IfcGeographicElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcPlateStandardCase_type);
        IFC4X3_RC2_IfcPlate_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcPolygonalFaceSet_type);defs.push_back(IFC4X3_RC2_IfcTriangulatedFaceSet_type);
        IFC4X3_RC2_IfcTessellatedFaceSet_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcPostalAddress_type);defs.push_back(IFC4X3_RC2_IfcTelecomAddress_type);
        IFC4X3_RC2_IfcAddress_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcPreDefinedColour_type);defs.push_back(IFC4X3_RC2_IfcPreDefinedCurveFont_type);defs.push_back(IFC4X3_RC2_IfcPreDefinedTextFont_type);
        IFC4X3_RC2_IfcPreDefinedItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcPreDefinedPropertySet_type);defs.push_back(IFC4X3_RC2_IfcPropertySet_type);defs.push_back(IFC4X3_RC2_IfcQuantitySet_type);
        IFC4X3_RC2_IfcPropertySetDefinition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcPresentationLayerWithStyle_type);
        IFC4X3_RC2_IfcPresentationLayerAssignment_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcProject_type);defs.push_back(IFC4X3_RC2_IfcProjectLibrary_type);
        IFC4X3_RC2_IfcContext_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcProjectedCRS_type);
        IFC4X3_RC2_IfcCoordinateReferenceSystem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcProjectionElement_type);
        IFC4X3_RC2_IfcFeatureElementAddition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcPropertyBoundedValue_type);defs.push_back(IFC4X3_RC2_IfcPropertyEnumeratedValue_type);defs.push_back(IFC4X3_RC2_IfcPropertyListValue_type);defs.push_back(IFC4X3_RC2_IfcPropertyReferenceValue_type);defs.push_back(IFC4X3_RC2_IfcPropertySingleValue_type);defs.push_back(IFC4X3_RC2_IfcPropertyTableValue_type);
        IFC4X3_RC2_IfcSimpleProperty_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcPropertySetDefinition_type);defs.push_back(IFC4X3_RC2_IfcPropertyTemplateDefinition_type);
        IFC4X3_RC2_IfcPropertyDefinition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcPropertySetTemplate_type);defs.push_back(IFC4X3_RC2_IfcPropertyTemplate_type);
        IFC4X3_RC2_IfcPropertyTemplateDefinition_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcQuantityArea_type);defs.push_back(IFC4X3_RC2_IfcQuantityCount_type);defs.push_back(IFC4X3_RC2_IfcQuantityLength_type);defs.push_back(IFC4X3_RC2_IfcQuantityTime_type);defs.push_back(IFC4X3_RC2_IfcQuantityVolume_type);defs.push_back(IFC4X3_RC2_IfcQuantityWeight_type);
        IFC4X3_RC2_IfcPhysicalSimpleQuantity_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type);
        IFC4X3_RC2_IfcBSplineCurveWithKnots_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type);
        IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcRectangleHollowProfileDef_type);defs.push_back(IFC4X3_RC2_IfcRoundedRectangleProfileDef_type);
        IFC4X3_RC2_IfcRectangleProfileDef_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcReinforcementBarProperties_type);defs.push_back(IFC4X3_RC2_IfcSectionProperties_type);defs.push_back(IFC4X3_RC2_IfcSectionReinforcementProperties_type);
        IFC4X3_RC2_IfcPreDefinedProperties_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcReinforcingBar_type);defs.push_back(IFC4X3_RC2_IfcReinforcingMesh_type);defs.push_back(IFC4X3_RC2_IfcTendon_type);defs.push_back(IFC4X3_RC2_IfcTendonAnchor_type);defs.push_back(IFC4X3_RC2_IfcTendonConduit_type);
        IFC4X3_RC2_IfcReinforcingElement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcReinforcingBarType_type);defs.push_back(IFC4X3_RC2_IfcReinforcingMeshType_type);defs.push_back(IFC4X3_RC2_IfcTendonAnchorType_type);defs.push_back(IFC4X3_RC2_IfcTendonConduitType_type);defs.push_back(IFC4X3_RC2_IfcTendonType_type);
        IFC4X3_RC2_IfcReinforcingElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcRelAggregates_type);defs.push_back(IFC4X3_RC2_IfcRelNests_type);defs.push_back(IFC4X3_RC2_IfcRelProjectsElement_type);defs.push_back(IFC4X3_RC2_IfcRelVoidsElement_type);
        IFC4X3_RC2_IfcRelDecomposes_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcRelAssigns_type);defs.push_back(IFC4X3_RC2_IfcRelAssociates_type);defs.push_back(IFC4X3_RC2_IfcRelConnects_type);defs.push_back(IFC4X3_RC2_IfcRelDeclares_type);defs.push_back(IFC4X3_RC2_IfcRelDecomposes_type);defs.push_back(IFC4X3_RC2_IfcRelDefines_type);
        IFC4X3_RC2_IfcRelationship_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(6);
        defs.push_back(IFC4X3_RC2_IfcRelAssignsToActor_type);defs.push_back(IFC4X3_RC2_IfcRelAssignsToControl_type);defs.push_back(IFC4X3_RC2_IfcRelAssignsToGroup_type);defs.push_back(IFC4X3_RC2_IfcRelAssignsToProcess_type);defs.push_back(IFC4X3_RC2_IfcRelAssignsToProduct_type);defs.push_back(IFC4X3_RC2_IfcRelAssignsToResource_type);
        IFC4X3_RC2_IfcRelAssigns_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type);
        IFC4X3_RC2_IfcRelAssignsToGroup_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(7);
        defs.push_back(IFC4X3_RC2_IfcRelAssociatesApproval_type);defs.push_back(IFC4X3_RC2_IfcRelAssociatesClassification_type);defs.push_back(IFC4X3_RC2_IfcRelAssociatesConstraint_type);defs.push_back(IFC4X3_RC2_IfcRelAssociatesDocument_type);defs.push_back(IFC4X3_RC2_IfcRelAssociatesLibrary_type);defs.push_back(IFC4X3_RC2_IfcRelAssociatesMaterial_type);defs.push_back(IFC4X3_RC2_IfcRelAssociatesProfileDef_type);
        IFC4X3_RC2_IfcRelAssociates_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(16);
        defs.push_back(IFC4X3_RC2_IfcRelConnectsElements_type);defs.push_back(IFC4X3_RC2_IfcRelConnectsPortToElement_type);defs.push_back(IFC4X3_RC2_IfcRelConnectsPorts_type);defs.push_back(IFC4X3_RC2_IfcRelConnectsStructuralActivity_type);defs.push_back(IFC4X3_RC2_IfcRelConnectsStructuralMember_type);defs.push_back(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type);defs.push_back(IFC4X3_RC2_IfcRelCoversBldgElements_type);defs.push_back(IFC4X3_RC2_IfcRelCoversSpaces_type);defs.push_back(IFC4X3_RC2_IfcRelFillsElement_type);defs.push_back(IFC4X3_RC2_IfcRelFlowControlElements_type);defs.push_back(IFC4X3_RC2_IfcRelInterferesElements_type);defs.push_back(IFC4X3_RC2_IfcRelPositions_type);defs.push_back(IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type);defs.push_back(IFC4X3_RC2_IfcRelSequence_type);defs.push_back(IFC4X3_RC2_IfcRelServicesBuildings_type);defs.push_back(IFC4X3_RC2_IfcRelSpaceBoundary_type);
        IFC4X3_RC2_IfcRelConnects_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcRelConnectsPathElements_type);defs.push_back(IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type);
        IFC4X3_RC2_IfcRelConnectsElements_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRelConnectsWithEccentricity_type);
        IFC4X3_RC2_IfcRelConnectsStructuralMember_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(4);
        defs.push_back(IFC4X3_RC2_IfcRelDefinesByObject_type);defs.push_back(IFC4X3_RC2_IfcRelDefinesByProperties_type);defs.push_back(IFC4X3_RC2_IfcRelDefinesByTemplate_type);defs.push_back(IFC4X3_RC2_IfcRelDefinesByType_type);
        IFC4X3_RC2_IfcRelDefines_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type);
        IFC4X3_RC2_IfcRelSpaceBoundary_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type);
        IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type);
        IFC4X3_RC2_IfcCompositeCurveSegment_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type);
        IFC4X3_RC2_IfcRevolvedAreaSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcSectionedSolidHorizontal_type);
        IFC4X3_RC2_IfcSectionedSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcShapeModel_type);defs.push_back(IFC4X3_RC2_IfcStyleModel_type);
        IFC4X3_RC2_IfcRepresentation_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcShapeRepresentation_type);defs.push_back(IFC4X3_RC2_IfcTopologyRepresentation_type);
        IFC4X3_RC2_IfcShapeModel_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcSlabElementedCase_type);defs.push_back(IFC4X3_RC2_IfcSlabStandardCase_type);
        IFC4X3_RC2_IfcSlab_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcSolidStratum_type);defs.push_back(IFC4X3_RC2_IfcVoidStratum_type);defs.push_back(IFC4X3_RC2_IfcWaterStratum_type);
        IFC4X3_RC2_IfcGeotechnicalStratum_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcSpaceType_type);
        IFC4X3_RC2_IfcSpatialStructureElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcSpatialStructureElementType_type);defs.push_back(IFC4X3_RC2_IfcSpatialZoneType_type);
        IFC4X3_RC2_IfcSpatialElementType_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcStructuralAction_type);defs.push_back(IFC4X3_RC2_IfcStructuralReaction_type);
        IFC4X3_RC2_IfcStructuralActivity_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcStructuralConnection_type);defs.push_back(IFC4X3_RC2_IfcStructuralMember_type);
        IFC4X3_RC2_IfcStructuralItem_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcStructuralCurveAction_type);defs.push_back(IFC4X3_RC2_IfcStructuralPointAction_type);defs.push_back(IFC4X3_RC2_IfcStructuralSurfaceAction_type);
        IFC4X3_RC2_IfcStructuralAction_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcStructuralCurveConnection_type);defs.push_back(IFC4X3_RC2_IfcStructuralPointConnection_type);defs.push_back(IFC4X3_RC2_IfcStructuralSurfaceConnection_type);
        IFC4X3_RC2_IfcStructuralConnection_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcStructuralCurveMember_type);defs.push_back(IFC4X3_RC2_IfcStructuralSurfaceMember_type);
        IFC4X3_RC2_IfcStructuralMember_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralCurveMemberVarying_type);
        IFC4X3_RC2_IfcStructuralCurveMember_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcStructuralCurveReaction_type);defs.push_back(IFC4X3_RC2_IfcStructuralPointReaction_type);defs.push_back(IFC4X3_RC2_IfcStructuralSurfaceReaction_type);
        IFC4X3_RC2_IfcStructuralReaction_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralLinearAction_type);
        IFC4X3_RC2_IfcStructuralCurveAction_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralLoadCase_type);
        IFC4X3_RC2_IfcStructuralLoadGroup_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcStructuralLoadConfiguration_type);defs.push_back(IFC4X3_RC2_IfcStructuralLoadOrResult_type);
        IFC4X3_RC2_IfcStructuralLoad_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(5);
        defs.push_back(IFC4X3_RC2_IfcStructuralLoadLinearForce_type);defs.push_back(IFC4X3_RC2_IfcStructuralLoadPlanarForce_type);defs.push_back(IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type);defs.push_back(IFC4X3_RC2_IfcStructuralLoadSingleForce_type);defs.push_back(IFC4X3_RC2_IfcStructuralLoadTemperature_type);
        IFC4X3_RC2_IfcStructuralLoadStatic_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type);
        IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type);
        IFC4X3_RC2_IfcStructuralLoadSingleForce_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcStructuralLoadStatic_type);defs.push_back(IFC4X3_RC2_IfcSurfaceReinforcementArea_type);
        IFC4X3_RC2_IfcStructuralLoadOrResult_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralPlanarAction_type);
        IFC4X3_RC2_IfcStructuralSurfaceAction_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type);
        IFC4X3_RC2_IfcStructuralSurfaceMember_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcStyledRepresentation_type);
        IFC4X3_RC2_IfcStyleModel_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type);defs.push_back(IFC4X3_RC2_IfcSurfaceOfRevolution_type);
        IFC4X3_RC2_IfcSweptSurface_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcSurfaceStyleRendering_type);
        IFC4X3_RC2_IfcSurfaceStyleShading_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type);
        IFC4X3_RC2_IfcSweptDiskSolid_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcTaskTimeRecurring_type);
        IFC4X3_RC2_IfcTaskTime_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcTextLiteralWithExtent_type);
        IFC4X3_RC2_IfcTextLiteral_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcTextStyleFontModel_type);
        IFC4X3_RC2_IfcPreDefinedTextFont_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type);
        IFC4X3_RC2_IfcTriangulatedFaceSet_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(3);
        defs.push_back(IFC4X3_RC2_IfcTypeProcess_type);defs.push_back(IFC4X3_RC2_IfcTypeProduct_type);defs.push_back(IFC4X3_RC2_IfcTypeResource_type);
        IFC4X3_RC2_IfcTypeObject_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcVertexPoint_type);
        IFC4X3_RC2_IfcVertex_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcWallElementedCase_type);defs.push_back(IFC4X3_RC2_IfcWallStandardCase_type);
        IFC4X3_RC2_IfcWall_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(1);
        defs.push_back(IFC4X3_RC2_IfcWindowStandardCase_type);
        IFC4X3_RC2_IfcWindow_type->set_subtypes(defs);
    }
    {
        std::vector<const entity*> defs; defs.reserve(2);
        defs.push_back(IFC4X3_RC2_IfcWorkPlan_type);defs.push_back(IFC4X3_RC2_IfcWorkSchedule_type);
        IFC4X3_RC2_IfcWorkControl_type->set_subtypes(defs);
    }

    std::vector<const declaration*> declarations; declarations.reserve(1327);
    declarations.push_back(IFC4X3_RC2_IfcAbsorbedDoseMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcAccelerationMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcActionRequest_type);
    declarations.push_back(IFC4X3_RC2_IfcActionRequestTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcActionSourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcActionTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcActor_type);
    declarations.push_back(IFC4X3_RC2_IfcActorRole_type);
    declarations.push_back(IFC4X3_RC2_IfcActorSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcActuator_type);
    declarations.push_back(IFC4X3_RC2_IfcActuatorType_type);
    declarations.push_back(IFC4X3_RC2_IfcActuatorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAddress_type);
    declarations.push_back(IFC4X3_RC2_IfcAddressTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAdvancedBrep_type);
    declarations.push_back(IFC4X3_RC2_IfcAdvancedBrepWithVoids_type);
    declarations.push_back(IFC4X3_RC2_IfcAdvancedFace_type);
    declarations.push_back(IFC4X3_RC2_IfcAirTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcAirTerminalBox_type);
    declarations.push_back(IFC4X3_RC2_IfcAirTerminalBoxType_type);
    declarations.push_back(IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAirTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcAirTerminalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAirToAirHeatRecovery_type);
    declarations.push_back(IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type);
    declarations.push_back(IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAlarm_type);
    declarations.push_back(IFC4X3_RC2_IfcAlarmType_type);
    declarations.push_back(IFC4X3_RC2_IfcAlarmTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignment_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignment2DVerSegLine_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentCant_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentCantSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentHorizontal_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentHorizontalSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentParameterSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentVertical_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentVerticalSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcAnalysisModelTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAngularVelocityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcAnnotation_type);
    declarations.push_back(IFC4X3_RC2_IfcAnnotationFillArea_type);
    declarations.push_back(IFC4X3_RC2_IfcAnnotationTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcApplication_type);
    declarations.push_back(IFC4X3_RC2_IfcAppliedValue_type);
    declarations.push_back(IFC4X3_RC2_IfcAppliedValueSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcApproval_type);
    declarations.push_back(IFC4X3_RC2_IfcApprovalRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcArbitraryClosedProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcArbitraryOpenProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type);
    declarations.push_back(IFC4X3_RC2_IfcArcIndex_type);
    declarations.push_back(IFC4X3_RC2_IfcAreaDensityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcAreaMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcArithmeticOperatorEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAssemblyPlaceEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAsset_type);
    declarations.push_back(IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcAudioVisualAppliance_type);
    declarations.push_back(IFC4X3_RC2_IfcAudioVisualApplianceType_type);
    declarations.push_back(IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcAxis1Placement_type);
    declarations.push_back(IFC4X3_RC2_IfcAxis2Placement_type);
    declarations.push_back(IFC4X3_RC2_IfcAxis2Placement2D_type);
    declarations.push_back(IFC4X3_RC2_IfcAxis2Placement3D_type);
    declarations.push_back(IFC4X3_RC2_IfcAxis2PlacementLinear_type);
    declarations.push_back(IFC4X3_RC2_IfcAxisLateralInclination_type);
    declarations.push_back(IFC4X3_RC2_IfcBeam_type);
    declarations.push_back(IFC4X3_RC2_IfcBeamStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcBeamType_type);
    declarations.push_back(IFC4X3_RC2_IfcBeamTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBearing_type);
    declarations.push_back(IFC4X3_RC2_IfcBearingType_type);
    declarations.push_back(IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBearingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBenchmarkEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBendingParameterSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcBinary_type);
    declarations.push_back(IFC4X3_RC2_IfcBlobTexture_type);
    declarations.push_back(IFC4X3_RC2_IfcBlock_type);
    declarations.push_back(IFC4X3_RC2_IfcBlossCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcBoiler_type);
    declarations.push_back(IFC4X3_RC2_IfcBoilerType_type);
    declarations.push_back(IFC4X3_RC2_IfcBoilerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBoolean_type);
    declarations.push_back(IFC4X3_RC2_IfcBooleanClippingResult_type);
    declarations.push_back(IFC4X3_RC2_IfcBooleanOperand_type);
    declarations.push_back(IFC4X3_RC2_IfcBooleanOperator_type);
    declarations.push_back(IFC4X3_RC2_IfcBooleanResult_type);
    declarations.push_back(IFC4X3_RC2_IfcBorehole_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundaryCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundaryCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundaryEdgeCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundaryFaceCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundaryNodeCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundedCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundedSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcBoundingBox_type);
    declarations.push_back(IFC4X3_RC2_IfcBoxAlignment_type);
    declarations.push_back(IFC4X3_RC2_IfcBoxedHalfSpace_type);
    declarations.push_back(IFC4X3_RC2_IfcBridge_type);
    declarations.push_back(IFC4X3_RC2_IfcBridgePart_type);
    declarations.push_back(IFC4X3_RC2_IfcBridgePartTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBridgeTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBSplineCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcBSplineCurveForm_type);
    declarations.push_back(IFC4X3_RC2_IfcBSplineCurveWithKnots_type);
    declarations.push_back(IFC4X3_RC2_IfcBSplineSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcBSplineSurfaceForm_type);
    declarations.push_back(IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type);
    declarations.push_back(IFC4X3_RC2_IfcBuilding_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingElementPart_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingElementPartType_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingElementProxy_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingElementProxyType_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingStorey_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingSystem_type);
    declarations.push_back(IFC4X3_RC2_IfcBuildingSystemTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBuiltElement_type);
    declarations.push_back(IFC4X3_RC2_IfcBuiltElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcBuiltSystem_type);
    declarations.push_back(IFC4X3_RC2_IfcBuiltSystemTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcBurner_type);
    declarations.push_back(IFC4X3_RC2_IfcBurnerType_type);
    declarations.push_back(IFC4X3_RC2_IfcBurnerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCableCarrierFitting_type);
    declarations.push_back(IFC4X3_RC2_IfcCableCarrierFittingType_type);
    declarations.push_back(IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCableCarrierSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcCableCarrierSegmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCableFitting_type);
    declarations.push_back(IFC4X3_RC2_IfcCableFittingType_type);
    declarations.push_back(IFC4X3_RC2_IfcCableFittingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCableSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcCableSegmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcCableSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCaissonFoundation_type);
    declarations.push_back(IFC4X3_RC2_IfcCaissonFoundationType_type);
    declarations.push_back(IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCardinalPointReference_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianPoint_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianPointList_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianPointList2D_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianPointList3D_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator2D_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator3D_type);
    declarations.push_back(IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type);
    declarations.push_back(IFC4X3_RC2_IfcCenterLineProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcChangeActionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcChiller_type);
    declarations.push_back(IFC4X3_RC2_IfcChillerType_type);
    declarations.push_back(IFC4X3_RC2_IfcChillerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcChimney_type);
    declarations.push_back(IFC4X3_RC2_IfcChimneyType_type);
    declarations.push_back(IFC4X3_RC2_IfcChimneyTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCircle_type);
    declarations.push_back(IFC4X3_RC2_IfcCircleHollowProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcCircleProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcCircularArcSegment2D_type);
    declarations.push_back(IFC4X3_RC2_IfcCivilElement_type);
    declarations.push_back(IFC4X3_RC2_IfcCivilElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcClassification_type);
    declarations.push_back(IFC4X3_RC2_IfcClassificationReference_type);
    declarations.push_back(IFC4X3_RC2_IfcClassificationReferenceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcClassificationSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcClosedShell_type);
    declarations.push_back(IFC4X3_RC2_IfcClothoid_type);
    declarations.push_back(IFC4X3_RC2_IfcCoil_type);
    declarations.push_back(IFC4X3_RC2_IfcCoilType_type);
    declarations.push_back(IFC4X3_RC2_IfcCoilTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcColour_type);
    declarations.push_back(IFC4X3_RC2_IfcColourOrFactor_type);
    declarations.push_back(IFC4X3_RC2_IfcColourRgb_type);
    declarations.push_back(IFC4X3_RC2_IfcColourRgbList_type);
    declarations.push_back(IFC4X3_RC2_IfcColourSpecification_type);
    declarations.push_back(IFC4X3_RC2_IfcColumn_type);
    declarations.push_back(IFC4X3_RC2_IfcColumnStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcColumnType_type);
    declarations.push_back(IFC4X3_RC2_IfcColumnTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCommunicationsAppliance_type);
    declarations.push_back(IFC4X3_RC2_IfcCommunicationsApplianceType_type);
    declarations.push_back(IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcComplexNumber_type);
    declarations.push_back(IFC4X3_RC2_IfcComplexProperty_type);
    declarations.push_back(IFC4X3_RC2_IfcComplexPropertyTemplate_type);
    declarations.push_back(IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCompositeCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcCompositeCurveOnSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcCompositeCurveSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcCompositeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcCompressor_type);
    declarations.push_back(IFC4X3_RC2_IfcCompressorType_type);
    declarations.push_back(IFC4X3_RC2_IfcCompressorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCondenser_type);
    declarations.push_back(IFC4X3_RC2_IfcCondenserType_type);
    declarations.push_back(IFC4X3_RC2_IfcCondenserTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConic_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectedFaceSet_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionCurveGeometry_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionGeometry_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionPointEccentricity_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionPointGeometry_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionSurfaceGeometry_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConnectionVolumeGeometry_type);
    declarations.push_back(IFC4X3_RC2_IfcConstraint_type);
    declarations.push_back(IFC4X3_RC2_IfcConstraintEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionEquipmentResource_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionEquipmentResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionMaterialResource_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionMaterialResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionProductResource_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionProductResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionResource_type);
    declarations.push_back(IFC4X3_RC2_IfcConstructionResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcContext_type);
    declarations.push_back(IFC4X3_RC2_IfcContextDependentMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcContextDependentUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcControl_type);
    declarations.push_back(IFC4X3_RC2_IfcController_type);
    declarations.push_back(IFC4X3_RC2_IfcControllerType_type);
    declarations.push_back(IFC4X3_RC2_IfcControllerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcConversionBasedUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type);
    declarations.push_back(IFC4X3_RC2_IfcConveyorSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcConveyorSegmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCooledBeam_type);
    declarations.push_back(IFC4X3_RC2_IfcCooledBeamType_type);
    declarations.push_back(IFC4X3_RC2_IfcCooledBeamTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCoolingTower_type);
    declarations.push_back(IFC4X3_RC2_IfcCoolingTowerType_type);
    declarations.push_back(IFC4X3_RC2_IfcCoolingTowerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCoordinateOperation_type);
    declarations.push_back(IFC4X3_RC2_IfcCoordinateReferenceSystem_type);
    declarations.push_back(IFC4X3_RC2_IfcCoordinateReferenceSystemSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcCostItem_type);
    declarations.push_back(IFC4X3_RC2_IfcCostItemTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCostSchedule_type);
    declarations.push_back(IFC4X3_RC2_IfcCostScheduleTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCostValue_type);
    declarations.push_back(IFC4X3_RC2_IfcCountMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcCourse_type);
    declarations.push_back(IFC4X3_RC2_IfcCourseType_type);
    declarations.push_back(IFC4X3_RC2_IfcCourseTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCovering_type);
    declarations.push_back(IFC4X3_RC2_IfcCoveringType_type);
    declarations.push_back(IFC4X3_RC2_IfcCoveringTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCrewResource_type);
    declarations.push_back(IFC4X3_RC2_IfcCrewResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcCrewResourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCsgPrimitive3D_type);
    declarations.push_back(IFC4X3_RC2_IfcCsgSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcCsgSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcCShapeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcCurrencyRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcCurtainWall_type);
    declarations.push_back(IFC4X3_RC2_IfcCurtainWallType_type);
    declarations.push_back(IFC4X3_RC2_IfcCurtainWallTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCurvatureMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveBoundedPlane_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveBoundedSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveFontOrScaledCurveFontSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveInterpolationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveMeasureSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveOnSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveOrEdgeCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveSegment2D_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveStyleFont_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveStyleFontAndScaling_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveStyleFontPattern_type);
    declarations.push_back(IFC4X3_RC2_IfcCurveStyleFontSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcCylindricalSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcDamper_type);
    declarations.push_back(IFC4X3_RC2_IfcDamperType_type);
    declarations.push_back(IFC4X3_RC2_IfcDamperTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDataOriginEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDate_type);
    declarations.push_back(IFC4X3_RC2_IfcDateTime_type);
    declarations.push_back(IFC4X3_RC2_IfcDayInMonthNumber_type);
    declarations.push_back(IFC4X3_RC2_IfcDayInWeekNumber_type);
    declarations.push_back(IFC4X3_RC2_IfcDeepFoundation_type);
    declarations.push_back(IFC4X3_RC2_IfcDeepFoundationType_type);
    declarations.push_back(IFC4X3_RC2_IfcDefinitionSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcDerivedMeasureValue_type);
    declarations.push_back(IFC4X3_RC2_IfcDerivedProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcDerivedUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcDerivedUnitElement_type);
    declarations.push_back(IFC4X3_RC2_IfcDerivedUnitEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDescriptiveMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcDimensionalExponents_type);
    declarations.push_back(IFC4X3_RC2_IfcDimensionCount_type);
    declarations.push_back(IFC4X3_RC2_IfcDirection_type);
    declarations.push_back(IFC4X3_RC2_IfcDirectionSenseEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcDiscreteAccessory_type);
    declarations.push_back(IFC4X3_RC2_IfcDiscreteAccessoryType_type);
    declarations.push_back(IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionBoard_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionBoardType_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionBoardTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionChamberElement_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionChamberElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionCircuit_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionControlElement_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionControlElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionElement_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionFlowElement_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionFlowElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionPort_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionPortTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionSystem_type);
    declarations.push_back(IFC4X3_RC2_IfcDistributionSystemEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDocumentConfidentialityEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDocumentInformation_type);
    declarations.push_back(IFC4X3_RC2_IfcDocumentInformationRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcDocumentReference_type);
    declarations.push_back(IFC4X3_RC2_IfcDocumentSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcDocumentStatusEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoor_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorLiningProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorPanelOperationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorPanelPositionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorPanelProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorStyleConstructionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorStyleOperationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorType_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoorTypeOperationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDoseEquivalentMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcDraughtingPreDefinedColour_type);
    declarations.push_back(IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctFitting_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctFittingType_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctFittingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctSegmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctSilencer_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctSilencerType_type);
    declarations.push_back(IFC4X3_RC2_IfcDuctSilencerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcDuration_type);
    declarations.push_back(IFC4X3_RC2_IfcDynamicViscosityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcEarthworksCut_type);
    declarations.push_back(IFC4X3_RC2_IfcEarthworksCutTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcEarthworksElement_type);
    declarations.push_back(IFC4X3_RC2_IfcEarthworksFill_type);
    declarations.push_back(IFC4X3_RC2_IfcEarthworksFillTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcEdge_type);
    declarations.push_back(IFC4X3_RC2_IfcEdgeCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcEdgeLoop_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricAppliance_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricApplianceType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricApplianceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricCapacitanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricChargeMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricConductanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricCurrentMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricDistributionBoard_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricDistributionBoardType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricFlowStorageDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricGenerator_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricGeneratorType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricMotor_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricMotorType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricMotorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricResistanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricTimeControl_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricTimeControlType_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElectricVoltageMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcElement_type);
    declarations.push_back(IFC4X3_RC2_IfcElementarySurface_type);
    declarations.push_back(IFC4X3_RC2_IfcElementAssembly_type);
    declarations.push_back(IFC4X3_RC2_IfcElementAssemblyType_type);
    declarations.push_back(IFC4X3_RC2_IfcElementAssemblyTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElementComponent_type);
    declarations.push_back(IFC4X3_RC2_IfcElementComponentType_type);
    declarations.push_back(IFC4X3_RC2_IfcElementCompositionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcElementQuantity_type);
    declarations.push_back(IFC4X3_RC2_IfcElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcEllipse_type);
    declarations.push_back(IFC4X3_RC2_IfcEllipseProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcEnergyConversionDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcEnergyConversionDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcEnergyMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcEngine_type);
    declarations.push_back(IFC4X3_RC2_IfcEngineType_type);
    declarations.push_back(IFC4X3_RC2_IfcEngineTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcEvaporativeCooler_type);
    declarations.push_back(IFC4X3_RC2_IfcEvaporativeCoolerType_type);
    declarations.push_back(IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcEvaporator_type);
    declarations.push_back(IFC4X3_RC2_IfcEvaporatorType_type);
    declarations.push_back(IFC4X3_RC2_IfcEvaporatorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcEvent_type);
    declarations.push_back(IFC4X3_RC2_IfcEventTime_type);
    declarations.push_back(IFC4X3_RC2_IfcEventTriggerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcEventType_type);
    declarations.push_back(IFC4X3_RC2_IfcEventTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcExtendedProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcExternalInformation_type);
    declarations.push_back(IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcExternallyDefinedTextFont_type);
    declarations.push_back(IFC4X3_RC2_IfcExternalReference_type);
    declarations.push_back(IFC4X3_RC2_IfcExternalReferenceRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcExternalSpatialElement_type);
    declarations.push_back(IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcExternalSpatialStructureElement_type);
    declarations.push_back(IFC4X3_RC2_IfcExtrudedAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type);
    declarations.push_back(IFC4X3_RC2_IfcFace_type);
    declarations.push_back(IFC4X3_RC2_IfcFaceBasedSurfaceModel_type);
    declarations.push_back(IFC4X3_RC2_IfcFaceBound_type);
    declarations.push_back(IFC4X3_RC2_IfcFaceOuterBound_type);
    declarations.push_back(IFC4X3_RC2_IfcFaceSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcFacetedBrep_type);
    declarations.push_back(IFC4X3_RC2_IfcFacetedBrepWithVoids_type);
    declarations.push_back(IFC4X3_RC2_IfcFacility_type);
    declarations.push_back(IFC4X3_RC2_IfcFacilityPart_type);
    declarations.push_back(IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFacilityPartTypeSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcFacilityUsageEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFailureConnectionCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcFan_type);
    declarations.push_back(IFC4X3_RC2_IfcFanType_type);
    declarations.push_back(IFC4X3_RC2_IfcFanTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFastener_type);
    declarations.push_back(IFC4X3_RC2_IfcFastenerType_type);
    declarations.push_back(IFC4X3_RC2_IfcFastenerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFeatureElement_type);
    declarations.push_back(IFC4X3_RC2_IfcFeatureElementAddition_type);
    declarations.push_back(IFC4X3_RC2_IfcFeatureElementSubtraction_type);
    declarations.push_back(IFC4X3_RC2_IfcFillAreaStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcFillAreaStyleHatching_type);
    declarations.push_back(IFC4X3_RC2_IfcFillAreaStyleTiles_type);
    declarations.push_back(IFC4X3_RC2_IfcFillStyleSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcFilter_type);
    declarations.push_back(IFC4X3_RC2_IfcFilterType_type);
    declarations.push_back(IFC4X3_RC2_IfcFilterTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFireSuppressionTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcFireSuppressionTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowController_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowControllerType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowDirectionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowFitting_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowFittingType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowInstrument_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowInstrumentType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowMeter_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowMeterType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowMeterTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowMovingDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowMovingDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowSegmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowStorageDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowStorageDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowTreatmentDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcFlowTreatmentDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcFontStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcFontVariant_type);
    declarations.push_back(IFC4X3_RC2_IfcFontWeight_type);
    declarations.push_back(IFC4X3_RC2_IfcFooting_type);
    declarations.push_back(IFC4X3_RC2_IfcFootingType_type);
    declarations.push_back(IFC4X3_RC2_IfcFootingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcForceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcFrequencyMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcFurnishingElement_type);
    declarations.push_back(IFC4X3_RC2_IfcFurnishingElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcFurniture_type);
    declarations.push_back(IFC4X3_RC2_IfcFurnitureType_type);
    declarations.push_back(IFC4X3_RC2_IfcFurnitureTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcGeographicElement_type);
    declarations.push_back(IFC4X3_RC2_IfcGeographicElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcGeographicElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricCurveSet_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricProjectionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricRepresentationContext_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricRepresentationItem_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricRepresentationSubContext_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricSet_type);
    declarations.push_back(IFC4X3_RC2_IfcGeometricSetSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcGeomodel_type);
    declarations.push_back(IFC4X3_RC2_IfcGeoslice_type);
    declarations.push_back(IFC4X3_RC2_IfcGeotechnicalAssembly_type);
    declarations.push_back(IFC4X3_RC2_IfcGeotechnicalElement_type);
    declarations.push_back(IFC4X3_RC2_IfcGeotechnicalStratum_type);
    declarations.push_back(IFC4X3_RC2_IfcGloballyUniqueId_type);
    declarations.push_back(IFC4X3_RC2_IfcGlobalOrLocalEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcGradientCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcGrid_type);
    declarations.push_back(IFC4X3_RC2_IfcGridAxis_type);
    declarations.push_back(IFC4X3_RC2_IfcGridPlacement_type);
    declarations.push_back(IFC4X3_RC2_IfcGridPlacementDirectionSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcGridTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcGroup_type);
    declarations.push_back(IFC4X3_RC2_IfcHalfSpaceSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcHatchLineDistanceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcHeatExchanger_type);
    declarations.push_back(IFC4X3_RC2_IfcHeatExchangerType_type);
    declarations.push_back(IFC4X3_RC2_IfcHeatExchangerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcHeatFluxDensityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcHeatingValueMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcHumidifier_type);
    declarations.push_back(IFC4X3_RC2_IfcHumidifierType_type);
    declarations.push_back(IFC4X3_RC2_IfcHumidifierTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcIdentifier_type);
    declarations.push_back(IFC4X3_RC2_IfcIlluminanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcImageTexture_type);
    declarations.push_back(IFC4X3_RC2_IfcImpactProtectionDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcImpactProtectionDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcIndexedColourMap_type);
    declarations.push_back(IFC4X3_RC2_IfcIndexedPolyCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcIndexedPolygonalFace_type);
    declarations.push_back(IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type);
    declarations.push_back(IFC4X3_RC2_IfcIndexedTextureMap_type);
    declarations.push_back(IFC4X3_RC2_IfcIndexedTriangleTextureMap_type);
    declarations.push_back(IFC4X3_RC2_IfcInductanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcInteger_type);
    declarations.push_back(IFC4X3_RC2_IfcIntegerCountRateMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcInterceptor_type);
    declarations.push_back(IFC4X3_RC2_IfcInterceptorType_type);
    declarations.push_back(IFC4X3_RC2_IfcInterceptorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcInterferenceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcInternalOrExternalEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcIntersectionCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcInventory_type);
    declarations.push_back(IFC4X3_RC2_IfcInventoryTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcIonConcentrationMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcIrregularTimeSeries_type);
    declarations.push_back(IFC4X3_RC2_IfcIrregularTimeSeriesValue_type);
    declarations.push_back(IFC4X3_RC2_IfcIShapeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcJunctionBox_type);
    declarations.push_back(IFC4X3_RC2_IfcJunctionBoxType_type);
    declarations.push_back(IFC4X3_RC2_IfcJunctionBoxTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcKerb_type);
    declarations.push_back(IFC4X3_RC2_IfcKerbType_type);
    declarations.push_back(IFC4X3_RC2_IfcKinematicViscosityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcKnotType_type);
    declarations.push_back(IFC4X3_RC2_IfcLabel_type);
    declarations.push_back(IFC4X3_RC2_IfcLaborResource_type);
    declarations.push_back(IFC4X3_RC2_IfcLaborResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcLaborResourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLagTime_type);
    declarations.push_back(IFC4X3_RC2_IfcLamp_type);
    declarations.push_back(IFC4X3_RC2_IfcLampType_type);
    declarations.push_back(IFC4X3_RC2_IfcLampTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLanguageId_type);
    declarations.push_back(IFC4X3_RC2_IfcLayeredItem_type);
    declarations.push_back(IFC4X3_RC2_IfcLayerSetDirectionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLengthMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLibraryInformation_type);
    declarations.push_back(IFC4X3_RC2_IfcLibraryReference_type);
    declarations.push_back(IFC4X3_RC2_IfcLibrarySelect_type);
    declarations.push_back(IFC4X3_RC2_IfcLightDistributionCurveEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLightDistributionData_type);
    declarations.push_back(IFC4X3_RC2_IfcLightDistributionDataSourceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcLightEmissionSourceEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLightFixture_type);
    declarations.push_back(IFC4X3_RC2_IfcLightFixtureType_type);
    declarations.push_back(IFC4X3_RC2_IfcLightFixtureTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLightIntensityDistribution_type);
    declarations.push_back(IFC4X3_RC2_IfcLightSource_type);
    declarations.push_back(IFC4X3_RC2_IfcLightSourceAmbient_type);
    declarations.push_back(IFC4X3_RC2_IfcLightSourceDirectional_type);
    declarations.push_back(IFC4X3_RC2_IfcLightSourceGoniometric_type);
    declarations.push_back(IFC4X3_RC2_IfcLightSourcePositional_type);
    declarations.push_back(IFC4X3_RC2_IfcLightSourceSpot_type);
    declarations.push_back(IFC4X3_RC2_IfcLine_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearAxisSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearAxisWithInclination_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearElement_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearForceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearMomentMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearPlacement_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearPlacementWithInclination_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearPositioningElement_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearSpanPlacement_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearStiffnessMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLinearVelocityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLineIndex_type);
    declarations.push_back(IFC4X3_RC2_IfcLineSegment2D_type);
    declarations.push_back(IFC4X3_RC2_IfcLiquidTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcLiquidTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLoadGroupTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLocalPlacement_type);
    declarations.push_back(IFC4X3_RC2_IfcLogical_type);
    declarations.push_back(IFC4X3_RC2_IfcLogicalOperatorEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcLoop_type);
    declarations.push_back(IFC4X3_RC2_IfcLShapeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcLuminousFluxMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcLuminousIntensityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMagneticFluxMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcManifoldSolidBrep_type);
    declarations.push_back(IFC4X3_RC2_IfcMapConversion_type);
    declarations.push_back(IFC4X3_RC2_IfcMappedItem_type);
    declarations.push_back(IFC4X3_RC2_IfcMarineFacility_type);
    declarations.push_back(IFC4X3_RC2_IfcMarineFacilityTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcMarinePartTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcMassDensityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMassFlowRateMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMassMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMassPerLengthMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterial_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialClassificationRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialConstituent_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialConstituentSet_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialDefinition_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialLayer_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialLayerSet_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialLayerSetUsage_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialLayerWithOffsets_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialList_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialProfile_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialProfileSet_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialProfileSetUsage_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialProfileWithOffsets_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcMaterialUsageDefinition_type);
    declarations.push_back(IFC4X3_RC2_IfcMeasureValue_type);
    declarations.push_back(IFC4X3_RC2_IfcMeasureWithUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcMechanicalFastener_type);
    declarations.push_back(IFC4X3_RC2_IfcMechanicalFastenerType_type);
    declarations.push_back(IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcMedicalDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcMedicalDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcMember_type);
    declarations.push_back(IFC4X3_RC2_IfcMemberStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcMemberType_type);
    declarations.push_back(IFC4X3_RC2_IfcMemberTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcMetric_type);
    declarations.push_back(IFC4X3_RC2_IfcMetricValueSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcMirroredProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type);
    declarations.push_back(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type);
    declarations.push_back(IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfElasticityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMolecularWeightMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMomentOfInertiaMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMonetaryMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcMonetaryUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcMonthInYearNumber_type);
    declarations.push_back(IFC4X3_RC2_IfcMooringDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcMooringDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcMooringDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcMotorConnection_type);
    declarations.push_back(IFC4X3_RC2_IfcMotorConnectionType_type);
    declarations.push_back(IFC4X3_RC2_IfcMotorConnectionTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcNamedUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcNavigationElement_type);
    declarations.push_back(IFC4X3_RC2_IfcNavigationElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcNavigationElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcNormalisedRatioMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcNullStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcNumericMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcObject_type);
    declarations.push_back(IFC4X3_RC2_IfcObjectDefinition_type);
    declarations.push_back(IFC4X3_RC2_IfcObjective_type);
    declarations.push_back(IFC4X3_RC2_IfcObjectiveEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcObjectPlacement_type);
    declarations.push_back(IFC4X3_RC2_IfcObjectReferenceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcObjectTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcOccupant_type);
    declarations.push_back(IFC4X3_RC2_IfcOccupantTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcOffsetCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcOffsetCurve2D_type);
    declarations.push_back(IFC4X3_RC2_IfcOffsetCurve3D_type);
    declarations.push_back(IFC4X3_RC2_IfcOffsetCurveByDistances_type);
    declarations.push_back(IFC4X3_RC2_IfcOpenCrossProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcOpeningElement_type);
    declarations.push_back(IFC4X3_RC2_IfcOpeningElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcOpeningStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcOpenShell_type);
    declarations.push_back(IFC4X3_RC2_IfcOrganization_type);
    declarations.push_back(IFC4X3_RC2_IfcOrganizationRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcOrientedEdge_type);
    declarations.push_back(IFC4X3_RC2_IfcOuterBoundaryCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcOutlet_type);
    declarations.push_back(IFC4X3_RC2_IfcOutletType_type);
    declarations.push_back(IFC4X3_RC2_IfcOutletTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcOwnerHistory_type);
    declarations.push_back(IFC4X3_RC2_IfcParameterizedProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcParameterValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPath_type);
    declarations.push_back(IFC4X3_RC2_IfcPavement_type);
    declarations.push_back(IFC4X3_RC2_IfcPavementType_type);
    declarations.push_back(IFC4X3_RC2_IfcPcurve_type);
    declarations.push_back(IFC4X3_RC2_IfcPerformanceHistory_type);
    declarations.push_back(IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPermeableCoveringProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcPermit_type);
    declarations.push_back(IFC4X3_RC2_IfcPermitTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPerson_type);
    declarations.push_back(IFC4X3_RC2_IfcPersonAndOrganization_type);
    declarations.push_back(IFC4X3_RC2_IfcPHMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPhysicalComplexQuantity_type);
    declarations.push_back(IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPhysicalQuantity_type);
    declarations.push_back(IFC4X3_RC2_IfcPhysicalSimpleQuantity_type);
    declarations.push_back(IFC4X3_RC2_IfcPile_type);
    declarations.push_back(IFC4X3_RC2_IfcPileConstructionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPileType_type);
    declarations.push_back(IFC4X3_RC2_IfcPileTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPipeFitting_type);
    declarations.push_back(IFC4X3_RC2_IfcPipeFittingType_type);
    declarations.push_back(IFC4X3_RC2_IfcPipeFittingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPipeSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcPipeSegmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcPipeSegmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPixelTexture_type);
    declarations.push_back(IFC4X3_RC2_IfcPlacement_type);
    declarations.push_back(IFC4X3_RC2_IfcPlanarBox_type);
    declarations.push_back(IFC4X3_RC2_IfcPlanarExtent_type);
    declarations.push_back(IFC4X3_RC2_IfcPlanarForceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPlane_type);
    declarations.push_back(IFC4X3_RC2_IfcPlaneAngleMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPlant_type);
    declarations.push_back(IFC4X3_RC2_IfcPlate_type);
    declarations.push_back(IFC4X3_RC2_IfcPlateStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcPlateType_type);
    declarations.push_back(IFC4X3_RC2_IfcPlateTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPoint_type);
    declarations.push_back(IFC4X3_RC2_IfcPointByDistanceExpression_type);
    declarations.push_back(IFC4X3_RC2_IfcPointOnCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcPointOnSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcPointOrVertexPoint_type);
    declarations.push_back(IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type);
    declarations.push_back(IFC4X3_RC2_IfcPolygonalFaceSet_type);
    declarations.push_back(IFC4X3_RC2_IfcPolyline_type);
    declarations.push_back(IFC4X3_RC2_IfcPolyLoop_type);
    declarations.push_back(IFC4X3_RC2_IfcPort_type);
    declarations.push_back(IFC4X3_RC2_IfcPositioningElement_type);
    declarations.push_back(IFC4X3_RC2_IfcPositiveInteger_type);
    declarations.push_back(IFC4X3_RC2_IfcPositiveLengthMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPositiveRatioMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPostalAddress_type);
    declarations.push_back(IFC4X3_RC2_IfcPowerMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcPreDefinedColour_type);
    declarations.push_back(IFC4X3_RC2_IfcPreDefinedCurveFont_type);
    declarations.push_back(IFC4X3_RC2_IfcPreDefinedItem_type);
    declarations.push_back(IFC4X3_RC2_IfcPreDefinedProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcPreDefinedPropertySet_type);
    declarations.push_back(IFC4X3_RC2_IfcPreDefinedTextFont_type);
    declarations.push_back(IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentableText_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentationItem_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentationLayerAssignment_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentationLayerWithStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentationStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentationStyleAssignment_type);
    declarations.push_back(IFC4X3_RC2_IfcPresentationStyleSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcPressureMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcProcedure_type);
    declarations.push_back(IFC4X3_RC2_IfcProcedureType_type);
    declarations.push_back(IFC4X3_RC2_IfcProcedureTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProcess_type);
    declarations.push_back(IFC4X3_RC2_IfcProcessSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcProduct_type);
    declarations.push_back(IFC4X3_RC2_IfcProductDefinitionShape_type);
    declarations.push_back(IFC4X3_RC2_IfcProductRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcProductRepresentationSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcProductSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcProfileProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcProfileTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProject_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectedCRS_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectionElement_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectionElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectLibrary_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectOrder_type);
    declarations.push_back(IFC4X3_RC2_IfcProjectOrderTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProperty_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyAbstraction_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyBoundedValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyDefinition_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyDependencyRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyEnumeratedValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyEnumeration_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyListValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyReferenceValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySet_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySetDefinition_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySetDefinitionSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySetDefinitionSet_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySetTemplate_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertySingleValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyTableValue_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyTemplate_type);
    declarations.push_back(IFC4X3_RC2_IfcPropertyTemplateDefinition_type);
    declarations.push_back(IFC4X3_RC2_IfcProtectiveDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type);
    declarations.push_back(IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProtectiveDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcProxy_type);
    declarations.push_back(IFC4X3_RC2_IfcPump_type);
    declarations.push_back(IFC4X3_RC2_IfcPumpType_type);
    declarations.push_back(IFC4X3_RC2_IfcPumpTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantityArea_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantityCount_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantityLength_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantitySet_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantityTime_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantityVolume_type);
    declarations.push_back(IFC4X3_RC2_IfcQuantityWeight_type);
    declarations.push_back(IFC4X3_RC2_IfcRadioActivityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcRail_type);
    declarations.push_back(IFC4X3_RC2_IfcRailing_type);
    declarations.push_back(IFC4X3_RC2_IfcRailingType_type);
    declarations.push_back(IFC4X3_RC2_IfcRailingTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRailType_type);
    declarations.push_back(IFC4X3_RC2_IfcRailTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRailway_type);
    declarations.push_back(IFC4X3_RC2_IfcRailwayPartTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRamp_type);
    declarations.push_back(IFC4X3_RC2_IfcRampFlight_type);
    declarations.push_back(IFC4X3_RC2_IfcRampFlightType_type);
    declarations.push_back(IFC4X3_RC2_IfcRampFlightTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRampType_type);
    declarations.push_back(IFC4X3_RC2_IfcRampTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRatioMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type);
    declarations.push_back(IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type);
    declarations.push_back(IFC4X3_RC2_IfcReal_type);
    declarations.push_back(IFC4X3_RC2_IfcRectangleHollowProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcRectangleProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcRectangularPyramid_type);
    declarations.push_back(IFC4X3_RC2_IfcRectangularTrimmedSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcRecurrencePattern_type);
    declarations.push_back(IFC4X3_RC2_IfcRecurrenceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcReference_type);
    declarations.push_back(IFC4X3_RC2_IfcReferent_type);
    declarations.push_back(IFC4X3_RC2_IfcReferentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcReflectanceMethodEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRegularTimeSeries_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcedSoil_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcementBarProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcementDefinitionProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingBar_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingBarRoleEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingBarType_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingBarTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingElement_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingMesh_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingMeshType_type);
    declarations.push_back(IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAggregates_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssigns_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToActor_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToControl_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToGroup_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToProcess_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToProduct_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssignsToResource_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociates_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesApproval_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesClassification_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesConstraint_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesDocument_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesLibrary_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesMaterial_type);
    declarations.push_back(IFC4X3_RC2_IfcRelAssociatesProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnects_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsElements_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsPathElements_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsPorts_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsPortToElement_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsStructuralActivity_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsStructuralMember_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsWithEccentricity_type);
    declarations.push_back(IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type);
    declarations.push_back(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type);
    declarations.push_back(IFC4X3_RC2_IfcRelCoversBldgElements_type);
    declarations.push_back(IFC4X3_RC2_IfcRelCoversSpaces_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDeclares_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDecomposes_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDefines_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDefinesByObject_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDefinesByProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDefinesByTemplate_type);
    declarations.push_back(IFC4X3_RC2_IfcRelDefinesByType_type);
    declarations.push_back(IFC4X3_RC2_IfcRelFillsElement_type);
    declarations.push_back(IFC4X3_RC2_IfcRelFlowControlElements_type);
    declarations.push_back(IFC4X3_RC2_IfcRelInterferesElements_type);
    declarations.push_back(IFC4X3_RC2_IfcRelNests_type);
    declarations.push_back(IFC4X3_RC2_IfcRelPositions_type);
    declarations.push_back(IFC4X3_RC2_IfcRelProjectsElement_type);
    declarations.push_back(IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type);
    declarations.push_back(IFC4X3_RC2_IfcRelSequence_type);
    declarations.push_back(IFC4X3_RC2_IfcRelServicesBuildings_type);
    declarations.push_back(IFC4X3_RC2_IfcRelSpaceBoundary_type);
    declarations.push_back(IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type);
    declarations.push_back(IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type);
    declarations.push_back(IFC4X3_RC2_IfcRelVoidsElement_type);
    declarations.push_back(IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcRepresentationContext_type);
    declarations.push_back(IFC4X3_RC2_IfcRepresentationItem_type);
    declarations.push_back(IFC4X3_RC2_IfcRepresentationMap_type);
    declarations.push_back(IFC4X3_RC2_IfcResource_type);
    declarations.push_back(IFC4X3_RC2_IfcResourceApprovalRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcResourceConstraintRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcResourceLevelRelationship_type);
    declarations.push_back(IFC4X3_RC2_IfcResourceObjectSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcResourceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcResourceTime_type);
    declarations.push_back(IFC4X3_RC2_IfcRevolvedAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type);
    declarations.push_back(IFC4X3_RC2_IfcRightCircularCone_type);
    declarations.push_back(IFC4X3_RC2_IfcRightCircularCylinder_type);
    declarations.push_back(IFC4X3_RC2_IfcRoad_type);
    declarations.push_back(IFC4X3_RC2_IfcRoadPartTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRoleEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRoof_type);
    declarations.push_back(IFC4X3_RC2_IfcRoofType_type);
    declarations.push_back(IFC4X3_RC2_IfcRoofTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcRoot_type);
    declarations.push_back(IFC4X3_RC2_IfcRotationalFrequencyMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcRotationalMassMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcRotationalStiffnessMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcRotationalStiffnessSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcRoundedRectangleProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcSanitaryTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcSanitaryTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSchedulingTime_type);
    declarations.push_back(IFC4X3_RC2_IfcSeamCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionedSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionedSolidHorizontal_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionedSpine_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionedSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionModulusMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionReinforcementProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcSectionTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSegment_type);
    declarations.push_back(IFC4X3_RC2_IfcSegmentedReferenceCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcSegmentIndexSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcSensor_type);
    declarations.push_back(IFC4X3_RC2_IfcSensorType_type);
    declarations.push_back(IFC4X3_RC2_IfcSensorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSequenceEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSeriesParameterCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcShadingDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcShadingDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcShadingDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcShapeAspect_type);
    declarations.push_back(IFC4X3_RC2_IfcShapeModel_type);
    declarations.push_back(IFC4X3_RC2_IfcShapeRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcShearModulusMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcShell_type);
    declarations.push_back(IFC4X3_RC2_IfcShellBasedSurfaceModel_type);
    declarations.push_back(IFC4X3_RC2_IfcSign_type);
    declarations.push_back(IFC4X3_RC2_IfcSignal_type);
    declarations.push_back(IFC4X3_RC2_IfcSignalType_type);
    declarations.push_back(IFC4X3_RC2_IfcSignalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSignType_type);
    declarations.push_back(IFC4X3_RC2_IfcSignTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSimpleProperty_type);
    declarations.push_back(IFC4X3_RC2_IfcSimplePropertyTemplate_type);
    declarations.push_back(IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSimpleValue_type);
    declarations.push_back(IFC4X3_RC2_IfcSIPrefix_type);
    declarations.push_back(IFC4X3_RC2_IfcSite_type);
    declarations.push_back(IFC4X3_RC2_IfcSIUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcSIUnitName_type);
    declarations.push_back(IFC4X3_RC2_IfcSizeSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcSlab_type);
    declarations.push_back(IFC4X3_RC2_IfcSlabElementedCase_type);
    declarations.push_back(IFC4X3_RC2_IfcSlabStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcSlabType_type);
    declarations.push_back(IFC4X3_RC2_IfcSlabTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSlippageConnectionCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcSolarDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcSolarDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcSolarDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSolidAngleMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSolidModel_type);
    declarations.push_back(IFC4X3_RC2_IfcSolidOrShell_type);
    declarations.push_back(IFC4X3_RC2_IfcSolidStratum_type);
    declarations.push_back(IFC4X3_RC2_IfcSoundPowerLevelMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSoundPowerMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSoundPressureLevelMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSoundPressureMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSpace_type);
    declarations.push_back(IFC4X3_RC2_IfcSpaceBoundarySelect_type);
    declarations.push_back(IFC4X3_RC2_IfcSpaceHeater_type);
    declarations.push_back(IFC4X3_RC2_IfcSpaceHeaterType_type);
    declarations.push_back(IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSpaceType_type);
    declarations.push_back(IFC4X3_RC2_IfcSpaceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialElement_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialReferenceSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialStructureElement_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialStructureElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialZone_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialZoneType_type);
    declarations.push_back(IFC4X3_RC2_IfcSpatialZoneTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcSpecularExponent_type);
    declarations.push_back(IFC4X3_RC2_IfcSpecularHighlightSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcSpecularRoughness_type);
    declarations.push_back(IFC4X3_RC2_IfcSphere_type);
    declarations.push_back(IFC4X3_RC2_IfcSphericalSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcStackTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcStackTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcStackTerminalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStair_type);
    declarations.push_back(IFC4X3_RC2_IfcStairFlight_type);
    declarations.push_back(IFC4X3_RC2_IfcStairFlightType_type);
    declarations.push_back(IFC4X3_RC2_IfcStairFlightTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStairType_type);
    declarations.push_back(IFC4X3_RC2_IfcStairTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStateEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralAction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralActivity_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralActivityAssignmentSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralAnalysisModel_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralConnection_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralConnectionCondition_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveAction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveConnection_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveMember_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveMemberVarying_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralCurveReaction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralItem_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLinearAction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoad_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadCase_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadConfiguration_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadGroup_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadLinearForce_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadOrResult_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadPlanarForce_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadSingleForce_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadStatic_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralLoadTemperature_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralMember_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralPlanarAction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralPointAction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralPointConnection_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralPointReaction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralReaction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralResultGroup_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceAction_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceConnection_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceMember_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type);
    declarations.push_back(IFC4X3_RC2_IfcStructuralSurfaceReaction_type);
    declarations.push_back(IFC4X3_RC2_IfcStyleAssignmentSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcStyledItem_type);
    declarations.push_back(IFC4X3_RC2_IfcStyledRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcStyleModel_type);
    declarations.push_back(IFC4X3_RC2_IfcSubContractResource_type);
    declarations.push_back(IFC4X3_RC2_IfcSubContractResourceType_type);
    declarations.push_back(IFC4X3_RC2_IfcSubContractResourceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSubedge_type);
    declarations.push_back(IFC4X3_RC2_IfcSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceFeature_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceOfRevolution_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceOrFaceSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceReinforcementArea_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceSide_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyleElementSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyleLighting_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyleRefraction_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyleRendering_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyleShading_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceStyleWithTextures_type);
    declarations.push_back(IFC4X3_RC2_IfcSurfaceTexture_type);
    declarations.push_back(IFC4X3_RC2_IfcSweptAreaSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcSweptDiskSolid_type);
    declarations.push_back(IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type);
    declarations.push_back(IFC4X3_RC2_IfcSweptSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcSwitchingDevice_type);
    declarations.push_back(IFC4X3_RC2_IfcSwitchingDeviceType_type);
    declarations.push_back(IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcSystem_type);
    declarations.push_back(IFC4X3_RC2_IfcSystemFurnitureElement_type);
    declarations.push_back(IFC4X3_RC2_IfcSystemFurnitureElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTable_type);
    declarations.push_back(IFC4X3_RC2_IfcTableColumn_type);
    declarations.push_back(IFC4X3_RC2_IfcTableRow_type);
    declarations.push_back(IFC4X3_RC2_IfcTank_type);
    declarations.push_back(IFC4X3_RC2_IfcTankType_type);
    declarations.push_back(IFC4X3_RC2_IfcTankTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTask_type);
    declarations.push_back(IFC4X3_RC2_IfcTaskDurationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTaskTime_type);
    declarations.push_back(IFC4X3_RC2_IfcTaskTimeRecurring_type);
    declarations.push_back(IFC4X3_RC2_IfcTaskType_type);
    declarations.push_back(IFC4X3_RC2_IfcTaskTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTelecomAddress_type);
    declarations.push_back(IFC4X3_RC2_IfcTemperatureGradientMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcTendon_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonAnchor_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonAnchorType_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonAnchorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonConduit_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonConduitType_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonConduitTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonType_type);
    declarations.push_back(IFC4X3_RC2_IfcTendonTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTessellatedFaceSet_type);
    declarations.push_back(IFC4X3_RC2_IfcTessellatedItem_type);
    declarations.push_back(IFC4X3_RC2_IfcText_type);
    declarations.push_back(IFC4X3_RC2_IfcTextAlignment_type);
    declarations.push_back(IFC4X3_RC2_IfcTextDecoration_type);
    declarations.push_back(IFC4X3_RC2_IfcTextFontName_type);
    declarations.push_back(IFC4X3_RC2_IfcTextFontSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcTextLiteral_type);
    declarations.push_back(IFC4X3_RC2_IfcTextLiteralWithExtent_type);
    declarations.push_back(IFC4X3_RC2_IfcTextPath_type);
    declarations.push_back(IFC4X3_RC2_IfcTextStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcTextStyleFontModel_type);
    declarations.push_back(IFC4X3_RC2_IfcTextStyleForDefinedFont_type);
    declarations.push_back(IFC4X3_RC2_IfcTextStyleTextModel_type);
    declarations.push_back(IFC4X3_RC2_IfcTextTransformation_type);
    declarations.push_back(IFC4X3_RC2_IfcTextureCoordinate_type);
    declarations.push_back(IFC4X3_RC2_IfcTextureCoordinateGenerator_type);
    declarations.push_back(IFC4X3_RC2_IfcTextureMap_type);
    declarations.push_back(IFC4X3_RC2_IfcTextureVertex_type);
    declarations.push_back(IFC4X3_RC2_IfcTextureVertexList_type);
    declarations.push_back(IFC4X3_RC2_IfcThermalAdmittanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcThermalConductivityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcThermalResistanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcThermalTransmittanceMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcTime_type);
    declarations.push_back(IFC4X3_RC2_IfcTimeMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcTimeOrRatioSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcTimePeriod_type);
    declarations.push_back(IFC4X3_RC2_IfcTimeSeries_type);
    declarations.push_back(IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTimeSeriesValue_type);
    declarations.push_back(IFC4X3_RC2_IfcTimeStamp_type);
    declarations.push_back(IFC4X3_RC2_IfcTopologicalRepresentationItem_type);
    declarations.push_back(IFC4X3_RC2_IfcTopologyRepresentation_type);
    declarations.push_back(IFC4X3_RC2_IfcToroidalSurface_type);
    declarations.push_back(IFC4X3_RC2_IfcTorqueMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcTrackElement_type);
    declarations.push_back(IFC4X3_RC2_IfcTrackElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcTrackElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTransformer_type);
    declarations.push_back(IFC4X3_RC2_IfcTransformerType_type);
    declarations.push_back(IFC4X3_RC2_IfcTransformerTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTransitionCode_type);
    declarations.push_back(IFC4X3_RC2_IfcTransitionCurveSegment2D_type);
    declarations.push_back(IFC4X3_RC2_IfcTransitionCurveType_type);
    declarations.push_back(IFC4X3_RC2_IfcTranslationalStiffnessSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcTransportElement_type);
    declarations.push_back(IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTransportElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcTransportElementTypeSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcTrapeziumProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcTriangulatedFaceSet_type);
    declarations.push_back(IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type);
    declarations.push_back(IFC4X3_RC2_IfcTrimmedCurve_type);
    declarations.push_back(IFC4X3_RC2_IfcTrimmingPreference_type);
    declarations.push_back(IFC4X3_RC2_IfcTrimmingSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcTShapeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcTubeBundle_type);
    declarations.push_back(IFC4X3_RC2_IfcTubeBundleType_type);
    declarations.push_back(IFC4X3_RC2_IfcTubeBundleTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcTypeObject_type);
    declarations.push_back(IFC4X3_RC2_IfcTypeProcess_type);
    declarations.push_back(IFC4X3_RC2_IfcTypeProduct_type);
    declarations.push_back(IFC4X3_RC2_IfcTypeResource_type);
    declarations.push_back(IFC4X3_RC2_IfcUnit_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitaryControlElement_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitaryControlElementType_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitaryEquipment_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitaryEquipmentType_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitAssignment_type);
    declarations.push_back(IFC4X3_RC2_IfcUnitEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcURIReference_type);
    declarations.push_back(IFC4X3_RC2_IfcUShapeProfileDef_type);
    declarations.push_back(IFC4X3_RC2_IfcValue_type);
    declarations.push_back(IFC4X3_RC2_IfcValve_type);
    declarations.push_back(IFC4X3_RC2_IfcValveType_type);
    declarations.push_back(IFC4X3_RC2_IfcValveTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcVaporPermeabilityMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcVector_type);
    declarations.push_back(IFC4X3_RC2_IfcVectorOrDirection_type);
    declarations.push_back(IFC4X3_RC2_IfcVertex_type);
    declarations.push_back(IFC4X3_RC2_IfcVertexLoop_type);
    declarations.push_back(IFC4X3_RC2_IfcVertexPoint_type);
    declarations.push_back(IFC4X3_RC2_IfcVibrationDamper_type);
    declarations.push_back(IFC4X3_RC2_IfcVibrationDamperType_type);
    declarations.push_back(IFC4X3_RC2_IfcVibrationDamperTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcVibrationIsolator_type);
    declarations.push_back(IFC4X3_RC2_IfcVibrationIsolatorType_type);
    declarations.push_back(IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcVirtualElement_type);
    declarations.push_back(IFC4X3_RC2_IfcVirtualGridIntersection_type);
    declarations.push_back(IFC4X3_RC2_IfcVoidingFeature_type);
    declarations.push_back(IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcVoidStratum_type);
    declarations.push_back(IFC4X3_RC2_IfcVolumeMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcWall_type);
    declarations.push_back(IFC4X3_RC2_IfcWallElementedCase_type);
    declarations.push_back(IFC4X3_RC2_IfcWallStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcWallType_type);
    declarations.push_back(IFC4X3_RC2_IfcWallTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWarpingConstantMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcWarpingMomentMeasure_type);
    declarations.push_back(IFC4X3_RC2_IfcWarpingStiffnessSelect_type);
    declarations.push_back(IFC4X3_RC2_IfcWasteTerminal_type);
    declarations.push_back(IFC4X3_RC2_IfcWasteTerminalType_type);
    declarations.push_back(IFC4X3_RC2_IfcWasteTerminalTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWaterStratum_type);
    declarations.push_back(IFC4X3_RC2_IfcWindow_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowLiningProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowPanelOperationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowPanelPositionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowPanelProperties_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowStandardCase_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowStyle_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowStyleConstructionEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowStyleOperationEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowType_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWindowTypePartitioningEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkCalendar_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkCalendarTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkControl_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkPlan_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkPlanTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkSchedule_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkScheduleTypeEnum_type);
    declarations.push_back(IFC4X3_RC2_IfcWorkTime_type);
    declarations.push_back(IFC4X3_RC2_IfcZone_type);
    declarations.push_back(IFC4X3_RC2_IfcZShapeProfileDef_type);
    return new schema_definition("IFC4X3_RC2", declarations, new IFC4X3_RC2_instance_factory());
}


#if defined(__clang__)
#elif defined(__GNUC__) || defined(__GNUG__)
#pragma GCC pop_options
#elif defined(_MSC_VER)
#pragma optimize("", on)
#endif
        
static std::unique_ptr<schema_definition> schema;

void Ifc4x3_rc2::clear_schema() {
    schema.reset();
}

const schema_definition& Ifc4x3_rc2::get_schema() {
    if (!schema) {
        schema.reset(IFC4X3_RC2_populate_schema());
    }
    return *schema;
}

