/**
 * IFC Schema Registry
 * Generated from EXPRESS schema: IFC4_ADD2_TC1
 *
 * Runtime metadata for IFC entities, types, and relationships.
 *
 * DO NOT EDIT - This file is auto-generated
 */

export interface EntityMetadata {
  name: string;
  isAbstract: boolean;
  parent?: string;
  attributes: AttributeMetadata[];
  allAttributes?: AttributeMetadata[];  // Including inherited
  inheritanceChain?: string[];  // From root to entity
}

export interface AttributeMetadata {
  name: string;
  type: string;
  optional: boolean;
  isArray: boolean;
  isList: boolean;
  isSet: boolean;
  arrayBounds?: [number, number];
}

export interface SchemaRegistry {
  name: string;
  entities: Record<string, EntityMetadata>;
  types: Record<string, string>;  // name -> underlying type
  enums: Record<string, string[]>;  // name -> values
  selects: Record<string, string[]>;  // name -> types
}

export const SCHEMA_REGISTRY: SchemaRegistry = {
  name: 'IFC4_ADD2_TC1',

  entities: {
    IfcActionRequest: {
      name: 'IfcActionRequest',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcActionRequestTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcActionRequestTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcActionRequest'],
    },
    IfcActor: {
      name: 'IfcActor',
      isAbstract: false,
      parent: 'IfcObject',
      attributes: [
        {
          name: 'TheActor',
          type: 'IfcActorSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TheActor',
          type: 'IfcActorSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcActor'],
    },
    IfcActorRole: {
      name: 'IfcActorRole',
      isAbstract: false,
      attributes: [
        {
          name: 'Role',
          type: 'IfcRoleEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedRole',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Role',
          type: 'IfcRoleEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedRole',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcActorRole'],
    },
    IfcActuator: {
      name: 'IfcActuator',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcActuatorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcActuatorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcActuator'],
    },
    IfcActuatorType: {
      name: 'IfcActuatorType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcActuatorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcActuatorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcActuatorType'],
    },
    IfcAddress: {
      name: 'IfcAddress',
      isAbstract: true,
      attributes: [
        {
          name: 'Purpose',
          type: 'IfcAddressTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPurpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Purpose',
          type: 'IfcAddressTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPurpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcAddress'],
    },
    IfcAdvancedBrep: {
      name: 'IfcAdvancedBrep',
      isAbstract: false,
      parent: 'IfcManifoldSolidBrep',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Outer',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcManifoldSolidBrep', 'IfcAdvancedBrep'],
    },
    IfcAdvancedBrepWithVoids: {
      name: 'IfcAdvancedBrepWithVoids',
      isAbstract: false,
      parent: 'IfcAdvancedBrep',
      attributes: [
        {
          name: 'Voids',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Outer',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Voids',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcManifoldSolidBrep', 'IfcAdvancedBrep', 'IfcAdvancedBrepWithVoids'],
    },
    IfcAdvancedFace: {
      name: 'IfcAdvancedFace',
      isAbstract: false,
      parent: 'IfcFaceSurface',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Bounds',
          type: 'IfcFaceBound',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'FaceSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcFace', 'IfcFaceSurface', 'IfcAdvancedFace'],
    },
    IfcAirTerminal: {
      name: 'IfcAirTerminal',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcAirTerminal'],
    },
    IfcAirTerminalBox: {
      name: 'IfcAirTerminalBox',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalBoxTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalBoxTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcAirTerminalBox'],
    },
    IfcAirTerminalBoxType: {
      name: 'IfcAirTerminalBoxType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalBoxTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalBoxTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcAirTerminalBoxType'],
    },
    IfcAirTerminalType: {
      name: 'IfcAirTerminalType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAirTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcAirTerminalType'],
    },
    IfcAirToAirHeatRecovery: {
      name: 'IfcAirToAirHeatRecovery',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAirToAirHeatRecoveryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAirToAirHeatRecoveryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcAirToAirHeatRecovery'],
    },
    IfcAirToAirHeatRecoveryType: {
      name: 'IfcAirToAirHeatRecoveryType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAirToAirHeatRecoveryTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAirToAirHeatRecoveryTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcAirToAirHeatRecoveryType'],
    },
    IfcAlarm: {
      name: 'IfcAlarm',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAlarmTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAlarmTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcAlarm'],
    },
    IfcAlarmType: {
      name: 'IfcAlarmType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAlarmTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAlarmTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcAlarmType'],
    },
    IfcAnnotation: {
      name: 'IfcAnnotation',
      isAbstract: false,
      parent: 'IfcProduct',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcAnnotation'],
    },
    IfcAnnotationFillArea: {
      name: 'IfcAnnotationFillArea',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'OuterBoundary',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerBoundaries',
          type: 'IfcCurve',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'OuterBoundary',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerBoundaries',
          type: 'IfcCurve',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcAnnotationFillArea'],
    },
    IfcApplication: {
      name: 'IfcApplication',
      isAbstract: false,
      attributes: [
        {
          name: 'ApplicationDeveloper',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Version',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicationFullName',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicationIdentifier',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ApplicationDeveloper',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Version',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicationFullName',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicationIdentifier',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcApplication'],
    },
    IfcAppliedValue: {
      name: 'IfcAppliedValue',
      isAbstract: false,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedValue',
          type: 'IfcAppliedValueSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitBasis',
          type: 'IfcMeasureWithUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FixedUntilDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Condition',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ArithmeticOperator',
          type: 'IfcArithmeticOperatorEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Components',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedValue',
          type: 'IfcAppliedValueSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitBasis',
          type: 'IfcMeasureWithUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FixedUntilDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Condition',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ArithmeticOperator',
          type: 'IfcArithmeticOperatorEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Components',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcAppliedValue'],
    },
    IfcApproval: {
      name: 'IfcApproval',
      isAbstract: false,
      attributes: [
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeOfApproval',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Level',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Qualifier',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RequestingApproval',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GivingApproval',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeOfApproval',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Level',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Qualifier',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RequestingApproval',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GivingApproval',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcApproval'],
    },
    IfcApprovalRelationship: {
      name: 'IfcApprovalRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingApproval',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedApprovals',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingApproval',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedApprovals',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcApprovalRelationship'],
    },
    IfcArbitraryClosedProfileDef: {
      name: 'IfcArbitraryClosedProfileDef',
      isAbstract: false,
      parent: 'IfcProfileDef',
      attributes: [
        {
          name: 'OuterCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OuterCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcArbitraryClosedProfileDef'],
    },
    IfcArbitraryOpenProfileDef: {
      name: 'IfcArbitraryOpenProfileDef',
      isAbstract: false,
      parent: 'IfcProfileDef',
      attributes: [
        {
          name: 'Curve',
          type: 'IfcBoundedCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Curve',
          type: 'IfcBoundedCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcArbitraryOpenProfileDef'],
    },
    IfcArbitraryProfileDefWithVoids: {
      name: 'IfcArbitraryProfileDefWithVoids',
      isAbstract: false,
      parent: 'IfcArbitraryClosedProfileDef',
      attributes: [
        {
          name: 'InnerCurves',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OuterCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerCurves',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcArbitraryClosedProfileDef', 'IfcArbitraryProfileDefWithVoids'],
    },
    IfcAsset: {
      name: 'IfcAsset',
      isAbstract: false,
      parent: 'IfcGroup',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OriginalValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurrentValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalReplacementCost',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Owner',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'User',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResponsiblePerson',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IncorporationDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DepreciatedValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OriginalValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurrentValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalReplacementCost',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Owner',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'User',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResponsiblePerson',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IncorporationDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DepreciatedValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcAsset'],
    },
    IfcAsymmetricIShapeProfileDef: {
      name: 'IfcAsymmetricIShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'BottomFlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomFlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopFlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcAsymmetricIShapeProfileDef'],
    },
    IfcAudioVisualAppliance: {
      name: 'IfcAudioVisualAppliance',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAudioVisualApplianceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAudioVisualApplianceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcAudioVisualAppliance'],
    },
    IfcAudioVisualApplianceType: {
      name: 'IfcAudioVisualApplianceType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAudioVisualApplianceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAudioVisualApplianceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcAudioVisualApplianceType'],
    },
    IfcAxis1Placement: {
      name: 'IfcAxis1Placement',
      isAbstract: false,
      parent: 'IfcPlacement',
      attributes: [
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPlacement', 'IfcAxis1Placement'],
    },
    IfcAxis2Placement2D: {
      name: 'IfcAxis2Placement2D',
      isAbstract: false,
      parent: 'IfcPlacement',
      attributes: [
        {
          name: 'RefDirection',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefDirection',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPlacement', 'IfcAxis2Placement2D'],
    },
    IfcAxis2Placement3D: {
      name: 'IfcAxis2Placement3D',
      isAbstract: false,
      parent: 'IfcPlacement',
      attributes: [
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefDirection',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefDirection',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPlacement', 'IfcAxis2Placement3D'],
    },
    IfcBSplineCurve: {
      name: 'IfcBSplineCurve',
      isAbstract: true,
      parent: 'IfcBoundedCurve',
      attributes: [
        {
          name: 'Degree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'CurveForm',
          type: 'IfcBSplineCurveForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ClosedCurve',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Degree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'CurveForm',
          type: 'IfcBSplineCurveForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ClosedCurve',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcBSplineCurve'],
    },
    IfcBSplineCurveWithKnots: {
      name: 'IfcBSplineCurveWithKnots',
      isAbstract: false,
      parent: 'IfcBSplineCurve',
      attributes: [
        {
          name: 'KnotMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'Knots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'KnotSpec',
          type: 'IfcKnotType',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Degree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'CurveForm',
          type: 'IfcBSplineCurveForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ClosedCurve',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'KnotMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'Knots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'KnotSpec',
          type: 'IfcKnotType',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcBSplineCurve', 'IfcBSplineCurveWithKnots'],
    },
    IfcBSplineSurface: {
      name: 'IfcBSplineSurface',
      isAbstract: true,
      parent: 'IfcBoundedSurface',
      attributes: [
        {
          name: 'UDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'SurfaceForm',
          type: 'IfcBSplineSurfaceForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'UDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'SurfaceForm',
          type: 'IfcBSplineSurfaceForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface', 'IfcBSplineSurface'],
    },
    IfcBSplineSurfaceWithKnots: {
      name: 'IfcBSplineSurfaceWithKnots',
      isAbstract: false,
      parent: 'IfcBSplineSurface',
      attributes: [
        {
          name: 'UMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'VMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'UKnots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'VKnots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'KnotSpec',
          type: 'IfcKnotType',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'UDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'SurfaceForm',
          type: 'IfcBSplineSurfaceForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'VMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'UKnots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'VKnots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'KnotSpec',
          type: 'IfcKnotType',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface', 'IfcBSplineSurface', 'IfcBSplineSurfaceWithKnots'],
    },
    IfcBeam: {
      name: 'IfcBeam',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBeamTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBeamTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcBeam'],
    },
    IfcBeamStandardCase: {
      name: 'IfcBeamStandardCase',
      isAbstract: false,
      parent: 'IfcBeam',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBeamTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcBeam', 'IfcBeamStandardCase'],
    },
    IfcBeamType: {
      name: 'IfcBeamType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBeamTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBeamTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcBeamType'],
    },
    IfcBlobTexture: {
      name: 'IfcBlobTexture',
      isAbstract: false,
      parent: 'IfcSurfaceTexture',
      attributes: [
        {
          name: 'RasterFormat',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RasterCode',
          type: 'IfcBinary',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'RepeatS',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepeatT',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Mode',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextureTransform',
          type: 'IfcCartesianTransformationOperator2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RasterFormat',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RasterCode',
          type: 'IfcBinary',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceTexture', 'IfcBlobTexture'],
    },
    IfcBlock: {
      name: 'IfcBlock',
      isAbstract: false,
      parent: 'IfcCsgPrimitive3D',
      attributes: [
        {
          name: 'XLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ZLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ZLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCsgPrimitive3D', 'IfcBlock'],
    },
    IfcBoiler: {
      name: 'IfcBoiler',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBoilerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBoilerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcBoiler'],
    },
    IfcBoilerType: {
      name: 'IfcBoilerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBoilerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBoilerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcBoilerType'],
    },
    IfcBooleanClippingResult: {
      name: 'IfcBooleanClippingResult',
      isAbstract: false,
      parent: 'IfcBooleanResult',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Operator',
          type: 'IfcBooleanOperator',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstOperand',
          type: 'IfcBooleanOperand',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondOperand',
          type: 'IfcBooleanOperand',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcBooleanResult', 'IfcBooleanClippingResult'],
    },
    IfcBooleanResult: {
      name: 'IfcBooleanResult',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Operator',
          type: 'IfcBooleanOperator',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstOperand',
          type: 'IfcBooleanOperand',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondOperand',
          type: 'IfcBooleanOperand',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Operator',
          type: 'IfcBooleanOperator',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstOperand',
          type: 'IfcBooleanOperand',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondOperand',
          type: 'IfcBooleanOperand',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcBooleanResult'],
    },
    IfcBoundaryCondition: {
      name: 'IfcBoundaryCondition',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcBoundaryCondition'],
    },
    IfcBoundaryCurve: {
      name: 'IfcBoundaryCurve',
      isAbstract: false,
      parent: 'IfcCompositeCurveOnSurface',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Segments',
          type: 'IfcCompositeCurveSegment',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcCompositeCurve', 'IfcCompositeCurveOnSurface', 'IfcBoundaryCurve'],
    },
    IfcBoundaryEdgeCondition: {
      name: 'IfcBoundaryEdgeCondition',
      isAbstract: false,
      parent: 'IfcBoundaryCondition',
      attributes: [
        {
          name: 'TranslationalStiffnessByLengthX',
          type: 'IfcModulusOfTranslationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByLengthY',
          type: 'IfcModulusOfTranslationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByLengthZ',
          type: 'IfcModulusOfTranslationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessByLengthX',
          type: 'IfcModulusOfRotationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessByLengthY',
          type: 'IfcModulusOfRotationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessByLengthZ',
          type: 'IfcModulusOfRotationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByLengthX',
          type: 'IfcModulusOfTranslationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByLengthY',
          type: 'IfcModulusOfTranslationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByLengthZ',
          type: 'IfcModulusOfTranslationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessByLengthX',
          type: 'IfcModulusOfRotationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessByLengthY',
          type: 'IfcModulusOfRotationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessByLengthZ',
          type: 'IfcModulusOfRotationalSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcBoundaryCondition', 'IfcBoundaryEdgeCondition'],
    },
    IfcBoundaryFaceCondition: {
      name: 'IfcBoundaryFaceCondition',
      isAbstract: false,
      parent: 'IfcBoundaryCondition',
      attributes: [
        {
          name: 'TranslationalStiffnessByAreaX',
          type: 'IfcModulusOfSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByAreaY',
          type: 'IfcModulusOfSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByAreaZ',
          type: 'IfcModulusOfSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByAreaX',
          type: 'IfcModulusOfSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByAreaY',
          type: 'IfcModulusOfSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessByAreaZ',
          type: 'IfcModulusOfSubgradeReactionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcBoundaryCondition', 'IfcBoundaryFaceCondition'],
    },
    IfcBoundaryNodeCondition: {
      name: 'IfcBoundaryNodeCondition',
      isAbstract: false,
      parent: 'IfcBoundaryCondition',
      attributes: [
        {
          name: 'TranslationalStiffnessX',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessY',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessZ',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessX',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessY',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessZ',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessX',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessY',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessZ',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessX',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessY',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessZ',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcBoundaryCondition', 'IfcBoundaryNodeCondition'],
    },
    IfcBoundaryNodeConditionWarping: {
      name: 'IfcBoundaryNodeConditionWarping',
      isAbstract: false,
      parent: 'IfcBoundaryNodeCondition',
      attributes: [
        {
          name: 'WarpingStiffness',
          type: 'IfcWarpingStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessX',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessY',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TranslationalStiffnessZ',
          type: 'IfcTranslationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessX',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessY',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalStiffnessZ',
          type: 'IfcRotationalStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WarpingStiffness',
          type: 'IfcWarpingStiffnessSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcBoundaryCondition', 'IfcBoundaryNodeCondition', 'IfcBoundaryNodeConditionWarping'],
    },
    IfcBoundedCurve: {
      name: 'IfcBoundedCurve',
      isAbstract: true,
      parent: 'IfcCurve',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve'],
    },
    IfcBoundedSurface: {
      name: 'IfcBoundedSurface',
      isAbstract: true,
      parent: 'IfcSurface',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface'],
    },
    IfcBoundingBox: {
      name: 'IfcBoundingBox',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Corner',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ZDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Corner',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ZDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcBoundingBox'],
    },
    IfcBoxedHalfSpace: {
      name: 'IfcBoxedHalfSpace',
      isAbstract: false,
      parent: 'IfcHalfSpaceSolid',
      attributes: [
        {
          name: 'Enclosure',
          type: 'IfcBoundingBox',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BaseSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AgreementFlag',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Enclosure',
          type: 'IfcBoundingBox',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcHalfSpaceSolid', 'IfcBoxedHalfSpace'],
    },
    IfcBuilding: {
      name: 'IfcBuilding',
      isAbstract: false,
      parent: 'IfcSpatialStructureElement',
      attributes: [
        {
          name: 'ElevationOfRefHeight',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElevationOfTerrain',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BuildingAddress',
          type: 'IfcPostalAddress',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompositionType',
          type: 'IfcElementCompositionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElevationOfRefHeight',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElevationOfTerrain',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BuildingAddress',
          type: 'IfcPostalAddress',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcSpatialStructureElement', 'IfcBuilding'],
    },
    IfcBuildingElement: {
      name: 'IfcBuildingElement',
      isAbstract: true,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement'],
    },
    IfcBuildingElementPart: {
      name: 'IfcBuildingElementPart',
      isAbstract: false,
      parent: 'IfcElementComponent',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementPartTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementPartTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcBuildingElementPart'],
    },
    IfcBuildingElementPartType: {
      name: 'IfcBuildingElementPartType',
      isAbstract: false,
      parent: 'IfcElementComponentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementPartTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementPartTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcBuildingElementPartType'],
    },
    IfcBuildingElementProxy: {
      name: 'IfcBuildingElementProxy',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementProxyTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementProxyTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcBuildingElementProxy'],
    },
    IfcBuildingElementProxyType: {
      name: 'IfcBuildingElementProxyType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementProxyTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBuildingElementProxyTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcBuildingElementProxyType'],
    },
    IfcBuildingElementType: {
      name: 'IfcBuildingElementType',
      isAbstract: true,
      parent: 'IfcElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType'],
    },
    IfcBuildingStorey: {
      name: 'IfcBuildingStorey',
      isAbstract: false,
      parent: 'IfcSpatialStructureElement',
      attributes: [
        {
          name: 'Elevation',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompositionType',
          type: 'IfcElementCompositionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Elevation',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcSpatialStructureElement', 'IfcBuildingStorey'],
    },
    IfcBuildingSystem: {
      name: 'IfcBuildingSystem',
      isAbstract: false,
      parent: 'IfcSystem',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBuildingSystemTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBuildingSystemTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcSystem', 'IfcBuildingSystem'],
    },
    IfcBurner: {
      name: 'IfcBurner',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBurnerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBurnerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcBurner'],
    },
    IfcBurnerType: {
      name: 'IfcBurnerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcBurnerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcBurnerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcBurnerType'],
    },
    IfcCShapeProfileDef: {
      name: 'IfcCShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Width',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WallThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Girth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Width',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WallThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Girth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcCShapeProfileDef'],
    },
    IfcCableCarrierFitting: {
      name: 'IfcCableCarrierFitting',
      isAbstract: false,
      parent: 'IfcFlowFitting',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowFitting', 'IfcCableCarrierFitting'],
    },
    IfcCableCarrierFittingType: {
      name: 'IfcCableCarrierFittingType',
      isAbstract: false,
      parent: 'IfcFlowFittingType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowFittingType', 'IfcCableCarrierFittingType'],
    },
    IfcCableCarrierSegment: {
      name: 'IfcCableCarrierSegment',
      isAbstract: false,
      parent: 'IfcFlowSegment',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowSegment', 'IfcCableCarrierSegment'],
    },
    IfcCableCarrierSegmentType: {
      name: 'IfcCableCarrierSegmentType',
      isAbstract: false,
      parent: 'IfcFlowSegmentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableCarrierSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowSegmentType', 'IfcCableCarrierSegmentType'],
    },
    IfcCableFitting: {
      name: 'IfcCableFitting',
      isAbstract: false,
      parent: 'IfcFlowFitting',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowFitting', 'IfcCableFitting'],
    },
    IfcCableFittingType: {
      name: 'IfcCableFittingType',
      isAbstract: false,
      parent: 'IfcFlowFittingType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowFittingType', 'IfcCableFittingType'],
    },
    IfcCableSegment: {
      name: 'IfcCableSegment',
      isAbstract: false,
      parent: 'IfcFlowSegment',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowSegment', 'IfcCableSegment'],
    },
    IfcCableSegmentType: {
      name: 'IfcCableSegmentType',
      isAbstract: false,
      parent: 'IfcFlowSegmentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCableSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCableSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowSegmentType', 'IfcCableSegmentType'],
    },
    IfcCartesianPoint: {
      name: 'IfcCartesianPoint',
      isAbstract: false,
      parent: 'IfcPoint',
      attributes: [
        {
          name: 'Coordinates',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, 3],
        },
      ],
      allAttributes: [
        {
          name: 'Coordinates',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, 3],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPoint', 'IfcCartesianPoint'],
    },
    IfcCartesianPointList: {
      name: 'IfcCartesianPointList',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianPointList'],
    },
    IfcCartesianPointList2D: {
      name: 'IfcCartesianPointList2D',
      isAbstract: false,
      parent: 'IfcCartesianPointList',
      attributes: [
        {
          name: 'CoordList',
          type: 'IfcLengthMeasure[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'CoordList',
          type: 'IfcLengthMeasure[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianPointList', 'IfcCartesianPointList2D'],
    },
    IfcCartesianPointList3D: {
      name: 'IfcCartesianPointList3D',
      isAbstract: false,
      parent: 'IfcCartesianPointList',
      attributes: [
        {
          name: 'CoordList',
          type: 'IfcLengthMeasure[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'CoordList',
          type: 'IfcLengthMeasure[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianPointList', 'IfcCartesianPointList3D'],
    },
    IfcCartesianTransformationOperator: {
      name: 'IfcCartesianTransformationOperator',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Axis1',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis2',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LocalOrigin',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Axis1',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis2',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LocalOrigin',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianTransformationOperator'],
    },
    IfcCartesianTransformationOperator2D: {
      name: 'IfcCartesianTransformationOperator2D',
      isAbstract: false,
      parent: 'IfcCartesianTransformationOperator',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Axis1',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis2',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LocalOrigin',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianTransformationOperator', 'IfcCartesianTransformationOperator2D'],
    },
    IfcCartesianTransformationOperator2DnonUniform: {
      name: 'IfcCartesianTransformationOperator2DnonUniform',
      isAbstract: false,
      parent: 'IfcCartesianTransformationOperator2D',
      attributes: [
        {
          name: 'Scale2',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Axis1',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis2',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LocalOrigin',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale2',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianTransformationOperator', 'IfcCartesianTransformationOperator2D', 'IfcCartesianTransformationOperator2DnonUniform'],
    },
    IfcCartesianTransformationOperator3D: {
      name: 'IfcCartesianTransformationOperator3D',
      isAbstract: false,
      parent: 'IfcCartesianTransformationOperator',
      attributes: [
        {
          name: 'Axis3',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Axis1',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis2',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LocalOrigin',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis3',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianTransformationOperator', 'IfcCartesianTransformationOperator3D'],
    },
    IfcCartesianTransformationOperator3DnonUniform: {
      name: 'IfcCartesianTransformationOperator3DnonUniform',
      isAbstract: false,
      parent: 'IfcCartesianTransformationOperator3D',
      attributes: [
        {
          name: 'Scale2',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale3',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Axis1',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis2',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LocalOrigin',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis3',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale2',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale3',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCartesianTransformationOperator', 'IfcCartesianTransformationOperator3D', 'IfcCartesianTransformationOperator3DnonUniform'],
    },
    IfcCenterLineProfileDef: {
      name: 'IfcCenterLineProfileDef',
      isAbstract: false,
      parent: 'IfcArbitraryOpenProfileDef',
      attributes: [
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Curve',
          type: 'IfcBoundedCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcArbitraryOpenProfileDef', 'IfcCenterLineProfileDef'],
    },
    IfcChiller: {
      name: 'IfcChiller',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcChillerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcChillerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcChiller'],
    },
    IfcChillerType: {
      name: 'IfcChillerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcChillerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcChillerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcChillerType'],
    },
    IfcChimney: {
      name: 'IfcChimney',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcChimneyTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcChimneyTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcChimney'],
    },
    IfcChimneyType: {
      name: 'IfcChimneyType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcChimneyTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcChimneyTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcChimneyType'],
    },
    IfcCircle: {
      name: 'IfcCircle',
      isAbstract: false,
      parent: 'IfcConic',
      attributes: [
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcConic', 'IfcCircle'],
    },
    IfcCircleHollowProfileDef: {
      name: 'IfcCircleHollowProfileDef',
      isAbstract: false,
      parent: 'IfcCircleProfileDef',
      attributes: [
        {
          name: 'WallThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WallThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcCircleProfileDef', 'IfcCircleHollowProfileDef'],
    },
    IfcCircleProfileDef: {
      name: 'IfcCircleProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcCircleProfileDef'],
    },
    IfcCivilElement: {
      name: 'IfcCivilElement',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcCivilElement'],
    },
    IfcCivilElementType: {
      name: 'IfcCivilElementType',
      isAbstract: false,
      parent: 'IfcElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcCivilElementType'],
    },
    IfcClassification: {
      name: 'IfcClassification',
      isAbstract: false,
      parent: 'IfcExternalInformation',
      attributes: [
        {
          name: 'Source',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Edition',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EditionDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceTokens',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Source',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Edition',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EditionDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceTokens',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcExternalInformation', 'IfcClassification'],
    },
    IfcClassificationReference: {
      name: 'IfcClassificationReference',
      isAbstract: false,
      parent: 'IfcExternalReference',
      attributes: [
        {
          name: 'ReferencedSource',
          type: 'IfcClassificationReferenceSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Sort',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencedSource',
          type: 'IfcClassificationReferenceSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Sort',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference', 'IfcClassificationReference'],
    },
    IfcClosedShell: {
      name: 'IfcClosedShell',
      isAbstract: false,
      parent: 'IfcConnectedFaceSet',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'CfsFaces',
          type: 'IfcFace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcConnectedFaceSet', 'IfcClosedShell'],
    },
    IfcCoil: {
      name: 'IfcCoil',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCoilTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCoilTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcCoil'],
    },
    IfcCoilType: {
      name: 'IfcCoilType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCoilTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCoilTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcCoilType'],
    },
    IfcColourRgb: {
      name: 'IfcColourRgb',
      isAbstract: false,
      parent: 'IfcColourSpecification',
      attributes: [
        {
          name: 'Red',
          type: 'IfcNormalisedRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Green',
          type: 'IfcNormalisedRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Blue',
          type: 'IfcNormalisedRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Red',
          type: 'IfcNormalisedRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Green',
          type: 'IfcNormalisedRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Blue',
          type: 'IfcNormalisedRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcColourSpecification', 'IfcColourRgb'],
    },
    IfcColourRgbList: {
      name: 'IfcColourRgbList',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'ColourList',
          type: 'IfcNormalisedRatioMeasure[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'ColourList',
          type: 'IfcNormalisedRatioMeasure[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcColourRgbList'],
    },
    IfcColourSpecification: {
      name: 'IfcColourSpecification',
      isAbstract: true,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcColourSpecification'],
    },
    IfcColumn: {
      name: 'IfcColumn',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcColumnTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcColumnTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcColumn'],
    },
    IfcColumnStandardCase: {
      name: 'IfcColumnStandardCase',
      isAbstract: false,
      parent: 'IfcColumn',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcColumnTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcColumn', 'IfcColumnStandardCase'],
    },
    IfcColumnType: {
      name: 'IfcColumnType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcColumnTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcColumnTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcColumnType'],
    },
    IfcCommunicationsAppliance: {
      name: 'IfcCommunicationsAppliance',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCommunicationsApplianceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCommunicationsApplianceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcCommunicationsAppliance'],
    },
    IfcCommunicationsApplianceType: {
      name: 'IfcCommunicationsApplianceType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCommunicationsApplianceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCommunicationsApplianceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcCommunicationsApplianceType'],
    },
    IfcComplexProperty: {
      name: 'IfcComplexProperty',
      isAbstract: false,
      parent: 'IfcProperty',
      attributes: [
        {
          name: 'UsageName',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasProperties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UsageName',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasProperties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcComplexProperty'],
    },
    IfcComplexPropertyTemplate: {
      name: 'IfcComplexPropertyTemplate',
      isAbstract: false,
      parent: 'IfcPropertyTemplate',
      attributes: [
        {
          name: 'UsageName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TemplateType',
          type: 'IfcComplexPropertyTemplateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertyTemplates',
          type: 'IfcPropertyTemplate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UsageName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TemplateType',
          type: 'IfcComplexPropertyTemplateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertyTemplates',
          type: 'IfcPropertyTemplate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertyTemplateDefinition', 'IfcPropertyTemplate', 'IfcComplexPropertyTemplate'],
    },
    IfcCompositeCurve: {
      name: 'IfcCompositeCurve',
      isAbstract: false,
      parent: 'IfcBoundedCurve',
      attributes: [
        {
          name: 'Segments',
          type: 'IfcCompositeCurveSegment',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Segments',
          type: 'IfcCompositeCurveSegment',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcCompositeCurve'],
    },
    IfcCompositeCurveOnSurface: {
      name: 'IfcCompositeCurveOnSurface',
      isAbstract: false,
      parent: 'IfcCompositeCurve',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Segments',
          type: 'IfcCompositeCurveSegment',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcCompositeCurve', 'IfcCompositeCurveOnSurface'],
    },
    IfcCompositeCurveSegment: {
      name: 'IfcCompositeCurveSegment',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Transition',
          type: 'IfcTransitionCode',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Transition',
          type: 'IfcTransitionCode',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCompositeCurveSegment'],
    },
    IfcCompositeProfileDef: {
      name: 'IfcCompositeProfileDef',
      isAbstract: false,
      parent: 'IfcProfileDef',
      attributes: [
        {
          name: 'Profiles',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'Label',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Profiles',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'Label',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcCompositeProfileDef'],
    },
    IfcCompressor: {
      name: 'IfcCompressor',
      isAbstract: false,
      parent: 'IfcFlowMovingDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCompressorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCompressorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowMovingDevice', 'IfcCompressor'],
    },
    IfcCompressorType: {
      name: 'IfcCompressorType',
      isAbstract: false,
      parent: 'IfcFlowMovingDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCompressorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCompressorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowMovingDeviceType', 'IfcCompressorType'],
    },
    IfcCondenser: {
      name: 'IfcCondenser',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCondenserTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCondenserTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcCondenser'],
    },
    IfcCondenserType: {
      name: 'IfcCondenserType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCondenserTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCondenserTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcCondenserType'],
    },
    IfcConic: {
      name: 'IfcConic',
      isAbstract: true,
      parent: 'IfcCurve',
      attributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcConic'],
    },
    IfcConnectedFaceSet: {
      name: 'IfcConnectedFaceSet',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
        {
          name: 'CfsFaces',
          type: 'IfcFace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'CfsFaces',
          type: 'IfcFace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcConnectedFaceSet'],
    },
    IfcConnectionCurveGeometry: {
      name: 'IfcConnectionCurveGeometry',
      isAbstract: false,
      parent: 'IfcConnectionGeometry',
      attributes: [
        {
          name: 'CurveOnRelatingElement',
          type: 'IfcCurveOrEdgeCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveOnRelatedElement',
          type: 'IfcCurveOrEdgeCurve',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'CurveOnRelatingElement',
          type: 'IfcCurveOrEdgeCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveOnRelatedElement',
          type: 'IfcCurveOrEdgeCurve',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConnectionGeometry', 'IfcConnectionCurveGeometry'],
    },
    IfcConnectionGeometry: {
      name: 'IfcConnectionGeometry',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcConnectionGeometry'],
    },
    IfcConnectionPointEccentricity: {
      name: 'IfcConnectionPointEccentricity',
      isAbstract: false,
      parent: 'IfcConnectionPointGeometry',
      attributes: [
        {
          name: 'EccentricityInX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EccentricityInY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EccentricityInZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'PointOnRelatingElement',
          type: 'IfcPointOrVertexPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointOnRelatedElement',
          type: 'IfcPointOrVertexPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EccentricityInX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EccentricityInY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EccentricityInZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConnectionGeometry', 'IfcConnectionPointGeometry', 'IfcConnectionPointEccentricity'],
    },
    IfcConnectionPointGeometry: {
      name: 'IfcConnectionPointGeometry',
      isAbstract: false,
      parent: 'IfcConnectionGeometry',
      attributes: [
        {
          name: 'PointOnRelatingElement',
          type: 'IfcPointOrVertexPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointOnRelatedElement',
          type: 'IfcPointOrVertexPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'PointOnRelatingElement',
          type: 'IfcPointOrVertexPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointOnRelatedElement',
          type: 'IfcPointOrVertexPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConnectionGeometry', 'IfcConnectionPointGeometry'],
    },
    IfcConnectionSurfaceGeometry: {
      name: 'IfcConnectionSurfaceGeometry',
      isAbstract: false,
      parent: 'IfcConnectionGeometry',
      attributes: [
        {
          name: 'SurfaceOnRelatingElement',
          type: 'IfcSurfaceOrFaceSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SurfaceOnRelatedElement',
          type: 'IfcSurfaceOrFaceSurface',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SurfaceOnRelatingElement',
          type: 'IfcSurfaceOrFaceSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SurfaceOnRelatedElement',
          type: 'IfcSurfaceOrFaceSurface',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConnectionGeometry', 'IfcConnectionSurfaceGeometry'],
    },
    IfcConnectionVolumeGeometry: {
      name: 'IfcConnectionVolumeGeometry',
      isAbstract: false,
      parent: 'IfcConnectionGeometry',
      attributes: [
        {
          name: 'VolumeOnRelatingElement',
          type: 'IfcSolidOrShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VolumeOnRelatedElement',
          type: 'IfcSolidOrShell',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'VolumeOnRelatingElement',
          type: 'IfcSolidOrShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VolumeOnRelatedElement',
          type: 'IfcSolidOrShell',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConnectionGeometry', 'IfcConnectionVolumeGeometry'],
    },
    IfcConstraint: {
      name: 'IfcConstraint',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintGrade',
          type: 'IfcConstraintEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintSource',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreatingActor',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintGrade',
          type: 'IfcConstraintEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintSource',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreatingActor',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConstraint'],
    },
    IfcConstructionEquipmentResource: {
      name: 'IfcConstructionEquipmentResource',
      isAbstract: false,
      parent: 'IfcConstructionResource',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcConstructionEquipmentResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcConstructionEquipmentResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource', 'IfcConstructionEquipmentResource'],
    },
    IfcConstructionEquipmentResourceType: {
      name: 'IfcConstructionEquipmentResourceType',
      isAbstract: false,
      parent: 'IfcConstructionResourceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcConstructionEquipmentResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcConstructionEquipmentResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType', 'IfcConstructionEquipmentResourceType'],
    },
    IfcConstructionMaterialResource: {
      name: 'IfcConstructionMaterialResource',
      isAbstract: false,
      parent: 'IfcConstructionResource',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcConstructionMaterialResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcConstructionMaterialResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource', 'IfcConstructionMaterialResource'],
    },
    IfcConstructionMaterialResourceType: {
      name: 'IfcConstructionMaterialResourceType',
      isAbstract: false,
      parent: 'IfcConstructionResourceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcConstructionMaterialResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcConstructionMaterialResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType', 'IfcConstructionMaterialResourceType'],
    },
    IfcConstructionProductResource: {
      name: 'IfcConstructionProductResource',
      isAbstract: false,
      parent: 'IfcConstructionResource',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcConstructionProductResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcConstructionProductResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource', 'IfcConstructionProductResource'],
    },
    IfcConstructionProductResourceType: {
      name: 'IfcConstructionProductResourceType',
      isAbstract: false,
      parent: 'IfcConstructionResourceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcConstructionProductResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcConstructionProductResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType', 'IfcConstructionProductResourceType'],
    },
    IfcConstructionResource: {
      name: 'IfcConstructionResource',
      isAbstract: true,
      parent: 'IfcResource',
      attributes: [
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource'],
    },
    IfcConstructionResourceType: {
      name: 'IfcConstructionResourceType',
      isAbstract: true,
      parent: 'IfcTypeResource',
      attributes: [
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType'],
    },
    IfcContext: {
      name: 'IfcContext',
      isAbstract: true,
      parent: 'IfcObjectDefinition',
      attributes: [
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Phase',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationContexts',
          type: 'IfcRepresentationContext',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'UnitsInContext',
          type: 'IfcUnitAssignment',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Phase',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationContexts',
          type: 'IfcRepresentationContext',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'UnitsInContext',
          type: 'IfcUnitAssignment',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcContext'],
    },
    IfcContextDependentUnit: {
      name: 'IfcContextDependentUnit',
      isAbstract: false,
      parent: 'IfcNamedUnit',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Dimensions',
          type: 'IfcDimensionalExponents',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitType',
          type: 'IfcUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcNamedUnit', 'IfcContextDependentUnit'],
    },
    IfcControl: {
      name: 'IfcControl',
      isAbstract: true,
      parent: 'IfcObject',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl'],
    },
    IfcController: {
      name: 'IfcController',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcControllerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcControllerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcController'],
    },
    IfcControllerType: {
      name: 'IfcControllerType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcControllerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcControllerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcControllerType'],
    },
    IfcConversionBasedUnit: {
      name: 'IfcConversionBasedUnit',
      isAbstract: false,
      parent: 'IfcNamedUnit',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConversionFactor',
          type: 'IfcMeasureWithUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Dimensions',
          type: 'IfcDimensionalExponents',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitType',
          type: 'IfcUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConversionFactor',
          type: 'IfcMeasureWithUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcNamedUnit', 'IfcConversionBasedUnit'],
    },
    IfcConversionBasedUnitWithOffset: {
      name: 'IfcConversionBasedUnitWithOffset',
      isAbstract: false,
      parent: 'IfcConversionBasedUnit',
      attributes: [
        {
          name: 'ConversionOffset',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Dimensions',
          type: 'IfcDimensionalExponents',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitType',
          type: 'IfcUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConversionFactor',
          type: 'IfcMeasureWithUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConversionOffset',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcNamedUnit', 'IfcConversionBasedUnit', 'IfcConversionBasedUnitWithOffset'],
    },
    IfcCooledBeam: {
      name: 'IfcCooledBeam',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCooledBeamTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCooledBeamTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcCooledBeam'],
    },
    IfcCooledBeamType: {
      name: 'IfcCooledBeamType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCooledBeamTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCooledBeamTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcCooledBeamType'],
    },
    IfcCoolingTower: {
      name: 'IfcCoolingTower',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCoolingTowerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCoolingTowerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcCoolingTower'],
    },
    IfcCoolingTowerType: {
      name: 'IfcCoolingTowerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCoolingTowerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCoolingTowerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcCoolingTowerType'],
    },
    IfcCoordinateOperation: {
      name: 'IfcCoordinateOperation',
      isAbstract: true,
      attributes: [
        {
          name: 'SourceCRS',
          type: 'IfcCoordinateReferenceSystemSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetCRS',
          type: 'IfcCoordinateReferenceSystem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SourceCRS',
          type: 'IfcCoordinateReferenceSystemSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetCRS',
          type: 'IfcCoordinateReferenceSystem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcCoordinateOperation'],
    },
    IfcCoordinateReferenceSystem: {
      name: 'IfcCoordinateReferenceSystem',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GeodeticDatum',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VerticalDatum',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GeodeticDatum',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VerticalDatum',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcCoordinateReferenceSystem'],
    },
    IfcCostItem: {
      name: 'IfcCostItem',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCostItemTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CostValues',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'CostQuantities',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCostItemTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CostValues',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'CostQuantities',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcCostItem'],
    },
    IfcCostSchedule: {
      name: 'IfcCostSchedule',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCostScheduleTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SubmittedOn',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UpdateDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCostScheduleTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SubmittedOn',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UpdateDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcCostSchedule'],
    },
    IfcCostValue: {
      name: 'IfcCostValue',
      isAbstract: false,
      parent: 'IfcAppliedValue',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedValue',
          type: 'IfcAppliedValueSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitBasis',
          type: 'IfcMeasureWithUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FixedUntilDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Condition',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ArithmeticOperator',
          type: 'IfcArithmeticOperatorEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Components',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcAppliedValue', 'IfcCostValue'],
    },
    IfcCovering: {
      name: 'IfcCovering',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCoveringTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCoveringTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcCovering'],
    },
    IfcCoveringType: {
      name: 'IfcCoveringType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCoveringTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCoveringTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcCoveringType'],
    },
    IfcCrewResource: {
      name: 'IfcCrewResource',
      isAbstract: false,
      parent: 'IfcConstructionResource',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCrewResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCrewResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource', 'IfcCrewResource'],
    },
    IfcCrewResourceType: {
      name: 'IfcCrewResourceType',
      isAbstract: false,
      parent: 'IfcConstructionResourceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCrewResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCrewResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType', 'IfcCrewResourceType'],
    },
    IfcCsgPrimitive3D: {
      name: 'IfcCsgPrimitive3D',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCsgPrimitive3D'],
    },
    IfcCsgSolid: {
      name: 'IfcCsgSolid',
      isAbstract: false,
      parent: 'IfcSolidModel',
      attributes: [
        {
          name: 'TreeRootExpression',
          type: 'IfcCsgSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'TreeRootExpression',
          type: 'IfcCsgSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcCsgSolid'],
    },
    IfcCurrencyRelationship: {
      name: 'IfcCurrencyRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingMonetaryUnit',
          type: 'IfcMonetaryUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedMonetaryUnit',
          type: 'IfcMonetaryUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ExchangeRate',
          type: 'IfcPositiveRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RateDateTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RateSource',
          type: 'IfcLibraryInformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingMonetaryUnit',
          type: 'IfcMonetaryUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedMonetaryUnit',
          type: 'IfcMonetaryUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ExchangeRate',
          type: 'IfcPositiveRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RateDateTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RateSource',
          type: 'IfcLibraryInformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcCurrencyRelationship'],
    },
    IfcCurtainWall: {
      name: 'IfcCurtainWall',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCurtainWallTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCurtainWallTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcCurtainWall'],
    },
    IfcCurtainWallType: {
      name: 'IfcCurtainWallType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcCurtainWallTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcCurtainWallTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcCurtainWallType'],
    },
    IfcCurve: {
      name: 'IfcCurve',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve'],
    },
    IfcCurveBoundedPlane: {
      name: 'IfcCurveBoundedPlane',
      isAbstract: false,
      parent: 'IfcBoundedSurface',
      attributes: [
        {
          name: 'BasisSurface',
          type: 'IfcPlane',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OuterBoundary',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerBoundaries',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [0, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'BasisSurface',
          type: 'IfcPlane',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OuterBoundary',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerBoundaries',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [0, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface', 'IfcCurveBoundedPlane'],
    },
    IfcCurveBoundedSurface: {
      name: 'IfcCurveBoundedSurface',
      isAbstract: false,
      parent: 'IfcBoundedSurface',
      attributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Boundaries',
          type: 'IfcBoundaryCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ImplicitOuter',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Boundaries',
          type: 'IfcBoundaryCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ImplicitOuter',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface', 'IfcCurveBoundedSurface'],
    },
    IfcCurveStyle: {
      name: 'IfcCurveStyle',
      isAbstract: false,
      parent: 'IfcPresentationStyle',
      attributes: [
        {
          name: 'CurveFont',
          type: 'IfcCurveFontOrScaledCurveFontSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveWidth',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveColour',
          type: 'IfcColour',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ModelOrDraughting',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveFont',
          type: 'IfcCurveFontOrScaledCurveFontSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveWidth',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveColour',
          type: 'IfcColour',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ModelOrDraughting',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationStyle', 'IfcCurveStyle'],
    },
    IfcCurveStyleFont: {
      name: 'IfcCurveStyleFont',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PatternList',
          type: 'IfcCurveStyleFontPattern',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PatternList',
          type: 'IfcCurveStyleFontPattern',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcCurveStyleFont'],
    },
    IfcCurveStyleFontAndScaling: {
      name: 'IfcCurveStyleFontAndScaling',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveFont',
          type: 'IfcCurveStyleFontSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveFontScaling',
          type: 'IfcPositiveRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveFont',
          type: 'IfcCurveStyleFontSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveFontScaling',
          type: 'IfcPositiveRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcCurveStyleFontAndScaling'],
    },
    IfcCurveStyleFontPattern: {
      name: 'IfcCurveStyleFontPattern',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'VisibleSegmentLength',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InvisibleSegmentLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'VisibleSegmentLength',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InvisibleSegmentLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcCurveStyleFontPattern'],
    },
    IfcCylindricalSurface: {
      name: 'IfcCylindricalSurface',
      isAbstract: false,
      parent: 'IfcElementarySurface',
      attributes: [
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcElementarySurface', 'IfcCylindricalSurface'],
    },
    IfcDamper: {
      name: 'IfcDamper',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDamperTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDamperTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcDamper'],
    },
    IfcDamperType: {
      name: 'IfcDamperType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDamperTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDamperTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcDamperType'],
    },
    IfcDerivedProfileDef: {
      name: 'IfcDerivedProfileDef',
      isAbstract: false,
      parent: 'IfcProfileDef',
      attributes: [
        {
          name: 'ParentProfile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Operator',
          type: 'IfcCartesianTransformationOperator2D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Label',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentProfile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Operator',
          type: 'IfcCartesianTransformationOperator2D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Label',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcDerivedProfileDef'],
    },
    IfcDerivedUnit: {
      name: 'IfcDerivedUnit',
      isAbstract: false,
      attributes: [
        {
          name: 'Elements',
          type: 'IfcDerivedUnitElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'UnitType',
          type: 'IfcDerivedUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Elements',
          type: 'IfcDerivedUnitElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'UnitType',
          type: 'IfcDerivedUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcDerivedUnit'],
    },
    IfcDerivedUnitElement: {
      name: 'IfcDerivedUnitElement',
      isAbstract: false,
      attributes: [
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Exponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Exponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcDerivedUnitElement'],
    },
    IfcDimensionalExponents: {
      name: 'IfcDimensionalExponents',
      isAbstract: false,
      attributes: [
        {
          name: 'LengthExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MassExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElectricCurrentExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThermodynamicTemperatureExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmountOfSubstanceExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LuminousIntensityExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'LengthExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MassExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElectricCurrentExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThermodynamicTemperatureExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmountOfSubstanceExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LuminousIntensityExponent',
          type: 'INTEGER',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcDimensionalExponents'],
    },
    IfcDirection: {
      name: 'IfcDirection',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'DirectionRatios',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
      ],
      allAttributes: [
        {
          name: 'DirectionRatios',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcDirection'],
    },
    IfcDiscreteAccessory: {
      name: 'IfcDiscreteAccessory',
      isAbstract: false,
      parent: 'IfcElementComponent',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDiscreteAccessoryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDiscreteAccessoryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcDiscreteAccessory'],
    },
    IfcDiscreteAccessoryType: {
      name: 'IfcDiscreteAccessoryType',
      isAbstract: false,
      parent: 'IfcElementComponentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDiscreteAccessoryTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDiscreteAccessoryTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcDiscreteAccessoryType'],
    },
    IfcDistributionChamberElement: {
      name: 'IfcDistributionChamberElement',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDistributionChamberElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionChamberElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcDistributionChamberElement'],
    },
    IfcDistributionChamberElementType: {
      name: 'IfcDistributionChamberElementType',
      isAbstract: false,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDistributionChamberElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionChamberElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcDistributionChamberElementType'],
    },
    IfcDistributionCircuit: {
      name: 'IfcDistributionCircuit',
      isAbstract: false,
      parent: 'IfcDistributionSystem',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionSystemEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcSystem', 'IfcDistributionSystem', 'IfcDistributionCircuit'],
    },
    IfcDistributionControlElement: {
      name: 'IfcDistributionControlElement',
      isAbstract: false,
      parent: 'IfcDistributionElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement'],
    },
    IfcDistributionControlElementType: {
      name: 'IfcDistributionControlElementType',
      isAbstract: true,
      parent: 'IfcDistributionElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType'],
    },
    IfcDistributionElement: {
      name: 'IfcDistributionElement',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement'],
    },
    IfcDistributionElementType: {
      name: 'IfcDistributionElementType',
      isAbstract: false,
      parent: 'IfcElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType'],
    },
    IfcDistributionFlowElement: {
      name: 'IfcDistributionFlowElement',
      isAbstract: false,
      parent: 'IfcDistributionElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement'],
    },
    IfcDistributionFlowElementType: {
      name: 'IfcDistributionFlowElementType',
      isAbstract: true,
      parent: 'IfcDistributionElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType'],
    },
    IfcDistributionPort: {
      name: 'IfcDistributionPort',
      isAbstract: false,
      parent: 'IfcPort',
      attributes: [
        {
          name: 'FlowDirection',
          type: 'IfcFlowDirectionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionPortTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SystemType',
          type: 'IfcDistributionSystemEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlowDirection',
          type: 'IfcFlowDirectionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionPortTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SystemType',
          type: 'IfcDistributionSystemEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcPort', 'IfcDistributionPort'],
    },
    IfcDistributionSystem: {
      name: 'IfcDistributionSystem',
      isAbstract: false,
      parent: 'IfcSystem',
      attributes: [
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionSystemEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDistributionSystemEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcSystem', 'IfcDistributionSystem'],
    },
    IfcDocumentInformation: {
      name: 'IfcDocumentInformation',
      isAbstract: false,
      parent: 'IfcExternalInformation',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Purpose',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IntendedUse',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scope',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Revision',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DocumentOwner',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Editors',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'CreationTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastRevisionTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElectronicFormat',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ValidFrom',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ValidUntil',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Confidentiality',
          type: 'IfcDocumentConfidentialityEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcDocumentStatusEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Purpose',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IntendedUse',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scope',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Revision',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DocumentOwner',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Editors',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'CreationTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastRevisionTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElectronicFormat',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ValidFrom',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ValidUntil',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Confidentiality',
          type: 'IfcDocumentConfidentialityEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcDocumentStatusEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalInformation', 'IfcDocumentInformation'],
    },
    IfcDocumentInformationRelationship: {
      name: 'IfcDocumentInformationRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingDocument',
          type: 'IfcDocumentInformation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedDocuments',
          type: 'IfcDocumentInformation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelationshipType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingDocument',
          type: 'IfcDocumentInformation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedDocuments',
          type: 'IfcDocumentInformation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelationshipType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcDocumentInformationRelationship'],
    },
    IfcDocumentReference: {
      name: 'IfcDocumentReference',
      isAbstract: false,
      parent: 'IfcExternalReference',
      attributes: [
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencedDocument',
          type: 'IfcDocumentInformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencedDocument',
          type: 'IfcDocumentInformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference', 'IfcDocumentReference'],
    },
    IfcDoor: {
      name: 'IfcDoor',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'OverallHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDoorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcDoorTypeOperationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedOperationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDoorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcDoorTypeOperationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedOperationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcDoor'],
    },
    IfcDoorLiningProperties: {
      name: 'IfcDoorLiningProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedPropertySet',
      attributes: [
        {
          name: 'LiningDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThresholdDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThresholdThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransomThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransomOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThresholdOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CasingThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CasingDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThresholdDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThresholdThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransomThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransomOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ThresholdOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CasingThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CasingDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet', 'IfcDoorLiningProperties'],
    },
    IfcDoorPanelProperties: {
      name: 'IfcDoorPanelProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedPropertySet',
      attributes: [
        {
          name: 'PanelDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelOperation',
          type: 'IfcDoorPanelOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelWidth',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelPosition',
          type: 'IfcDoorPanelPositionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelOperation',
          type: 'IfcDoorPanelOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelWidth',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelPosition',
          type: 'IfcDoorPanelPositionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet', 'IfcDoorPanelProperties'],
    },
    IfcDoorStandardCase: {
      name: 'IfcDoorStandardCase',
      isAbstract: false,
      parent: 'IfcDoor',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDoorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcDoorTypeOperationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedOperationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcDoor', 'IfcDoorStandardCase'],
    },
    IfcDoorStyle: {
      name: 'IfcDoorStyle',
      isAbstract: false,
      parent: 'IfcTypeProduct',
      attributes: [
        {
          name: 'OperationType',
          type: 'IfcDoorStyleOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstructionType',
          type: 'IfcDoorStyleConstructionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Sizeable',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcDoorStyleOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstructionType',
          type: 'IfcDoorStyleConstructionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Sizeable',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcDoorStyle'],
    },
    IfcDoorType: {
      name: 'IfcDoorType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDoorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcDoorTypeOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedOperationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDoorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcDoorTypeOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedOperationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcDoorType'],
    },
    IfcDraughtingPreDefinedColour: {
      name: 'IfcDraughtingPreDefinedColour',
      isAbstract: false,
      parent: 'IfcPreDefinedColour',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem', 'IfcPreDefinedColour', 'IfcDraughtingPreDefinedColour'],
    },
    IfcDraughtingPreDefinedCurveFont: {
      name: 'IfcDraughtingPreDefinedCurveFont',
      isAbstract: false,
      parent: 'IfcPreDefinedCurveFont',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem', 'IfcPreDefinedCurveFont', 'IfcDraughtingPreDefinedCurveFont'],
    },
    IfcDuctFitting: {
      name: 'IfcDuctFitting',
      isAbstract: false,
      parent: 'IfcFlowFitting',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDuctFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDuctFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowFitting', 'IfcDuctFitting'],
    },
    IfcDuctFittingType: {
      name: 'IfcDuctFittingType',
      isAbstract: false,
      parent: 'IfcFlowFittingType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDuctFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDuctFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowFittingType', 'IfcDuctFittingType'],
    },
    IfcDuctSegment: {
      name: 'IfcDuctSegment',
      isAbstract: false,
      parent: 'IfcFlowSegment',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDuctSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDuctSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowSegment', 'IfcDuctSegment'],
    },
    IfcDuctSegmentType: {
      name: 'IfcDuctSegmentType',
      isAbstract: false,
      parent: 'IfcFlowSegmentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDuctSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDuctSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowSegmentType', 'IfcDuctSegmentType'],
    },
    IfcDuctSilencer: {
      name: 'IfcDuctSilencer',
      isAbstract: false,
      parent: 'IfcFlowTreatmentDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDuctSilencerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDuctSilencerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTreatmentDevice', 'IfcDuctSilencer'],
    },
    IfcDuctSilencerType: {
      name: 'IfcDuctSilencerType',
      isAbstract: false,
      parent: 'IfcFlowTreatmentDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcDuctSilencerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcDuctSilencerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTreatmentDeviceType', 'IfcDuctSilencerType'],
    },
    IfcEdge: {
      name: 'IfcEdge',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
        {
          name: 'EdgeStart',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeEnd',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'EdgeStart',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeEnd',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcEdge'],
    },
    IfcEdgeCurve: {
      name: 'IfcEdgeCurve',
      isAbstract: false,
      parent: 'IfcEdge',
      attributes: [
        {
          name: 'EdgeGeometry',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'EdgeStart',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeEnd',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeGeometry',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcEdge', 'IfcEdgeCurve'],
    },
    IfcEdgeLoop: {
      name: 'IfcEdgeLoop',
      isAbstract: false,
      parent: 'IfcLoop',
      attributes: [
        {
          name: 'EdgeList',
          type: 'IfcOrientedEdge',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'EdgeList',
          type: 'IfcOrientedEdge',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcLoop', 'IfcEdgeLoop'],
    },
    IfcElectricAppliance: {
      name: 'IfcElectricAppliance',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricApplianceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricApplianceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcElectricAppliance'],
    },
    IfcElectricApplianceType: {
      name: 'IfcElectricApplianceType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricApplianceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricApplianceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcElectricApplianceType'],
    },
    IfcElectricDistributionBoard: {
      name: 'IfcElectricDistributionBoard',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricDistributionBoardTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricDistributionBoardTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcElectricDistributionBoard'],
    },
    IfcElectricDistributionBoardType: {
      name: 'IfcElectricDistributionBoardType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricDistributionBoardTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricDistributionBoardTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcElectricDistributionBoardType'],
    },
    IfcElectricFlowStorageDevice: {
      name: 'IfcElectricFlowStorageDevice',
      isAbstract: false,
      parent: 'IfcFlowStorageDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricFlowStorageDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricFlowStorageDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowStorageDevice', 'IfcElectricFlowStorageDevice'],
    },
    IfcElectricFlowStorageDeviceType: {
      name: 'IfcElectricFlowStorageDeviceType',
      isAbstract: false,
      parent: 'IfcFlowStorageDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricFlowStorageDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricFlowStorageDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowStorageDeviceType', 'IfcElectricFlowStorageDeviceType'],
    },
    IfcElectricGenerator: {
      name: 'IfcElectricGenerator',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricGeneratorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricGeneratorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcElectricGenerator'],
    },
    IfcElectricGeneratorType: {
      name: 'IfcElectricGeneratorType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricGeneratorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricGeneratorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcElectricGeneratorType'],
    },
    IfcElectricMotor: {
      name: 'IfcElectricMotor',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricMotorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricMotorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcElectricMotor'],
    },
    IfcElectricMotorType: {
      name: 'IfcElectricMotorType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricMotorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricMotorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcElectricMotorType'],
    },
    IfcElectricTimeControl: {
      name: 'IfcElectricTimeControl',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricTimeControlTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricTimeControlTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcElectricTimeControl'],
    },
    IfcElectricTimeControlType: {
      name: 'IfcElectricTimeControlType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElectricTimeControlTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElectricTimeControlTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcElectricTimeControlType'],
    },
    IfcElement: {
      name: 'IfcElement',
      isAbstract: true,
      parent: 'IfcProduct',
      attributes: [
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement'],
    },
    IfcElementAssembly: {
      name: 'IfcElementAssembly',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
        {
          name: 'AssemblyPlace',
          type: 'IfcAssemblyPlaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElementAssemblyTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssemblyPlace',
          type: 'IfcAssemblyPlaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElementAssemblyTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementAssembly'],
    },
    IfcElementAssemblyType: {
      name: 'IfcElementAssemblyType',
      isAbstract: false,
      parent: 'IfcElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcElementAssemblyTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcElementAssemblyTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementAssemblyType'],
    },
    IfcElementComponent: {
      name: 'IfcElementComponent',
      isAbstract: true,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent'],
    },
    IfcElementComponentType: {
      name: 'IfcElementComponentType',
      isAbstract: true,
      parent: 'IfcElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType'],
    },
    IfcElementQuantity: {
      name: 'IfcElementQuantity',
      isAbstract: false,
      parent: 'IfcQuantitySet',
      attributes: [
        {
          name: 'MethodOfMeasurement',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Quantities',
          type: 'IfcPhysicalQuantity',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MethodOfMeasurement',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Quantities',
          type: 'IfcPhysicalQuantity',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcQuantitySet', 'IfcElementQuantity'],
    },
    IfcElementType: {
      name: 'IfcElementType',
      isAbstract: true,
      parent: 'IfcTypeProduct',
      attributes: [
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType'],
    },
    IfcElementarySurface: {
      name: 'IfcElementarySurface',
      isAbstract: true,
      parent: 'IfcSurface',
      attributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcElementarySurface'],
    },
    IfcEllipse: {
      name: 'IfcEllipse',
      isAbstract: false,
      parent: 'IfcConic',
      attributes: [
        {
          name: 'SemiAxis1',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SemiAxis2',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SemiAxis1',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SemiAxis2',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcConic', 'IfcEllipse'],
    },
    IfcEllipseProfileDef: {
      name: 'IfcEllipseProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'SemiAxis1',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SemiAxis2',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SemiAxis1',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SemiAxis2',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcEllipseProfileDef'],
    },
    IfcEnergyConversionDevice: {
      name: 'IfcEnergyConversionDevice',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice'],
    },
    IfcEnergyConversionDeviceType: {
      name: 'IfcEnergyConversionDeviceType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType'],
    },
    IfcEngine: {
      name: 'IfcEngine',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEngineTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEngineTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcEngine'],
    },
    IfcEngineType: {
      name: 'IfcEngineType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEngineTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEngineTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcEngineType'],
    },
    IfcEvaporativeCooler: {
      name: 'IfcEvaporativeCooler',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEvaporativeCoolerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEvaporativeCoolerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcEvaporativeCooler'],
    },
    IfcEvaporativeCoolerType: {
      name: 'IfcEvaporativeCoolerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEvaporativeCoolerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEvaporativeCoolerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcEvaporativeCoolerType'],
    },
    IfcEvaporator: {
      name: 'IfcEvaporator',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEvaporatorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEvaporatorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcEvaporator'],
    },
    IfcEvaporatorType: {
      name: 'IfcEvaporatorType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEvaporatorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEvaporatorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcEvaporatorType'],
    },
    IfcEvent: {
      name: 'IfcEvent',
      isAbstract: false,
      parent: 'IfcProcess',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEventTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EventTriggerType',
          type: 'IfcEventTriggerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedEventTriggerType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EventOccurenceTime',
          type: 'IfcEventTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEventTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EventTriggerType',
          type: 'IfcEventTriggerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedEventTriggerType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EventOccurenceTime',
          type: 'IfcEventTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProcess', 'IfcEvent'],
    },
    IfcEventTime: {
      name: 'IfcEventTime',
      isAbstract: false,
      parent: 'IfcSchedulingTime',
      attributes: [
        {
          name: 'ActualDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime', 'IfcEventTime'],
    },
    IfcEventType: {
      name: 'IfcEventType',
      isAbstract: false,
      parent: 'IfcTypeProcess',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcEventTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EventTriggerType',
          type: 'IfcEventTriggerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedEventTriggerType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProcessType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcEventTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EventTriggerType',
          type: 'IfcEventTriggerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedEventTriggerType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProcess', 'IfcEventType'],
    },
    IfcExtendedProperties: {
      name: 'IfcExtendedProperties',
      isAbstract: true,
      parent: 'IfcPropertyAbstraction',
      attributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Properties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Properties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcExtendedProperties'],
    },
    IfcExternalInformation: {
      name: 'IfcExternalInformation',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcExternalInformation'],
    },
    IfcExternalReference: {
      name: 'IfcExternalReference',
      isAbstract: true,
      attributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference'],
    },
    IfcExternalReferenceRelationship: {
      name: 'IfcExternalReferenceRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingReference',
          type: 'IfcExternalReference',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedResourceObjects',
          type: 'IfcResourceObjectSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingReference',
          type: 'IfcExternalReference',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedResourceObjects',
          type: 'IfcResourceObjectSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcExternalReferenceRelationship'],
    },
    IfcExternalSpatialElement: {
      name: 'IfcExternalSpatialElement',
      isAbstract: false,
      parent: 'IfcExternalSpatialStructureElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcExternalSpatialElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcExternalSpatialElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcExternalSpatialStructureElement', 'IfcExternalSpatialElement'],
    },
    IfcExternalSpatialStructureElement: {
      name: 'IfcExternalSpatialStructureElement',
      isAbstract: true,
      parent: 'IfcSpatialElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcExternalSpatialStructureElement'],
    },
    IfcExternallyDefinedHatchStyle: {
      name: 'IfcExternallyDefinedHatchStyle',
      isAbstract: false,
      parent: 'IfcExternalReference',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference', 'IfcExternallyDefinedHatchStyle'],
    },
    IfcExternallyDefinedSurfaceStyle: {
      name: 'IfcExternallyDefinedSurfaceStyle',
      isAbstract: false,
      parent: 'IfcExternalReference',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference', 'IfcExternallyDefinedSurfaceStyle'],
    },
    IfcExternallyDefinedTextFont: {
      name: 'IfcExternallyDefinedTextFont',
      isAbstract: false,
      parent: 'IfcExternalReference',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference', 'IfcExternallyDefinedTextFont'],
    },
    IfcExtrudedAreaSolid: {
      name: 'IfcExtrudedAreaSolid',
      isAbstract: false,
      parent: 'IfcSweptAreaSolid',
      attributes: [
        {
          name: 'ExtrudedDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ExtrudedDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid', 'IfcExtrudedAreaSolid'],
    },
    IfcExtrudedAreaSolidTapered: {
      name: 'IfcExtrudedAreaSolidTapered',
      isAbstract: false,
      parent: 'IfcExtrudedAreaSolid',
      attributes: [
        {
          name: 'EndSweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ExtrudedDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndSweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid', 'IfcExtrudedAreaSolid', 'IfcExtrudedAreaSolidTapered'],
    },
    IfcFace: {
      name: 'IfcFace',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
        {
          name: 'Bounds',
          type: 'IfcFaceBound',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Bounds',
          type: 'IfcFaceBound',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcFace'],
    },
    IfcFaceBasedSurfaceModel: {
      name: 'IfcFaceBasedSurfaceModel',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'FbsmFaces',
          type: 'IfcConnectedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'FbsmFaces',
          type: 'IfcConnectedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcFaceBasedSurfaceModel'],
    },
    IfcFaceBound: {
      name: 'IfcFaceBound',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
        {
          name: 'Bound',
          type: 'IfcLoop',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Bound',
          type: 'IfcLoop',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcFaceBound'],
    },
    IfcFaceOuterBound: {
      name: 'IfcFaceOuterBound',
      isAbstract: false,
      parent: 'IfcFaceBound',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Bound',
          type: 'IfcLoop',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcFaceBound', 'IfcFaceOuterBound'],
    },
    IfcFaceSurface: {
      name: 'IfcFaceSurface',
      isAbstract: false,
      parent: 'IfcFace',
      attributes: [
        {
          name: 'FaceSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Bounds',
          type: 'IfcFaceBound',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'FaceSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcFace', 'IfcFaceSurface'],
    },
    IfcFacetedBrep: {
      name: 'IfcFacetedBrep',
      isAbstract: false,
      parent: 'IfcManifoldSolidBrep',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Outer',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcManifoldSolidBrep', 'IfcFacetedBrep'],
    },
    IfcFacetedBrepWithVoids: {
      name: 'IfcFacetedBrepWithVoids',
      isAbstract: false,
      parent: 'IfcFacetedBrep',
      attributes: [
        {
          name: 'Voids',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Outer',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Voids',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcManifoldSolidBrep', 'IfcFacetedBrep', 'IfcFacetedBrepWithVoids'],
    },
    IfcFailureConnectionCondition: {
      name: 'IfcFailureConnectionCondition',
      isAbstract: false,
      parent: 'IfcStructuralConnectionCondition',
      attributes: [
        {
          name: 'TensionFailureX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionFailureY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionFailureZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompressionFailureX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompressionFailureY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompressionFailureZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionFailureX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionFailureY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionFailureZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompressionFailureX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompressionFailureY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompressionFailureZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralConnectionCondition', 'IfcFailureConnectionCondition'],
    },
    IfcFan: {
      name: 'IfcFan',
      isAbstract: false,
      parent: 'IfcFlowMovingDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFanTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFanTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowMovingDevice', 'IfcFan'],
    },
    IfcFanType: {
      name: 'IfcFanType',
      isAbstract: false,
      parent: 'IfcFlowMovingDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFanTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFanTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowMovingDeviceType', 'IfcFanType'],
    },
    IfcFastener: {
      name: 'IfcFastener',
      isAbstract: false,
      parent: 'IfcElementComponent',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFastenerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFastenerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcFastener'],
    },
    IfcFastenerType: {
      name: 'IfcFastenerType',
      isAbstract: false,
      parent: 'IfcElementComponentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFastenerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFastenerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcFastenerType'],
    },
    IfcFeatureElement: {
      name: 'IfcFeatureElement',
      isAbstract: true,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement'],
    },
    IfcFeatureElementAddition: {
      name: 'IfcFeatureElementAddition',
      isAbstract: true,
      parent: 'IfcFeatureElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcFeatureElementAddition'],
    },
    IfcFeatureElementSubtraction: {
      name: 'IfcFeatureElementSubtraction',
      isAbstract: true,
      parent: 'IfcFeatureElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcFeatureElementSubtraction'],
    },
    IfcFillAreaStyle: {
      name: 'IfcFillAreaStyle',
      isAbstract: false,
      parent: 'IfcPresentationStyle',
      attributes: [
        {
          name: 'FillStyles',
          type: 'IfcFillStyleSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ModelorDraughting',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FillStyles',
          type: 'IfcFillStyleSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ModelorDraughting',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationStyle', 'IfcFillAreaStyle'],
    },
    IfcFillAreaStyleHatching: {
      name: 'IfcFillAreaStyleHatching',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'HatchLineAppearance',
          type: 'IfcCurveStyle',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartOfNextHatchLine',
          type: 'IfcHatchLineDistanceSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointOfReferenceHatchLine',
          type: 'IfcCartesianPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PatternStart',
          type: 'IfcCartesianPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HatchLineAngle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'HatchLineAppearance',
          type: 'IfcCurveStyle',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartOfNextHatchLine',
          type: 'IfcHatchLineDistanceSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointOfReferenceHatchLine',
          type: 'IfcCartesianPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PatternStart',
          type: 'IfcCartesianPoint',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HatchLineAngle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcFillAreaStyleHatching'],
    },
    IfcFillAreaStyleTiles: {
      name: 'IfcFillAreaStyleTiles',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'TilingPattern',
          type: 'IfcVector',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 2],
        },
        {
          name: 'Tiles',
          type: 'IfcStyledItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'TilingScale',
          type: 'IfcPositiveRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'TilingPattern',
          type: 'IfcVector',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 2],
        },
        {
          name: 'Tiles',
          type: 'IfcStyledItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'TilingScale',
          type: 'IfcPositiveRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcFillAreaStyleTiles'],
    },
    IfcFilter: {
      name: 'IfcFilter',
      isAbstract: false,
      parent: 'IfcFlowTreatmentDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFilterTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFilterTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTreatmentDevice', 'IfcFilter'],
    },
    IfcFilterType: {
      name: 'IfcFilterType',
      isAbstract: false,
      parent: 'IfcFlowTreatmentDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFilterTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFilterTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTreatmentDeviceType', 'IfcFilterType'],
    },
    IfcFireSuppressionTerminal: {
      name: 'IfcFireSuppressionTerminal',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFireSuppressionTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFireSuppressionTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcFireSuppressionTerminal'],
    },
    IfcFireSuppressionTerminalType: {
      name: 'IfcFireSuppressionTerminalType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFireSuppressionTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFireSuppressionTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcFireSuppressionTerminalType'],
    },
    IfcFixedReferenceSweptAreaSolid: {
      name: 'IfcFixedReferenceSweptAreaSolid',
      isAbstract: false,
      parent: 'IfcSweptAreaSolid',
      attributes: [
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FixedReference',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FixedReference',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid', 'IfcFixedReferenceSweptAreaSolid'],
    },
    IfcFlowController: {
      name: 'IfcFlowController',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController'],
    },
    IfcFlowControllerType: {
      name: 'IfcFlowControllerType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType'],
    },
    IfcFlowFitting: {
      name: 'IfcFlowFitting',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowFitting'],
    },
    IfcFlowFittingType: {
      name: 'IfcFlowFittingType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowFittingType'],
    },
    IfcFlowInstrument: {
      name: 'IfcFlowInstrument',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFlowInstrumentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFlowInstrumentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcFlowInstrument'],
    },
    IfcFlowInstrumentType: {
      name: 'IfcFlowInstrumentType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFlowInstrumentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFlowInstrumentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcFlowInstrumentType'],
    },
    IfcFlowMeter: {
      name: 'IfcFlowMeter',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFlowMeterTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFlowMeterTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcFlowMeter'],
    },
    IfcFlowMeterType: {
      name: 'IfcFlowMeterType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFlowMeterTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFlowMeterTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcFlowMeterType'],
    },
    IfcFlowMovingDevice: {
      name: 'IfcFlowMovingDevice',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowMovingDevice'],
    },
    IfcFlowMovingDeviceType: {
      name: 'IfcFlowMovingDeviceType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowMovingDeviceType'],
    },
    IfcFlowSegment: {
      name: 'IfcFlowSegment',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowSegment'],
    },
    IfcFlowSegmentType: {
      name: 'IfcFlowSegmentType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowSegmentType'],
    },
    IfcFlowStorageDevice: {
      name: 'IfcFlowStorageDevice',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowStorageDevice'],
    },
    IfcFlowStorageDeviceType: {
      name: 'IfcFlowStorageDeviceType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowStorageDeviceType'],
    },
    IfcFlowTerminal: {
      name: 'IfcFlowTerminal',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal'],
    },
    IfcFlowTerminalType: {
      name: 'IfcFlowTerminalType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType'],
    },
    IfcFlowTreatmentDevice: {
      name: 'IfcFlowTreatmentDevice',
      isAbstract: false,
      parent: 'IfcDistributionFlowElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTreatmentDevice'],
    },
    IfcFlowTreatmentDeviceType: {
      name: 'IfcFlowTreatmentDeviceType',
      isAbstract: true,
      parent: 'IfcDistributionFlowElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTreatmentDeviceType'],
    },
    IfcFooting: {
      name: 'IfcFooting',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFootingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFootingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcFooting'],
    },
    IfcFootingType: {
      name: 'IfcFootingType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFootingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFootingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcFootingType'],
    },
    IfcFurnishingElement: {
      name: 'IfcFurnishingElement',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFurnishingElement'],
    },
    IfcFurnishingElementType: {
      name: 'IfcFurnishingElementType',
      isAbstract: false,
      parent: 'IfcElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcFurnishingElementType'],
    },
    IfcFurniture: {
      name: 'IfcFurniture',
      isAbstract: false,
      parent: 'IfcFurnishingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcFurnitureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFurnitureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFurnishingElement', 'IfcFurniture'],
    },
    IfcFurnitureType: {
      name: 'IfcFurnitureType',
      isAbstract: false,
      parent: 'IfcFurnishingElementType',
      attributes: [
        {
          name: 'AssemblyPlace',
          type: 'IfcAssemblyPlaceEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFurnitureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssemblyPlace',
          type: 'IfcAssemblyPlaceEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcFurnitureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcFurnishingElementType', 'IfcFurnitureType'],
    },
    IfcGeographicElement: {
      name: 'IfcGeographicElement',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcGeographicElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcGeographicElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcGeographicElement'],
    },
    IfcGeographicElementType: {
      name: 'IfcGeographicElementType',
      isAbstract: false,
      parent: 'IfcElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcGeographicElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcGeographicElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcGeographicElementType'],
    },
    IfcGeometricCurveSet: {
      name: 'IfcGeometricCurveSet',
      isAbstract: false,
      parent: 'IfcGeometricSet',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Elements',
          type: 'IfcGeometricSetSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcGeometricSet', 'IfcGeometricCurveSet'],
    },
    IfcGeometricRepresentationContext: {
      name: 'IfcGeometricRepresentationContext',
      isAbstract: false,
      parent: 'IfcRepresentationContext',
      attributes: [
        {
          name: 'CoordinateSpaceDimension',
          type: 'IfcDimensionCount',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Precision',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorldCoordinateSystem',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TrueNorth',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ContextIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ContextType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CoordinateSpaceDimension',
          type: 'IfcDimensionCount',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Precision',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorldCoordinateSystem',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TrueNorth',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationContext', 'IfcGeometricRepresentationContext'],
    },
    IfcGeometricRepresentationItem: {
      name: 'IfcGeometricRepresentationItem',
      isAbstract: true,
      parent: 'IfcRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem'],
    },
    IfcGeometricRepresentationSubContext: {
      name: 'IfcGeometricRepresentationSubContext',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationContext',
      attributes: [
        {
          name: 'ParentContext',
          type: 'IfcGeometricRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetScale',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetView',
          type: 'IfcGeometricProjectionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedTargetView',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ContextIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ContextType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CoordinateSpaceDimension',
          type: 'IfcDimensionCount',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Precision',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorldCoordinateSystem',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TrueNorth',
          type: 'IfcDirection',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentContext',
          type: 'IfcGeometricRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetScale',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetView',
          type: 'IfcGeometricProjectionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedTargetView',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationContext', 'IfcGeometricRepresentationContext', 'IfcGeometricRepresentationSubContext'],
    },
    IfcGeometricSet: {
      name: 'IfcGeometricSet',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Elements',
          type: 'IfcGeometricSetSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Elements',
          type: 'IfcGeometricSetSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcGeometricSet'],
    },
    IfcGrid: {
      name: 'IfcGrid',
      isAbstract: false,
      parent: 'IfcProduct',
      attributes: [
        {
          name: 'UAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'VAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'WAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PredefinedType',
          type: 'IfcGridTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'VAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'WAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PredefinedType',
          type: 'IfcGridTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcGrid'],
    },
    IfcGridAxis: {
      name: 'IfcGridAxis',
      isAbstract: false,
      attributes: [
        {
          name: 'AxisTag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AxisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'AxisTag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AxisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcGridAxis'],
    },
    IfcGridPlacement: {
      name: 'IfcGridPlacement',
      isAbstract: false,
      parent: 'IfcObjectPlacement',
      attributes: [
        {
          name: 'PlacementLocation',
          type: 'IfcVirtualGridIntersection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlacementRefDirection',
          type: 'IfcGridPlacementDirectionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'PlacementLocation',
          type: 'IfcVirtualGridIntersection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlacementRefDirection',
          type: 'IfcGridPlacementDirectionSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcObjectPlacement', 'IfcGridPlacement'],
    },
    IfcGroup: {
      name: 'IfcGroup',
      isAbstract: false,
      parent: 'IfcObject',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup'],
    },
    IfcHalfSpaceSolid: {
      name: 'IfcHalfSpaceSolid',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'BaseSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AgreementFlag',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BaseSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AgreementFlag',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcHalfSpaceSolid'],
    },
    IfcHeatExchanger: {
      name: 'IfcHeatExchanger',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcHeatExchangerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcHeatExchangerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcHeatExchanger'],
    },
    IfcHeatExchangerType: {
      name: 'IfcHeatExchangerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcHeatExchangerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcHeatExchangerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcHeatExchangerType'],
    },
    IfcHumidifier: {
      name: 'IfcHumidifier',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcHumidifierTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcHumidifierTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcHumidifier'],
    },
    IfcHumidifierType: {
      name: 'IfcHumidifierType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcHumidifierTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcHumidifierTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcHumidifierType'],
    },
    IfcIShapeProfileDef: {
      name: 'IfcIShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcIShapeProfileDef'],
    },
    IfcImageTexture: {
      name: 'IfcImageTexture',
      isAbstract: false,
      parent: 'IfcSurfaceTexture',
      attributes: [
        {
          name: 'URLReference',
          type: 'IfcURIReference',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'RepeatS',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepeatT',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Mode',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextureTransform',
          type: 'IfcCartesianTransformationOperator2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'URLReference',
          type: 'IfcURIReference',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceTexture', 'IfcImageTexture'],
    },
    IfcIndexedColourMap: {
      name: 'IfcIndexedColourMap',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'MappedTo',
          type: 'IfcTessellatedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Opacity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Colours',
          type: 'IfcColourRgbList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourIndex',
          type: 'IfcPositiveInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'MappedTo',
          type: 'IfcTessellatedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Opacity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Colours',
          type: 'IfcColourRgbList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourIndex',
          type: 'IfcPositiveInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcIndexedColourMap'],
    },
    IfcIndexedPolyCurve: {
      name: 'IfcIndexedPolyCurve',
      isAbstract: false,
      parent: 'IfcBoundedCurve',
      attributes: [
        {
          name: 'Points',
          type: 'IfcCartesianPointList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Segments',
          type: 'IfcSegmentIndexSelect',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Points',
          type: 'IfcCartesianPointList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Segments',
          type: 'IfcSegmentIndexSelect',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcIndexedPolyCurve'],
    },
    IfcIndexedPolygonalFace: {
      name: 'IfcIndexedPolygonalFace',
      isAbstract: false,
      parent: 'IfcTessellatedItem',
      attributes: [
        {
          name: 'CoordIndex',
          type: 'IfcPositiveInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'CoordIndex',
          type: 'IfcPositiveInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTessellatedItem', 'IfcIndexedPolygonalFace'],
    },
    IfcIndexedPolygonalFaceWithVoids: {
      name: 'IfcIndexedPolygonalFaceWithVoids',
      isAbstract: false,
      parent: 'IfcIndexedPolygonalFace',
      attributes: [
        {
          name: 'InnerCoordIndices',
          type: 'UNIQUE IfcPositiveInteger[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'CoordIndex',
          type: 'IfcPositiveInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
        {
          name: 'InnerCoordIndices',
          type: 'UNIQUE IfcPositiveInteger[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTessellatedItem', 'IfcIndexedPolygonalFace', 'IfcIndexedPolygonalFaceWithVoids'],
    },
    IfcIndexedTextureMap: {
      name: 'IfcIndexedTextureMap',
      isAbstract: true,
      parent: 'IfcTextureCoordinate',
      attributes: [
        {
          name: 'MappedTo',
          type: 'IfcTessellatedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TexCoords',
          type: 'IfcTextureVertexList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Maps',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'MappedTo',
          type: 'IfcTessellatedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TexCoords',
          type: 'IfcTextureVertexList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureCoordinate', 'IfcIndexedTextureMap'],
    },
    IfcIndexedTriangleTextureMap: {
      name: 'IfcIndexedTriangleTextureMap',
      isAbstract: false,
      parent: 'IfcIndexedTextureMap',
      attributes: [
        {
          name: 'TexCoordIndex',
          type: 'IfcPositiveInteger[]',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Maps',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'MappedTo',
          type: 'IfcTessellatedFaceSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TexCoords',
          type: 'IfcTextureVertexList',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TexCoordIndex',
          type: 'IfcPositiveInteger[]',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureCoordinate', 'IfcIndexedTextureMap', 'IfcIndexedTriangleTextureMap'],
    },
    IfcInterceptor: {
      name: 'IfcInterceptor',
      isAbstract: false,
      parent: 'IfcFlowTreatmentDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcInterceptorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcInterceptorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTreatmentDevice', 'IfcInterceptor'],
    },
    IfcInterceptorType: {
      name: 'IfcInterceptorType',
      isAbstract: false,
      parent: 'IfcFlowTreatmentDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcInterceptorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcInterceptorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTreatmentDeviceType', 'IfcInterceptorType'],
    },
    IfcIntersectionCurve: {
      name: 'IfcIntersectionCurve',
      isAbstract: false,
      parent: 'IfcSurfaceCurve',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Curve3D',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssociatedGeometry',
          type: 'IfcPcurve',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, 2],
        },
        {
          name: 'MasterRepresentation',
          type: 'IfcPreferredSurfaceCurveRepresentation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcSurfaceCurve', 'IfcIntersectionCurve'],
    },
    IfcInventory: {
      name: 'IfcInventory',
      isAbstract: false,
      parent: 'IfcGroup',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcInventoryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Jurisdiction',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResponsiblePersons',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LastUpdateDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurrentValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OriginalValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcInventoryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Jurisdiction',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResponsiblePersons',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LastUpdateDate',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurrentValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OriginalValue',
          type: 'IfcCostValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcInventory'],
    },
    IfcIrregularTimeSeries: {
      name: 'IfcIrregularTimeSeries',
      isAbstract: false,
      parent: 'IfcTimeSeries',
      attributes: [
        {
          name: 'Values',
          type: 'IfcIrregularTimeSeriesValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeSeriesDataType',
          type: 'IfcTimeSeriesDataTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Values',
          type: 'IfcIrregularTimeSeriesValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcTimeSeries', 'IfcIrregularTimeSeries'],
    },
    IfcIrregularTimeSeriesValue: {
      name: 'IfcIrregularTimeSeriesValue',
      isAbstract: false,
      attributes: [
        {
          name: 'TimeStamp',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ListValues',
          type: 'IfcValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'TimeStamp',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ListValues',
          type: 'IfcValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcIrregularTimeSeriesValue'],
    },
    IfcJunctionBox: {
      name: 'IfcJunctionBox',
      isAbstract: false,
      parent: 'IfcFlowFitting',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcJunctionBoxTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcJunctionBoxTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowFitting', 'IfcJunctionBox'],
    },
    IfcJunctionBoxType: {
      name: 'IfcJunctionBoxType',
      isAbstract: false,
      parent: 'IfcFlowFittingType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcJunctionBoxTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcJunctionBoxTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowFittingType', 'IfcJunctionBoxType'],
    },
    IfcLShapeProfileDef: {
      name: 'IfcLShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Width',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LegSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Width',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LegSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcLShapeProfileDef'],
    },
    IfcLaborResource: {
      name: 'IfcLaborResource',
      isAbstract: false,
      parent: 'IfcConstructionResource',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLaborResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLaborResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource', 'IfcLaborResource'],
    },
    IfcLaborResourceType: {
      name: 'IfcLaborResourceType',
      isAbstract: false,
      parent: 'IfcConstructionResourceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLaborResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLaborResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType', 'IfcLaborResourceType'],
    },
    IfcLagTime: {
      name: 'IfcLagTime',
      isAbstract: false,
      parent: 'IfcSchedulingTime',
      attributes: [
        {
          name: 'LagValue',
          type: 'IfcTimeOrRatioSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DurationType',
          type: 'IfcTaskDurationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LagValue',
          type: 'IfcTimeOrRatioSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DurationType',
          type: 'IfcTaskDurationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime', 'IfcLagTime'],
    },
    IfcLamp: {
      name: 'IfcLamp',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLampTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLampTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcLamp'],
    },
    IfcLampType: {
      name: 'IfcLampType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLampTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLampTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcLampType'],
    },
    IfcLibraryInformation: {
      name: 'IfcLibraryInformation',
      isAbstract: false,
      parent: 'IfcExternalInformation',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Version',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Publisher',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VersionDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Version',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Publisher',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VersionDate',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalInformation', 'IfcLibraryInformation'],
    },
    IfcLibraryReference: {
      name: 'IfcLibraryReference',
      isAbstract: false,
      parent: 'IfcExternalReference',
      attributes: [
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Language',
          type: 'IfcLanguageId',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencedLibrary',
          type: 'IfcLibraryInformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Language',
          type: 'IfcLanguageId',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencedLibrary',
          type: 'IfcLibraryInformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcExternalReference', 'IfcLibraryReference'],
    },
    IfcLightDistributionData: {
      name: 'IfcLightDistributionData',
      isAbstract: false,
      attributes: [
        {
          name: 'MainPlaneAngle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondaryPlaneAngle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LuminousIntensity',
          type: 'IfcLuminousIntensityDistributionMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'MainPlaneAngle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondaryPlaneAngle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LuminousIntensity',
          type: 'IfcLuminousIntensityDistributionMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcLightDistributionData'],
    },
    IfcLightFixture: {
      name: 'IfcLightFixture',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLightFixtureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLightFixtureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcLightFixture'],
    },
    IfcLightFixtureType: {
      name: 'IfcLightFixtureType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLightFixtureTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLightFixtureTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcLightFixtureType'],
    },
    IfcLightIntensityDistribution: {
      name: 'IfcLightIntensityDistribution',
      isAbstract: false,
      attributes: [
        {
          name: 'LightDistributionCurve',
          type: 'IfcLightDistributionCurveEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DistributionData',
          type: 'IfcLightDistributionData',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'LightDistributionCurve',
          type: 'IfcLightDistributionCurveEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DistributionData',
          type: 'IfcLightDistributionData',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcLightIntensityDistribution'],
    },
    IfcLightSource: {
      name: 'IfcLightSource',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcLightSource'],
    },
    IfcLightSourceAmbient: {
      name: 'IfcLightSourceAmbient',
      isAbstract: false,
      parent: 'IfcLightSource',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcLightSource', 'IfcLightSourceAmbient'],
    },
    IfcLightSourceDirectional: {
      name: 'IfcLightSourceDirectional',
      isAbstract: false,
      parent: 'IfcLightSource',
      attributes: [
        {
          name: 'Orientation',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcLightSource', 'IfcLightSourceDirectional'],
    },
    IfcLightSourceGoniometric: {
      name: 'IfcLightSourceGoniometric',
      isAbstract: false,
      parent: 'IfcLightSource',
      attributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourAppearance',
          type: 'IfcColourRgb',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourTemperature',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LuminousFlux',
          type: 'IfcLuminousFluxMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightEmissionSource',
          type: 'IfcLightEmissionSourceEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightDistributionDataSource',
          type: 'IfcLightDistributionDataSourceSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourAppearance',
          type: 'IfcColourRgb',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourTemperature',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LuminousFlux',
          type: 'IfcLuminousFluxMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightEmissionSource',
          type: 'IfcLightEmissionSourceEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightDistributionDataSource',
          type: 'IfcLightDistributionDataSourceSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcLightSource', 'IfcLightSourceGoniometric'],
    },
    IfcLightSourcePositional: {
      name: 'IfcLightSourcePositional',
      isAbstract: false,
      parent: 'IfcLightSource',
      attributes: [
        {
          name: 'Position',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstantAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DistanceAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'QuadricAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstantAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DistanceAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'QuadricAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcLightSource', 'IfcLightSourcePositional'],
    },
    IfcLightSourceSpot: {
      name: 'IfcLightSourceSpot',
      isAbstract: false,
      parent: 'IfcLightSourcePositional',
      attributes: [
        {
          name: 'Orientation',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConcentrationExponent',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SpreadAngle',
          type: 'IfcPositivePlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BeamWidthAngle',
          type: 'IfcPositivePlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LightColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AmbientIntensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Intensity',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstantAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DistanceAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'QuadricAttenuation',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConcentrationExponent',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SpreadAngle',
          type: 'IfcPositivePlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BeamWidthAngle',
          type: 'IfcPositivePlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcLightSource', 'IfcLightSourcePositional', 'IfcLightSourceSpot'],
    },
    IfcLine: {
      name: 'IfcLine',
      isAbstract: false,
      parent: 'IfcCurve',
      attributes: [
        {
          name: 'Pnt',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Dir',
          type: 'IfcVector',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Pnt',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Dir',
          type: 'IfcVector',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcLine'],
    },
    IfcLocalPlacement: {
      name: 'IfcLocalPlacement',
      isAbstract: false,
      parent: 'IfcObjectPlacement',
      attributes: [
        {
          name: 'PlacementRelTo',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelativePlacement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'PlacementRelTo',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelativePlacement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcObjectPlacement', 'IfcLocalPlacement'],
    },
    IfcLoop: {
      name: 'IfcLoop',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcLoop'],
    },
    IfcManifoldSolidBrep: {
      name: 'IfcManifoldSolidBrep',
      isAbstract: true,
      parent: 'IfcSolidModel',
      attributes: [
        {
          name: 'Outer',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Outer',
          type: 'IfcClosedShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcManifoldSolidBrep'],
    },
    IfcMapConversion: {
      name: 'IfcMapConversion',
      isAbstract: false,
      parent: 'IfcCoordinateOperation',
      attributes: [
        {
          name: 'Eastings',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Northings',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OrthogonalHeight',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XAxisAbscissa',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XAxisOrdinate',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SourceCRS',
          type: 'IfcCoordinateReferenceSystemSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TargetCRS',
          type: 'IfcCoordinateReferenceSystem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Eastings',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Northings',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OrthogonalHeight',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XAxisAbscissa',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XAxisOrdinate',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Scale',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcCoordinateOperation', 'IfcMapConversion'],
    },
    IfcMappedItem: {
      name: 'IfcMappedItem',
      isAbstract: false,
      parent: 'IfcRepresentationItem',
      attributes: [
        {
          name: 'MappingSource',
          type: 'IfcRepresentationMap',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MappingTarget',
          type: 'IfcCartesianTransformationOperator',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'MappingSource',
          type: 'IfcRepresentationMap',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MappingTarget',
          type: 'IfcCartesianTransformationOperator',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcMappedItem'],
    },
    IfcMaterial: {
      name: 'IfcMaterial',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterial'],
    },
    IfcMaterialClassificationRelationship: {
      name: 'IfcMaterialClassificationRelationship',
      isAbstract: false,
      attributes: [
        {
          name: 'MaterialClassifications',
          type: 'IfcClassificationSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ClassifiedMaterial',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'MaterialClassifications',
          type: 'IfcClassificationSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ClassifiedMaterial',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialClassificationRelationship'],
    },
    IfcMaterialConstituent: {
      name: 'IfcMaterialConstituent',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Fraction',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Fraction',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialConstituent'],
    },
    IfcMaterialConstituentSet: {
      name: 'IfcMaterialConstituentSet',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MaterialConstituents',
          type: 'IfcMaterialConstituent',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MaterialConstituents',
          type: 'IfcMaterialConstituent',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialConstituentSet'],
    },
    IfcMaterialDefinition: {
      name: 'IfcMaterialDefinition',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcMaterialDefinition'],
    },
    IfcMaterialDefinitionRepresentation: {
      name: 'IfcMaterialDefinitionRepresentation',
      isAbstract: false,
      parent: 'IfcProductRepresentation',
      attributes: [
        {
          name: 'RepresentedMaterial',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representations',
          type: 'IfcRepresentation',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentedMaterial',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProductRepresentation', 'IfcMaterialDefinitionRepresentation'],
    },
    IfcMaterialLayer: {
      name: 'IfcMaterialLayer',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsVentilated',
          type: 'IfcLogical',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsVentilated',
          type: 'IfcLogical',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialLayer'],
    },
    IfcMaterialLayerSet: {
      name: 'IfcMaterialLayerSet',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'MaterialLayers',
          type: 'IfcMaterialLayer',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LayerSetName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'MaterialLayers',
          type: 'IfcMaterialLayer',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LayerSetName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialLayerSet'],
    },
    IfcMaterialLayerSetUsage: {
      name: 'IfcMaterialLayerSetUsage',
      isAbstract: false,
      parent: 'IfcMaterialUsageDefinition',
      attributes: [
        {
          name: 'ForLayerSet',
          type: 'IfcMaterialLayerSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerSetDirection',
          type: 'IfcLayerSetDirectionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DirectionSense',
          type: 'IfcDirectionSenseEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OffsetFromReferenceLine',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceExtent',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ForLayerSet',
          type: 'IfcMaterialLayerSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerSetDirection',
          type: 'IfcLayerSetDirectionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DirectionSense',
          type: 'IfcDirectionSenseEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OffsetFromReferenceLine',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceExtent',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialUsageDefinition', 'IfcMaterialLayerSetUsage'],
    },
    IfcMaterialLayerWithOffsets: {
      name: 'IfcMaterialLayerWithOffsets',
      isAbstract: false,
      parent: 'IfcMaterialLayer',
      attributes: [
        {
          name: 'OffsetDirection',
          type: 'IfcLayerSetDirectionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OffsetValues',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: true,
          isList: false,
          isSet: false,
          arrayBounds: [1, 2],
        },
      ],
      allAttributes: [
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsVentilated',
          type: 'IfcLogical',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OffsetDirection',
          type: 'IfcLayerSetDirectionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OffsetValues',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: true,
          isList: false,
          isSet: false,
          arrayBounds: [1, 2],
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialLayer', 'IfcMaterialLayerWithOffsets'],
    },
    IfcMaterialList: {
      name: 'IfcMaterialList',
      isAbstract: false,
      attributes: [
        {
          name: 'Materials',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Materials',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcMaterialList'],
    },
    IfcMaterialProfile: {
      name: 'IfcMaterialProfile',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Profile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Profile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialProfile'],
    },
    IfcMaterialProfileSet: {
      name: 'IfcMaterialProfileSet',
      isAbstract: false,
      parent: 'IfcMaterialDefinition',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MaterialProfiles',
          type: 'IfcMaterialProfile',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'CompositeProfile',
          type: 'IfcCompositeProfileDef',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MaterialProfiles',
          type: 'IfcMaterialProfile',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'CompositeProfile',
          type: 'IfcCompositeProfileDef',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialProfileSet'],
    },
    IfcMaterialProfileSetUsage: {
      name: 'IfcMaterialProfileSetUsage',
      isAbstract: false,
      parent: 'IfcMaterialUsageDefinition',
      attributes: [
        {
          name: 'ForProfileSet',
          type: 'IfcMaterialProfileSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CardinalPoint',
          type: 'IfcCardinalPointReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceExtent',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ForProfileSet',
          type: 'IfcMaterialProfileSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CardinalPoint',
          type: 'IfcCardinalPointReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceExtent',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialUsageDefinition', 'IfcMaterialProfileSetUsage'],
    },
    IfcMaterialProfileSetUsageTapering: {
      name: 'IfcMaterialProfileSetUsageTapering',
      isAbstract: false,
      parent: 'IfcMaterialProfileSetUsage',
      attributes: [
        {
          name: 'ForProfileEndSet',
          type: 'IfcMaterialProfileSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CardinalEndPoint',
          type: 'IfcCardinalPointReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ForProfileSet',
          type: 'IfcMaterialProfileSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CardinalPoint',
          type: 'IfcCardinalPointReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceExtent',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForProfileEndSet',
          type: 'IfcMaterialProfileSet',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CardinalEndPoint',
          type: 'IfcCardinalPointReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMaterialUsageDefinition', 'IfcMaterialProfileSetUsage', 'IfcMaterialProfileSetUsageTapering'],
    },
    IfcMaterialProfileWithOffsets: {
      name: 'IfcMaterialProfileWithOffsets',
      isAbstract: false,
      parent: 'IfcMaterialProfile',
      attributes: [
        {
          name: 'OffsetValues',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: true,
          isList: false,
          isSet: false,
          arrayBounds: [1, 2],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Material',
          type: 'IfcMaterial',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Profile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Category',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OffsetValues',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: true,
          isList: false,
          isSet: false,
          arrayBounds: [1, 2],
        },
      ],
      inheritanceChain: ['IfcMaterialDefinition', 'IfcMaterialProfile', 'IfcMaterialProfileWithOffsets'],
    },
    IfcMaterialProperties: {
      name: 'IfcMaterialProperties',
      isAbstract: false,
      parent: 'IfcExtendedProperties',
      attributes: [
        {
          name: 'Material',
          type: 'IfcMaterialDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Properties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Material',
          type: 'IfcMaterialDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcExtendedProperties', 'IfcMaterialProperties'],
    },
    IfcMaterialRelationship: {
      name: 'IfcMaterialRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingMaterial',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedMaterials',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Expression',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingMaterial',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedMaterials',
          type: 'IfcMaterial',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Expression',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcMaterialRelationship'],
    },
    IfcMaterialUsageDefinition: {
      name: 'IfcMaterialUsageDefinition',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcMaterialUsageDefinition'],
    },
    IfcMeasureWithUnit: {
      name: 'IfcMeasureWithUnit',
      isAbstract: false,
      attributes: [
        {
          name: 'ValueComponent',
          type: 'IfcValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitComponent',
          type: 'IfcUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ValueComponent',
          type: 'IfcValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitComponent',
          type: 'IfcUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMeasureWithUnit'],
    },
    IfcMechanicalFastener: {
      name: 'IfcMechanicalFastener',
      isAbstract: false,
      parent: 'IfcElementComponent',
      attributes: [
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMechanicalFastenerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMechanicalFastenerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcMechanicalFastener'],
    },
    IfcMechanicalFastenerType: {
      name: 'IfcMechanicalFastenerType',
      isAbstract: false,
      parent: 'IfcElementComponentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMechanicalFastenerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMechanicalFastenerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcMechanicalFastenerType'],
    },
    IfcMedicalDevice: {
      name: 'IfcMedicalDevice',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMedicalDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMedicalDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcMedicalDevice'],
    },
    IfcMedicalDeviceType: {
      name: 'IfcMedicalDeviceType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMedicalDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMedicalDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcMedicalDeviceType'],
    },
    IfcMember: {
      name: 'IfcMember',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMemberTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMemberTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcMember'],
    },
    IfcMemberStandardCase: {
      name: 'IfcMemberStandardCase',
      isAbstract: false,
      parent: 'IfcMember',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMemberTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcMember', 'IfcMemberStandardCase'],
    },
    IfcMemberType: {
      name: 'IfcMemberType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcMemberType'],
    },
    IfcMetric: {
      name: 'IfcMetric',
      isAbstract: false,
      parent: 'IfcConstraint',
      attributes: [
        {
          name: 'Benchmark',
          type: 'IfcBenchmarkEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ValueSource',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataValue',
          type: 'IfcMetricValueSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencePath',
          type: 'IfcReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintGrade',
          type: 'IfcConstraintEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintSource',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreatingActor',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Benchmark',
          type: 'IfcBenchmarkEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ValueSource',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataValue',
          type: 'IfcMetricValueSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencePath',
          type: 'IfcReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConstraint', 'IfcMetric'],
    },
    IfcMirroredProfileDef: {
      name: 'IfcMirroredProfileDef',
      isAbstract: false,
      parent: 'IfcDerivedProfileDef',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentProfile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Operator',
          type: 'IfcCartesianTransformationOperator2D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Label',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcDerivedProfileDef', 'IfcMirroredProfileDef'],
    },
    IfcMonetaryUnit: {
      name: 'IfcMonetaryUnit',
      isAbstract: false,
      attributes: [
        {
          name: 'Currency',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Currency',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcMonetaryUnit'],
    },
    IfcMotorConnection: {
      name: 'IfcMotorConnection',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMotorConnectionTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMotorConnectionTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcMotorConnection'],
    },
    IfcMotorConnectionType: {
      name: 'IfcMotorConnectionType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcMotorConnectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcMotorConnectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcMotorConnectionType'],
    },
    IfcNamedUnit: {
      name: 'IfcNamedUnit',
      isAbstract: true,
      attributes: [
        {
          name: 'Dimensions',
          type: 'IfcDimensionalExponents',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitType',
          type: 'IfcUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Dimensions',
          type: 'IfcDimensionalExponents',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitType',
          type: 'IfcUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcNamedUnit'],
    },
    IfcObject: {
      name: 'IfcObject',
      isAbstract: true,
      parent: 'IfcObjectDefinition',
      attributes: [
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject'],
    },
    IfcObjectDefinition: {
      name: 'IfcObjectDefinition',
      isAbstract: true,
      parent: 'IfcRoot',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition'],
    },
    IfcObjectPlacement: {
      name: 'IfcObjectPlacement',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcObjectPlacement'],
    },
    IfcObjective: {
      name: 'IfcObjective',
      isAbstract: false,
      parent: 'IfcConstraint',
      attributes: [
        {
          name: 'BenchmarkValues',
          type: 'IfcConstraint',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LogicalAggregator',
          type: 'IfcLogicalOperatorEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectiveQualifier',
          type: 'IfcObjectiveEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedQualifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintGrade',
          type: 'IfcConstraintEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstraintSource',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreatingActor',
          type: 'IfcActorSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BenchmarkValues',
          type: 'IfcConstraint',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'LogicalAggregator',
          type: 'IfcLogicalOperatorEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectiveQualifier',
          type: 'IfcObjectiveEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedQualifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcConstraint', 'IfcObjective'],
    },
    IfcOccupant: {
      name: 'IfcOccupant',
      isAbstract: false,
      parent: 'IfcActor',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcOccupantTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TheActor',
          type: 'IfcActorSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcOccupantTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcActor', 'IfcOccupant'],
    },
    IfcOffsetCurve2D: {
      name: 'IfcOffsetCurve2D',
      isAbstract: false,
      parent: 'IfcCurve',
      attributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Distance',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Distance',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcOffsetCurve2D'],
    },
    IfcOffsetCurve3D: {
      name: 'IfcOffsetCurve3D',
      isAbstract: false,
      parent: 'IfcCurve',
      attributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Distance',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Distance',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcOffsetCurve3D'],
    },
    IfcOpenShell: {
      name: 'IfcOpenShell',
      isAbstract: false,
      parent: 'IfcConnectedFaceSet',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'CfsFaces',
          type: 'IfcFace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcConnectedFaceSet', 'IfcOpenShell'],
    },
    IfcOpeningElement: {
      name: 'IfcOpeningElement',
      isAbstract: false,
      parent: 'IfcFeatureElementSubtraction',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcOpeningElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcOpeningElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcFeatureElementSubtraction', 'IfcOpeningElement'],
    },
    IfcOpeningStandardCase: {
      name: 'IfcOpeningStandardCase',
      isAbstract: false,
      parent: 'IfcOpeningElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcOpeningElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcFeatureElementSubtraction', 'IfcOpeningElement', 'IfcOpeningStandardCase'],
    },
    IfcOrganization: {
      name: 'IfcOrganization',
      isAbstract: false,
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Roles',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Addresses',
          type: 'IfcAddress',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Roles',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Addresses',
          type: 'IfcAddress',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcOrganization'],
    },
    IfcOrganizationRelationship: {
      name: 'IfcOrganizationRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingOrganization',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedOrganizations',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingOrganization',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedOrganizations',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcOrganizationRelationship'],
    },
    IfcOrientedEdge: {
      name: 'IfcOrientedEdge',
      isAbstract: false,
      parent: 'IfcEdge',
      attributes: [
        {
          name: 'EdgeElement',
          type: 'IfcEdge',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'EdgeStart',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeEnd',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeElement',
          type: 'IfcEdge',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Orientation',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcEdge', 'IfcOrientedEdge'],
    },
    IfcOuterBoundaryCurve: {
      name: 'IfcOuterBoundaryCurve',
      isAbstract: false,
      parent: 'IfcBoundaryCurve',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Segments',
          type: 'IfcCompositeCurveSegment',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcCompositeCurve', 'IfcCompositeCurveOnSurface', 'IfcBoundaryCurve', 'IfcOuterBoundaryCurve'],
    },
    IfcOutlet: {
      name: 'IfcOutlet',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcOutletTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcOutletTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcOutlet'],
    },
    IfcOutletType: {
      name: 'IfcOutletType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcOutletTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcOutletTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcOutletType'],
    },
    IfcOwnerHistory: {
      name: 'IfcOwnerHistory',
      isAbstract: false,
      attributes: [
        {
          name: 'OwningUser',
          type: 'IfcPersonAndOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwningApplication',
          type: 'IfcApplication',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'State',
          type: 'IfcStateEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ChangeAction',
          type: 'IfcChangeActionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastModifiedDate',
          type: 'IfcTimeStamp',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastModifyingUser',
          type: 'IfcPersonAndOrganization',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastModifyingApplication',
          type: 'IfcApplication',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationDate',
          type: 'IfcTimeStamp',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'OwningUser',
          type: 'IfcPersonAndOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwningApplication',
          type: 'IfcApplication',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'State',
          type: 'IfcStateEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ChangeAction',
          type: 'IfcChangeActionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastModifiedDate',
          type: 'IfcTimeStamp',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastModifyingUser',
          type: 'IfcPersonAndOrganization',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LastModifyingApplication',
          type: 'IfcApplication',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationDate',
          type: 'IfcTimeStamp',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcOwnerHistory'],
    },
    IfcParameterizedProfileDef: {
      name: 'IfcParameterizedProfileDef',
      isAbstract: true,
      parent: 'IfcProfileDef',
      attributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef'],
    },
    IfcPath: {
      name: 'IfcPath',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
        {
          name: 'EdgeList',
          type: 'UNIQUE IfcOrientedEdge',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'EdgeList',
          type: 'UNIQUE IfcOrientedEdge',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcPath'],
    },
    IfcPcurve: {
      name: 'IfcPcurve',
      isAbstract: false,
      parent: 'IfcCurve',
      attributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcPcurve'],
    },
    IfcPerformanceHistory: {
      name: 'IfcPerformanceHistory',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'LifeCyclePhase',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPerformanceHistoryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LifeCyclePhase',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPerformanceHistoryTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcPerformanceHistory'],
    },
    IfcPermeableCoveringProperties: {
      name: 'IfcPermeableCoveringProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedPropertySet',
      attributes: [
        {
          name: 'OperationType',
          type: 'IfcPermeableCoveringOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelPosition',
          type: 'IfcWindowPanelPositionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcPermeableCoveringOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelPosition',
          type: 'IfcWindowPanelPositionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet', 'IfcPermeableCoveringProperties'],
    },
    IfcPermit: {
      name: 'IfcPermit',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPermitTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPermitTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcPermit'],
    },
    IfcPerson: {
      name: 'IfcPerson',
      isAbstract: false,
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FamilyName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GivenName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MiddleNames',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PrefixTitles',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SuffixTitles',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Roles',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Addresses',
          type: 'IfcAddress',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FamilyName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GivenName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MiddleNames',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PrefixTitles',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SuffixTitles',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Roles',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Addresses',
          type: 'IfcAddress',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPerson'],
    },
    IfcPersonAndOrganization: {
      name: 'IfcPersonAndOrganization',
      isAbstract: false,
      attributes: [
        {
          name: 'ThePerson',
          type: 'IfcPerson',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TheOrganization',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Roles',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'ThePerson',
          type: 'IfcPerson',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TheOrganization',
          type: 'IfcOrganization',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Roles',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPersonAndOrganization'],
    },
    IfcPhysicalComplexQuantity: {
      name: 'IfcPhysicalComplexQuantity',
      isAbstract: false,
      parent: 'IfcPhysicalQuantity',
      attributes: [
        {
          name: 'HasQuantities',
          type: 'IfcPhysicalQuantity',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Discrimination',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Quality',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasQuantities',
          type: 'IfcPhysicalQuantity',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Discrimination',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Quality',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalComplexQuantity'],
    },
    IfcPhysicalQuantity: {
      name: 'IfcPhysicalQuantity',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity'],
    },
    IfcPhysicalSimpleQuantity: {
      name: 'IfcPhysicalSimpleQuantity',
      isAbstract: true,
      parent: 'IfcPhysicalQuantity',
      attributes: [
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity'],
    },
    IfcPile: {
      name: 'IfcPile',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPileTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstructionType',
          type: 'IfcPileConstructionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPileTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstructionType',
          type: 'IfcPileConstructionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcPile'],
    },
    IfcPileType: {
      name: 'IfcPileType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcPileType'],
    },
    IfcPipeFitting: {
      name: 'IfcPipeFitting',
      isAbstract: false,
      parent: 'IfcFlowFitting',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPipeFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPipeFittingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowFitting', 'IfcPipeFitting'],
    },
    IfcPipeFittingType: {
      name: 'IfcPipeFittingType',
      isAbstract: false,
      parent: 'IfcFlowFittingType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPipeFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPipeFittingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowFittingType', 'IfcPipeFittingType'],
    },
    IfcPipeSegment: {
      name: 'IfcPipeSegment',
      isAbstract: false,
      parent: 'IfcFlowSegment',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPipeSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPipeSegmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowSegment', 'IfcPipeSegment'],
    },
    IfcPipeSegmentType: {
      name: 'IfcPipeSegmentType',
      isAbstract: false,
      parent: 'IfcFlowSegmentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPipeSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPipeSegmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowSegmentType', 'IfcPipeSegmentType'],
    },
    IfcPixelTexture: {
      name: 'IfcPixelTexture',
      isAbstract: false,
      parent: 'IfcSurfaceTexture',
      attributes: [
        {
          name: 'Width',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Height',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourComponents',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Pixel',
          type: 'IfcBinary',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'RepeatS',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepeatT',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Mode',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextureTransform',
          type: 'IfcCartesianTransformationOperator2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Width',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Height',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ColourComponents',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Pixel',
          type: 'IfcBinary',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceTexture', 'IfcPixelTexture'],
    },
    IfcPlacement: {
      name: 'IfcPlacement',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Location',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Location',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPlacement'],
    },
    IfcPlanarBox: {
      name: 'IfcPlanarBox',
      isAbstract: false,
      parent: 'IfcPlanarExtent',
      attributes: [
        {
          name: 'Placement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SizeInX',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SizeInY',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Placement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPlanarExtent', 'IfcPlanarBox'],
    },
    IfcPlanarExtent: {
      name: 'IfcPlanarExtent',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'SizeInX',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SizeInY',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SizeInX',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SizeInY',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPlanarExtent'],
    },
    IfcPlane: {
      name: 'IfcPlane',
      isAbstract: false,
      parent: 'IfcElementarySurface',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcElementarySurface', 'IfcPlane'],
    },
    IfcPlate: {
      name: 'IfcPlate',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPlateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPlateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcPlate'],
    },
    IfcPlateStandardCase: {
      name: 'IfcPlateStandardCase',
      isAbstract: false,
      parent: 'IfcPlate',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPlateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcPlate', 'IfcPlateStandardCase'],
    },
    IfcPlateType: {
      name: 'IfcPlateType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPlateTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPlateTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcPlateType'],
    },
    IfcPoint: {
      name: 'IfcPoint',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPoint'],
    },
    IfcPointOnCurve: {
      name: 'IfcPointOnCurve',
      isAbstract: false,
      parent: 'IfcPoint',
      attributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointParameter',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointParameter',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPoint', 'IfcPointOnCurve'],
    },
    IfcPointOnSurface: {
      name: 'IfcPointOnSurface',
      isAbstract: false,
      parent: 'IfcPoint',
      attributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointParameterU',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointParameterV',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointParameterU',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PointParameterV',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcPoint', 'IfcPointOnSurface'],
    },
    IfcPolyLoop: {
      name: 'IfcPolyLoop',
      isAbstract: false,
      parent: 'IfcLoop',
      attributes: [
        {
          name: 'Polygon',
          type: 'UNIQUE IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Polygon',
          type: 'UNIQUE IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcLoop', 'IfcPolyLoop'],
    },
    IfcPolygonalBoundedHalfSpace: {
      name: 'IfcPolygonalBoundedHalfSpace',
      isAbstract: false,
      parent: 'IfcHalfSpaceSolid',
      attributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PolygonalBoundary',
          type: 'IfcBoundedCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BaseSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AgreementFlag',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PolygonalBoundary',
          type: 'IfcBoundedCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcHalfSpaceSolid', 'IfcPolygonalBoundedHalfSpace'],
    },
    IfcPolygonalFaceSet: {
      name: 'IfcPolygonalFaceSet',
      isAbstract: false,
      parent: 'IfcTessellatedFaceSet',
      attributes: [
        {
          name: 'Closed',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Faces',
          type: 'IfcIndexedPolygonalFace',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PnIndex',
          type: 'IfcPositiveInteger',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Coordinates',
          type: 'IfcCartesianPointList3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Closed',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Faces',
          type: 'IfcIndexedPolygonalFace',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PnIndex',
          type: 'IfcPositiveInteger',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTessellatedItem', 'IfcTessellatedFaceSet', 'IfcPolygonalFaceSet'],
    },
    IfcPolyline: {
      name: 'IfcPolyline',
      isAbstract: false,
      parent: 'IfcBoundedCurve',
      attributes: [
        {
          name: 'Points',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Points',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcPolyline'],
    },
    IfcPort: {
      name: 'IfcPort',
      isAbstract: true,
      parent: 'IfcProduct',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcPort'],
    },
    IfcPostalAddress: {
      name: 'IfcPostalAddress',
      isAbstract: false,
      parent: 'IfcAddress',
      attributes: [
        {
          name: 'InternalLocation',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AddressLines',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PostalBox',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Town',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Region',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PostalCode',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Country',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Purpose',
          type: 'IfcAddressTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPurpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalLocation',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AddressLines',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PostalBox',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Town',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Region',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PostalCode',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Country',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcAddress', 'IfcPostalAddress'],
    },
    IfcPreDefinedColour: {
      name: 'IfcPreDefinedColour',
      isAbstract: true,
      parent: 'IfcPreDefinedItem',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem', 'IfcPreDefinedColour'],
    },
    IfcPreDefinedCurveFont: {
      name: 'IfcPreDefinedCurveFont',
      isAbstract: true,
      parent: 'IfcPreDefinedItem',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem', 'IfcPreDefinedCurveFont'],
    },
    IfcPreDefinedItem: {
      name: 'IfcPreDefinedItem',
      isAbstract: true,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem'],
    },
    IfcPreDefinedProperties: {
      name: 'IfcPreDefinedProperties',
      isAbstract: true,
      parent: 'IfcPropertyAbstraction',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcPreDefinedProperties'],
    },
    IfcPreDefinedPropertySet: {
      name: 'IfcPreDefinedPropertySet',
      isAbstract: true,
      parent: 'IfcPropertySetDefinition',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet'],
    },
    IfcPreDefinedTextFont: {
      name: 'IfcPreDefinedTextFont',
      isAbstract: true,
      parent: 'IfcPreDefinedItem',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem', 'IfcPreDefinedTextFont'],
    },
    IfcPresentationItem: {
      name: 'IfcPresentationItem',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcPresentationItem'],
    },
    IfcPresentationLayerAssignment: {
      name: 'IfcPresentationLayerAssignment',
      isAbstract: false,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssignedItems',
          type: 'IfcLayeredItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssignedItems',
          type: 'IfcLayeredItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationLayerAssignment'],
    },
    IfcPresentationLayerWithStyle: {
      name: 'IfcPresentationLayerWithStyle',
      isAbstract: false,
      parent: 'IfcPresentationLayerAssignment',
      attributes: [
        {
          name: 'LayerOn',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerFrozen',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerBlocked',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerStyles',
          type: 'IfcPresentationStyle',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [0, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssignedItems',
          type: 'IfcLayeredItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerOn',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerFrozen',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerBlocked',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LayerStyles',
          type: 'IfcPresentationStyle',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [0, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationLayerAssignment', 'IfcPresentationLayerWithStyle'],
    },
    IfcPresentationStyle: {
      name: 'IfcPresentationStyle',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationStyle'],
    },
    IfcPresentationStyleAssignment: {
      name: 'IfcPresentationStyleAssignment',
      isAbstract: false,
      attributes: [
        {
          name: 'Styles',
          type: 'IfcPresentationStyleSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Styles',
          type: 'IfcPresentationStyleSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationStyleAssignment'],
    },
    IfcProcedure: {
      name: 'IfcProcedure',
      isAbstract: false,
      parent: 'IfcProcess',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProcedureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProcedureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProcess', 'IfcProcedure'],
    },
    IfcProcedureType: {
      name: 'IfcProcedureType',
      isAbstract: false,
      parent: 'IfcTypeProcess',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProcedureTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProcessType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProcedureTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProcess', 'IfcProcedureType'],
    },
    IfcProcess: {
      name: 'IfcProcess',
      isAbstract: true,
      parent: 'IfcObject',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProcess'],
    },
    IfcProduct: {
      name: 'IfcProduct',
      isAbstract: true,
      parent: 'IfcObject',
      attributes: [
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct'],
    },
    IfcProductDefinitionShape: {
      name: 'IfcProductDefinitionShape',
      isAbstract: false,
      parent: 'IfcProductRepresentation',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representations',
          type: 'IfcRepresentation',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcProductRepresentation', 'IfcProductDefinitionShape'],
    },
    IfcProductRepresentation: {
      name: 'IfcProductRepresentation',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representations',
          type: 'IfcRepresentation',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representations',
          type: 'IfcRepresentation',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcProductRepresentation'],
    },
    IfcProfileDef: {
      name: 'IfcProfileDef',
      isAbstract: false,
      attributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef'],
    },
    IfcProfileProperties: {
      name: 'IfcProfileProperties',
      isAbstract: false,
      parent: 'IfcExtendedProperties',
      attributes: [
        {
          name: 'ProfileDefinition',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Properties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ProfileDefinition',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcExtendedProperties', 'IfcProfileProperties'],
    },
    IfcProject: {
      name: 'IfcProject',
      isAbstract: false,
      parent: 'IfcContext',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Phase',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationContexts',
          type: 'IfcRepresentationContext',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'UnitsInContext',
          type: 'IfcUnitAssignment',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcContext', 'IfcProject'],
    },
    IfcProjectLibrary: {
      name: 'IfcProjectLibrary',
      isAbstract: false,
      parent: 'IfcContext',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Phase',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationContexts',
          type: 'IfcRepresentationContext',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'UnitsInContext',
          type: 'IfcUnitAssignment',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcContext', 'IfcProjectLibrary'],
    },
    IfcProjectOrder: {
      name: 'IfcProjectOrder',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProjectOrderTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProjectOrderTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcProjectOrder'],
    },
    IfcProjectedCRS: {
      name: 'IfcProjectedCRS',
      isAbstract: false,
      parent: 'IfcCoordinateReferenceSystem',
      attributes: [
        {
          name: 'MapProjection',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MapZone',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MapUnit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GeodeticDatum',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VerticalDatum',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MapProjection',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MapZone',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MapUnit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcCoordinateReferenceSystem', 'IfcProjectedCRS'],
    },
    IfcProjectionElement: {
      name: 'IfcProjectionElement',
      isAbstract: false,
      parent: 'IfcFeatureElementAddition',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProjectionElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProjectionElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcFeatureElementAddition', 'IfcProjectionElement'],
    },
    IfcProperty: {
      name: 'IfcProperty',
      isAbstract: true,
      parent: 'IfcPropertyAbstraction',
      attributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty'],
    },
    IfcPropertyAbstraction: {
      name: 'IfcPropertyAbstraction',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcPropertyAbstraction'],
    },
    IfcPropertyBoundedValue: {
      name: 'IfcPropertyBoundedValue',
      isAbstract: false,
      parent: 'IfcSimpleProperty',
      attributes: [
        {
          name: 'UpperBoundValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LowerBoundValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SetPointValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UpperBoundValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LowerBoundValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SetPointValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty', 'IfcPropertyBoundedValue'],
    },
    IfcPropertyDefinition: {
      name: 'IfcPropertyDefinition',
      isAbstract: true,
      parent: 'IfcRoot',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition'],
    },
    IfcPropertyDependencyRelationship: {
      name: 'IfcPropertyDependencyRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'DependingProperty',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DependantProperty',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Expression',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DependingProperty',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DependantProperty',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Expression',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcPropertyDependencyRelationship'],
    },
    IfcPropertyEnumeratedValue: {
      name: 'IfcPropertyEnumeratedValue',
      isAbstract: false,
      parent: 'IfcSimpleProperty',
      attributes: [
        {
          name: 'EnumerationValues',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'EnumerationReference',
          type: 'IfcPropertyEnumeration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EnumerationValues',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'EnumerationReference',
          type: 'IfcPropertyEnumeration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty', 'IfcPropertyEnumeratedValue'],
    },
    IfcPropertyEnumeration: {
      name: 'IfcPropertyEnumeration',
      isAbstract: false,
      parent: 'IfcPropertyAbstraction',
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EnumerationValues',
          type: 'UNIQUE IfcValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EnumerationValues',
          type: 'UNIQUE IfcValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcPropertyEnumeration'],
    },
    IfcPropertyListValue: {
      name: 'IfcPropertyListValue',
      isAbstract: false,
      parent: 'IfcSimpleProperty',
      attributes: [
        {
          name: 'ListValues',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ListValues',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty', 'IfcPropertyListValue'],
    },
    IfcPropertyReferenceValue: {
      name: 'IfcPropertyReferenceValue',
      isAbstract: false,
      parent: 'IfcSimpleProperty',
      attributes: [
        {
          name: 'UsageName',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PropertyReference',
          type: 'IfcObjectReferenceSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UsageName',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PropertyReference',
          type: 'IfcObjectReferenceSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty', 'IfcPropertyReferenceValue'],
    },
    IfcPropertySet: {
      name: 'IfcPropertySet',
      isAbstract: false,
      parent: 'IfcPropertySetDefinition',
      attributes: [
        {
          name: 'HasProperties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasProperties',
          type: 'IfcProperty',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPropertySet'],
    },
    IfcPropertySetDefinition: {
      name: 'IfcPropertySetDefinition',
      isAbstract: true,
      parent: 'IfcPropertyDefinition',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition'],
    },
    IfcPropertySetTemplate: {
      name: 'IfcPropertySetTemplate',
      isAbstract: false,
      parent: 'IfcPropertyTemplateDefinition',
      attributes: [
        {
          name: 'TemplateType',
          type: 'IfcPropertySetTemplateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableEntity',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertyTemplates',
          type: 'IfcPropertyTemplate',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TemplateType',
          type: 'IfcPropertySetTemplateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableEntity',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertyTemplates',
          type: 'IfcPropertyTemplate',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertyTemplateDefinition', 'IfcPropertySetTemplate'],
    },
    IfcPropertySingleValue: {
      name: 'IfcPropertySingleValue',
      isAbstract: false,
      parent: 'IfcSimpleProperty',
      attributes: [
        {
          name: 'NominalValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalValue',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty', 'IfcPropertySingleValue'],
    },
    IfcPropertyTableValue: {
      name: 'IfcPropertyTableValue',
      isAbstract: false,
      parent: 'IfcSimpleProperty',
      attributes: [
        {
          name: 'DefiningValues',
          type: 'UNIQUE IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'DefinedValues',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Expression',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DefiningUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DefinedUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveInterpolation',
          type: 'IfcCurveInterpolationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DefiningValues',
          type: 'UNIQUE IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'DefinedValues',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Expression',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DefiningUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DefinedUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CurveInterpolation',
          type: 'IfcCurveInterpolationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty', 'IfcPropertyTableValue'],
    },
    IfcPropertyTemplate: {
      name: 'IfcPropertyTemplate',
      isAbstract: true,
      parent: 'IfcPropertyTemplateDefinition',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertyTemplateDefinition', 'IfcPropertyTemplate'],
    },
    IfcPropertyTemplateDefinition: {
      name: 'IfcPropertyTemplateDefinition',
      isAbstract: true,
      parent: 'IfcPropertyDefinition',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertyTemplateDefinition'],
    },
    IfcProtectiveDevice: {
      name: 'IfcProtectiveDevice',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcProtectiveDevice'],
    },
    IfcProtectiveDeviceTrippingUnit: {
      name: 'IfcProtectiveDeviceTrippingUnit',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTrippingUnitTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTrippingUnitTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcProtectiveDeviceTrippingUnit'],
    },
    IfcProtectiveDeviceTrippingUnitType: {
      name: 'IfcProtectiveDeviceTrippingUnitType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTrippingUnitTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTrippingUnitTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcProtectiveDeviceTrippingUnitType'],
    },
    IfcProtectiveDeviceType: {
      name: 'IfcProtectiveDeviceType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcProtectiveDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcProtectiveDeviceType'],
    },
    IfcProxy: {
      name: 'IfcProxy',
      isAbstract: false,
      parent: 'IfcProduct',
      attributes: [
        {
          name: 'ProxyType',
          type: 'IfcObjectTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProxyType',
          type: 'IfcObjectTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcProxy'],
    },
    IfcPump: {
      name: 'IfcPump',
      isAbstract: false,
      parent: 'IfcFlowMovingDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPumpTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPumpTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowMovingDevice', 'IfcPump'],
    },
    IfcPumpType: {
      name: 'IfcPumpType',
      isAbstract: false,
      parent: 'IfcFlowMovingDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcPumpTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcPumpTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowMovingDeviceType', 'IfcPumpType'],
    },
    IfcQuantityArea: {
      name: 'IfcQuantityArea',
      isAbstract: false,
      parent: 'IfcPhysicalSimpleQuantity',
      attributes: [
        {
          name: 'AreaValue',
          type: 'IfcAreaMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AreaValue',
          type: 'IfcAreaMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity', 'IfcQuantityArea'],
    },
    IfcQuantityCount: {
      name: 'IfcQuantityCount',
      isAbstract: false,
      parent: 'IfcPhysicalSimpleQuantity',
      attributes: [
        {
          name: 'CountValue',
          type: 'IfcCountMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CountValue',
          type: 'IfcCountMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity', 'IfcQuantityCount'],
    },
    IfcQuantityLength: {
      name: 'IfcQuantityLength',
      isAbstract: false,
      parent: 'IfcPhysicalSimpleQuantity',
      attributes: [
        {
          name: 'LengthValue',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LengthValue',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity', 'IfcQuantityLength'],
    },
    IfcQuantitySet: {
      name: 'IfcQuantitySet',
      isAbstract: true,
      parent: 'IfcPropertySetDefinition',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcQuantitySet'],
    },
    IfcQuantityTime: {
      name: 'IfcQuantityTime',
      isAbstract: false,
      parent: 'IfcPhysicalSimpleQuantity',
      attributes: [
        {
          name: 'TimeValue',
          type: 'IfcTimeMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeValue',
          type: 'IfcTimeMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity', 'IfcQuantityTime'],
    },
    IfcQuantityVolume: {
      name: 'IfcQuantityVolume',
      isAbstract: false,
      parent: 'IfcPhysicalSimpleQuantity',
      attributes: [
        {
          name: 'VolumeValue',
          type: 'IfcVolumeMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VolumeValue',
          type: 'IfcVolumeMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity', 'IfcQuantityVolume'],
    },
    IfcQuantityWeight: {
      name: 'IfcQuantityWeight',
      isAbstract: false,
      parent: 'IfcPhysicalSimpleQuantity',
      attributes: [
        {
          name: 'WeightValue',
          type: 'IfcMassMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcNamedUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WeightValue',
          type: 'IfcMassMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Formula',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPhysicalQuantity', 'IfcPhysicalSimpleQuantity', 'IfcQuantityWeight'],
    },
    IfcRailing: {
      name: 'IfcRailing',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRailingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRailingTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcRailing'],
    },
    IfcRailingType: {
      name: 'IfcRailingType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRailingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRailingTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcRailingType'],
    },
    IfcRamp: {
      name: 'IfcRamp',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRampTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRampTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcRamp'],
    },
    IfcRampFlight: {
      name: 'IfcRampFlight',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRampFlightTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRampFlightTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcRampFlight'],
    },
    IfcRampFlightType: {
      name: 'IfcRampFlightType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRampFlightTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRampFlightTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcRampFlightType'],
    },
    IfcRampType: {
      name: 'IfcRampType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRampTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRampTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcRampType'],
    },
    IfcRationalBSplineCurveWithKnots: {
      name: 'IfcRationalBSplineCurveWithKnots',
      isAbstract: false,
      parent: 'IfcBSplineCurveWithKnots',
      attributes: [
        {
          name: 'WeightsData',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Degree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'CurveForm',
          type: 'IfcBSplineCurveForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ClosedCurve',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'KnotMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'Knots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'KnotSpec',
          type: 'IfcKnotType',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WeightsData',
          type: 'IfcReal',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcBSplineCurve', 'IfcBSplineCurveWithKnots', 'IfcRationalBSplineCurveWithKnots'],
    },
    IfcRationalBSplineSurfaceWithKnots: {
      name: 'IfcRationalBSplineSurfaceWithKnots',
      isAbstract: false,
      parent: 'IfcBSplineSurfaceWithKnots',
      attributes: [
        {
          name: 'WeightsData',
          type: 'IfcReal[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'UDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VDegree',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ControlPointsList',
          type: 'IfcCartesianPoint[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'SurfaceForm',
          type: 'IfcBSplineSurfaceForm',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'VClosed',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfIntersect',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'VMultiplicities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'UKnots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'VKnots',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'KnotSpec',
          type: 'IfcKnotType',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WeightsData',
          type: 'IfcReal[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface', 'IfcBSplineSurface', 'IfcBSplineSurfaceWithKnots', 'IfcRationalBSplineSurfaceWithKnots'],
    },
    IfcRectangleHollowProfileDef: {
      name: 'IfcRectangleHollowProfileDef',
      isAbstract: false,
      parent: 'IfcRectangleProfileDef',
      attributes: [
        {
          name: 'WallThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OuterFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WallThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OuterFilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcRectangleProfileDef', 'IfcRectangleHollowProfileDef'],
    },
    IfcRectangleProfileDef: {
      name: 'IfcRectangleProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'XDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcRectangleProfileDef'],
    },
    IfcRectangularPyramid: {
      name: 'IfcRectangularPyramid',
      isAbstract: false,
      parent: 'IfcCsgPrimitive3D',
      attributes: [
        {
          name: 'XLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Height',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YLength',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Height',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCsgPrimitive3D', 'IfcRectangularPyramid'],
    },
    IfcRectangularTrimmedSurface: {
      name: 'IfcRectangularTrimmedSurface',
      isAbstract: false,
      parent: 'IfcBoundedSurface',
      attributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'U1',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'V1',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'U2',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'V2',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Vsense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'U1',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'V1',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'U2',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'V2',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Vsense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcBoundedSurface', 'IfcRectangularTrimmedSurface'],
    },
    IfcRecurrencePattern: {
      name: 'IfcRecurrencePattern',
      isAbstract: false,
      attributes: [
        {
          name: 'RecurrenceType',
          type: 'IfcRecurrenceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DayComponent',
          type: 'IfcDayInMonthNumber',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'WeekdayComponent',
          type: 'IfcDayInWeekNumber',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'MonthComponent',
          type: 'IfcMonthInYearNumber',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Position',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Interval',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Occurrences',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimePeriods',
          type: 'IfcTimePeriod',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'RecurrenceType',
          type: 'IfcRecurrenceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DayComponent',
          type: 'IfcDayInMonthNumber',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'WeekdayComponent',
          type: 'IfcDayInWeekNumber',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'MonthComponent',
          type: 'IfcMonthInYearNumber',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Position',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Interval',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Occurrences',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimePeriods',
          type: 'IfcTimePeriod',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRecurrencePattern'],
    },
    IfcReference: {
      name: 'IfcReference',
      isAbstract: false,
      attributes: [
        {
          name: 'TypeIdentifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AttributeIdentifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InstanceName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ListPositions',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'InnerReference',
          type: 'IfcReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'TypeIdentifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AttributeIdentifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InstanceName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ListPositions',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'InnerReference',
          type: 'IfcReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcReference'],
    },
    IfcRegularTimeSeries: {
      name: 'IfcRegularTimeSeries',
      isAbstract: false,
      parent: 'IfcTimeSeries',
      attributes: [
        {
          name: 'TimeStep',
          type: 'IfcTimeMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Values',
          type: 'IfcTimeSeriesValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeSeriesDataType',
          type: 'IfcTimeSeriesDataTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeStep',
          type: 'IfcTimeMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Values',
          type: 'IfcTimeSeriesValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcTimeSeries', 'IfcRegularTimeSeries'],
    },
    IfcReinforcementBarProperties: {
      name: 'IfcReinforcementBarProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedProperties',
      attributes: [
        {
          name: 'TotalCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarSurface',
          type: 'IfcReinforcingBarSurfaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EffectiveDepth',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalBarDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarCount',
          type: 'IfcCountMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'TotalCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarSurface',
          type: 'IfcReinforcingBarSurfaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EffectiveDepth',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalBarDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarCount',
          type: 'IfcCountMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcPreDefinedProperties', 'IfcReinforcementBarProperties'],
    },
    IfcReinforcementDefinitionProperties: {
      name: 'IfcReinforcementDefinitionProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedPropertySet',
      attributes: [
        {
          name: 'DefinitionType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReinforcementSectionDefinitions',
          type: 'IfcSectionReinforcementProperties',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DefinitionType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReinforcementSectionDefinitions',
          type: 'IfcSectionReinforcementProperties',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet', 'IfcReinforcementDefinitionProperties'],
    },
    IfcReinforcingBar: {
      name: 'IfcReinforcingBar',
      isAbstract: false,
      parent: 'IfcReinforcingElement',
      attributes: [
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingBarTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarSurface',
          type: 'IfcReinforcingBarSurfaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingBarTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarSurface',
          type: 'IfcReinforcingBarSurfaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcReinforcingElement', 'IfcReinforcingBar'],
    },
    IfcReinforcingBarType: {
      name: 'IfcReinforcingBarType',
      isAbstract: false,
      parent: 'IfcReinforcingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingBarTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarSurface',
          type: 'IfcReinforcingBarSurfaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingShapeCode',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingParameters',
          type: 'IfcBendingParameterSelect',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingBarTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BarSurface',
          type: 'IfcReinforcingBarSurfaceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingShapeCode',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingParameters',
          type: 'IfcBendingParameterSelect',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcReinforcingElementType', 'IfcReinforcingBarType'],
    },
    IfcReinforcingElement: {
      name: 'IfcReinforcingElement',
      isAbstract: true,
      parent: 'IfcElementComponent',
      attributes: [
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcReinforcingElement'],
    },
    IfcReinforcingElementType: {
      name: 'IfcReinforcingElementType',
      isAbstract: true,
      parent: 'IfcElementComponentType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcReinforcingElementType'],
    },
    IfcReinforcingMesh: {
      name: 'IfcReinforcingMesh',
      isAbstract: false,
      parent: 'IfcReinforcingElement',
      attributes: [
        {
          name: 'MeshLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingMeshTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingMeshTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcReinforcingElement', 'IfcReinforcingMesh'],
    },
    IfcReinforcingMeshType: {
      name: 'IfcReinforcingMeshType',
      isAbstract: false,
      parent: 'IfcReinforcingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingMeshTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingShapeCode',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingParameters',
          type: 'IfcBendingParameterSelect',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcReinforcingMeshTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MeshWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarNominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarCrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransverseBarSpacing',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingShapeCode',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BendingParameters',
          type: 'IfcBendingParameterSelect',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcReinforcingElementType', 'IfcReinforcingMeshType'],
    },
    IfcRelAggregates: {
      name: 'IfcRelAggregates',
      isAbstract: false,
      parent: 'IfcRelDecomposes',
      attributes: [
        {
          name: 'RelatingObject',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingObject',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDecomposes', 'IfcRelAggregates'],
    },
    IfcRelAssigns: {
      name: 'IfcRelAssigns',
      isAbstract: true,
      parent: 'IfcRelationship',
      attributes: [
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns'],
    },
    IfcRelAssignsToActor: {
      name: 'IfcRelAssignsToActor',
      isAbstract: false,
      parent: 'IfcRelAssigns',
      attributes: [
        {
          name: 'RelatingActor',
          type: 'IfcActor',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActingRole',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingActor',
          type: 'IfcActor',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActingRole',
          type: 'IfcActorRole',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToActor'],
    },
    IfcRelAssignsToControl: {
      name: 'IfcRelAssignsToControl',
      isAbstract: false,
      parent: 'IfcRelAssigns',
      attributes: [
        {
          name: 'RelatingControl',
          type: 'IfcControl',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingControl',
          type: 'IfcControl',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToControl'],
    },
    IfcRelAssignsToGroup: {
      name: 'IfcRelAssignsToGroup',
      isAbstract: false,
      parent: 'IfcRelAssigns',
      attributes: [
        {
          name: 'RelatingGroup',
          type: 'IfcGroup',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingGroup',
          type: 'IfcGroup',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToGroup'],
    },
    IfcRelAssignsToGroupByFactor: {
      name: 'IfcRelAssignsToGroupByFactor',
      isAbstract: false,
      parent: 'IfcRelAssignsToGroup',
      attributes: [
        {
          name: 'Factor',
          type: 'IfcRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingGroup',
          type: 'IfcGroup',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Factor',
          type: 'IfcRatioMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToGroup', 'IfcRelAssignsToGroupByFactor'],
    },
    IfcRelAssignsToProcess: {
      name: 'IfcRelAssignsToProcess',
      isAbstract: false,
      parent: 'IfcRelAssigns',
      attributes: [
        {
          name: 'RelatingProcess',
          type: 'IfcProcessSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'QuantityInProcess',
          type: 'IfcMeasureWithUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingProcess',
          type: 'IfcProcessSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'QuantityInProcess',
          type: 'IfcMeasureWithUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToProcess'],
    },
    IfcRelAssignsToProduct: {
      name: 'IfcRelAssignsToProduct',
      isAbstract: false,
      parent: 'IfcRelAssigns',
      attributes: [
        {
          name: 'RelatingProduct',
          type: 'IfcProductSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingProduct',
          type: 'IfcProductSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToProduct'],
    },
    IfcRelAssignsToResource: {
      name: 'IfcRelAssignsToResource',
      isAbstract: false,
      parent: 'IfcRelAssigns',
      attributes: [
        {
          name: 'RelatingResource',
          type: 'IfcResourceSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatedObjectsType',
          type: 'IfcObjectTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingResource',
          type: 'IfcResourceSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssigns', 'IfcRelAssignsToResource'],
    },
    IfcRelAssociates: {
      name: 'IfcRelAssociates',
      isAbstract: true,
      parent: 'IfcRelationship',
      attributes: [
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates'],
    },
    IfcRelAssociatesApproval: {
      name: 'IfcRelAssociatesApproval',
      isAbstract: false,
      parent: 'IfcRelAssociates',
      attributes: [
        {
          name: 'RelatingApproval',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingApproval',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates', 'IfcRelAssociatesApproval'],
    },
    IfcRelAssociatesClassification: {
      name: 'IfcRelAssociatesClassification',
      isAbstract: false,
      parent: 'IfcRelAssociates',
      attributes: [
        {
          name: 'RelatingClassification',
          type: 'IfcClassificationSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingClassification',
          type: 'IfcClassificationSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates', 'IfcRelAssociatesClassification'],
    },
    IfcRelAssociatesConstraint: {
      name: 'IfcRelAssociatesConstraint',
      isAbstract: false,
      parent: 'IfcRelAssociates',
      attributes: [
        {
          name: 'Intent',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingConstraint',
          type: 'IfcConstraint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Intent',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingConstraint',
          type: 'IfcConstraint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates', 'IfcRelAssociatesConstraint'],
    },
    IfcRelAssociatesDocument: {
      name: 'IfcRelAssociatesDocument',
      isAbstract: false,
      parent: 'IfcRelAssociates',
      attributes: [
        {
          name: 'RelatingDocument',
          type: 'IfcDocumentSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingDocument',
          type: 'IfcDocumentSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates', 'IfcRelAssociatesDocument'],
    },
    IfcRelAssociatesLibrary: {
      name: 'IfcRelAssociatesLibrary',
      isAbstract: false,
      parent: 'IfcRelAssociates',
      attributes: [
        {
          name: 'RelatingLibrary',
          type: 'IfcLibrarySelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingLibrary',
          type: 'IfcLibrarySelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates', 'IfcRelAssociatesLibrary'],
    },
    IfcRelAssociatesMaterial: {
      name: 'IfcRelAssociatesMaterial',
      isAbstract: false,
      parent: 'IfcRelAssociates',
      attributes: [
        {
          name: 'RelatingMaterial',
          type: 'IfcMaterialSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingMaterial',
          type: 'IfcMaterialSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelAssociates', 'IfcRelAssociatesMaterial'],
    },
    IfcRelConnects: {
      name: 'IfcRelConnects',
      isAbstract: true,
      parent: 'IfcRelationship',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects'],
    },
    IfcRelConnectsElements: {
      name: 'IfcRelConnectsElements',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsElements'],
    },
    IfcRelConnectsPathElements: {
      name: 'IfcRelConnectsPathElements',
      isAbstract: false,
      parent: 'IfcRelConnectsElements',
      attributes: [
        {
          name: 'RelatingPriorities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [0, Infinity],
        },
        {
          name: 'RelatedPriorities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [0, Infinity],
        },
        {
          name: 'RelatedConnectionType',
          type: 'IfcConnectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingConnectionType',
          type: 'IfcConnectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingPriorities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [0, Infinity],
        },
        {
          name: 'RelatedPriorities',
          type: 'IfcInteger',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [0, Infinity],
        },
        {
          name: 'RelatedConnectionType',
          type: 'IfcConnectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingConnectionType',
          type: 'IfcConnectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsElements', 'IfcRelConnectsPathElements'],
    },
    IfcRelConnectsPortToElement: {
      name: 'IfcRelConnectsPortToElement',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingPort',
          type: 'IfcPort',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcDistributionElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingPort',
          type: 'IfcPort',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcDistributionElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsPortToElement'],
    },
    IfcRelConnectsPorts: {
      name: 'IfcRelConnectsPorts',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingPort',
          type: 'IfcPort',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedPort',
          type: 'IfcPort',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RealizingElement',
          type: 'IfcElement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingPort',
          type: 'IfcPort',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedPort',
          type: 'IfcPort',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RealizingElement',
          type: 'IfcElement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsPorts'],
    },
    IfcRelConnectsStructuralActivity: {
      name: 'IfcRelConnectsStructuralActivity',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingElement',
          type: 'IfcStructuralActivityAssignmentSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedStructuralActivity',
          type: 'IfcStructuralActivity',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcStructuralActivityAssignmentSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedStructuralActivity',
          type: 'IfcStructuralActivity',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsStructuralActivity'],
    },
    IfcRelConnectsStructuralMember: {
      name: 'IfcRelConnectsStructuralMember',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingStructuralMember',
          type: 'IfcStructuralMember',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedStructuralConnection',
          type: 'IfcStructuralConnection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AdditionalConditions',
          type: 'IfcStructuralConnectionCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SupportedLength',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConditionCoordinateSystem',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingStructuralMember',
          type: 'IfcStructuralMember',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedStructuralConnection',
          type: 'IfcStructuralConnection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AdditionalConditions',
          type: 'IfcStructuralConnectionCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SupportedLength',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConditionCoordinateSystem',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsStructuralMember'],
    },
    IfcRelConnectsWithEccentricity: {
      name: 'IfcRelConnectsWithEccentricity',
      isAbstract: false,
      parent: 'IfcRelConnectsStructuralMember',
      attributes: [
        {
          name: 'ConnectionConstraint',
          type: 'IfcConnectionGeometry',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingStructuralMember',
          type: 'IfcStructuralMember',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedStructuralConnection',
          type: 'IfcStructuralConnection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AdditionalConditions',
          type: 'IfcStructuralConnectionCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SupportedLength',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConditionCoordinateSystem',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionConstraint',
          type: 'IfcConnectionGeometry',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsStructuralMember', 'IfcRelConnectsWithEccentricity'],
    },
    IfcRelConnectsWithRealizingElements: {
      name: 'IfcRelConnectsWithRealizingElements',
      isAbstract: false,
      parent: 'IfcRelConnectsElements',
      attributes: [
        {
          name: 'RealizingElements',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ConnectionType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RealizingElements',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ConnectionType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelConnectsElements', 'IfcRelConnectsWithRealizingElements'],
    },
    IfcRelContainedInSpatialStructure: {
      name: 'IfcRelContainedInSpatialStructure',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatedElements',
          type: 'IfcProduct',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingStructure',
          type: 'IfcSpatialElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElements',
          type: 'IfcProduct',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingStructure',
          type: 'IfcSpatialElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelContainedInSpatialStructure'],
    },
    IfcRelCoversBldgElements: {
      name: 'IfcRelCoversBldgElements',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedCoverings',
          type: 'IfcCovering',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedCoverings',
          type: 'IfcCovering',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelCoversBldgElements'],
    },
    IfcRelCoversSpaces: {
      name: 'IfcRelCoversSpaces',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingSpace',
          type: 'IfcSpace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedCoverings',
          type: 'IfcCovering',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingSpace',
          type: 'IfcSpace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedCoverings',
          type: 'IfcCovering',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelCoversSpaces'],
    },
    IfcRelDeclares: {
      name: 'IfcRelDeclares',
      isAbstract: false,
      parent: 'IfcRelationship',
      attributes: [
        {
          name: 'RelatingContext',
          type: 'IfcContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedDefinitions',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingContext',
          type: 'IfcContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedDefinitions',
          type: 'IfcDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDeclares'],
    },
    IfcRelDecomposes: {
      name: 'IfcRelDecomposes',
      isAbstract: true,
      parent: 'IfcRelationship',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDecomposes'],
    },
    IfcRelDefines: {
      name: 'IfcRelDefines',
      isAbstract: true,
      parent: 'IfcRelationship',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDefines'],
    },
    IfcRelDefinesByObject: {
      name: 'IfcRelDefinesByObject',
      isAbstract: false,
      parent: 'IfcRelDefines',
      attributes: [
        {
          name: 'RelatedObjects',
          type: 'IfcObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingObject',
          type: 'IfcObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingObject',
          type: 'IfcObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDefines', 'IfcRelDefinesByObject'],
    },
    IfcRelDefinesByProperties: {
      name: 'IfcRelDefinesByProperties',
      isAbstract: false,
      parent: 'IfcRelDefines',
      attributes: [
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingPropertyDefinition',
          type: 'IfcPropertySetDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingPropertyDefinition',
          type: 'IfcPropertySetDefinitionSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDefines', 'IfcRelDefinesByProperties'],
    },
    IfcRelDefinesByTemplate: {
      name: 'IfcRelDefinesByTemplate',
      isAbstract: false,
      parent: 'IfcRelDefines',
      attributes: [
        {
          name: 'RelatedPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingTemplate',
          type: 'IfcPropertySetTemplate',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingTemplate',
          type: 'IfcPropertySetTemplate',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDefines', 'IfcRelDefinesByTemplate'],
    },
    IfcRelDefinesByType: {
      name: 'IfcRelDefinesByType',
      isAbstract: false,
      parent: 'IfcRelDefines',
      attributes: [
        {
          name: 'RelatedObjects',
          type: 'IfcObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingType',
          type: 'IfcTypeObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingType',
          type: 'IfcTypeObject',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDefines', 'IfcRelDefinesByType'],
    },
    IfcRelFillsElement: {
      name: 'IfcRelFillsElement',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingOpeningElement',
          type: 'IfcOpeningElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingOpeningElement',
          type: 'IfcOpeningElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelFillsElement'],
    },
    IfcRelFlowControlElements: {
      name: 'IfcRelFlowControlElements',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatedControlElements',
          type: 'IfcDistributionControlElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingFlowElement',
          type: 'IfcDistributionFlowElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedControlElements',
          type: 'IfcDistributionControlElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingFlowElement',
          type: 'IfcDistributionFlowElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelFlowControlElements'],
    },
    IfcRelInterferesElements: {
      name: 'IfcRelInterferesElements',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InterferenceGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InterferenceType',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ImpliedOrder',
          type: 'LOGICAL',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InterferenceGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InterferenceType',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ImpliedOrder',
          type: 'LOGICAL',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelInterferesElements'],
    },
    IfcRelNests: {
      name: 'IfcRelNests',
      isAbstract: false,
      parent: 'IfcRelDecomposes',
      attributes: [
        {
          name: 'RelatingObject',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingObject',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedObjects',
          type: 'IfcObjectDefinition',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDecomposes', 'IfcRelNests'],
    },
    IfcRelProjectsElement: {
      name: 'IfcRelProjectsElement',
      isAbstract: false,
      parent: 'IfcRelDecomposes',
      attributes: [
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedFeatureElement',
          type: 'IfcFeatureElementAddition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedFeatureElement',
          type: 'IfcFeatureElementAddition',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDecomposes', 'IfcRelProjectsElement'],
    },
    IfcRelReferencedInSpatialStructure: {
      name: 'IfcRelReferencedInSpatialStructure',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatedElements',
          type: 'IfcProduct',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingStructure',
          type: 'IfcSpatialElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedElements',
          type: 'IfcProduct',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingStructure',
          type: 'IfcSpatialElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelReferencedInSpatialStructure'],
    },
    IfcRelSequence: {
      name: 'IfcRelSequence',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingProcess',
          type: 'IfcProcess',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedProcess',
          type: 'IfcProcess',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeLag',
          type: 'IfcLagTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SequenceType',
          type: 'IfcSequenceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedSequenceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingProcess',
          type: 'IfcProcess',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedProcess',
          type: 'IfcProcess',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeLag',
          type: 'IfcLagTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SequenceType',
          type: 'IfcSequenceEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedSequenceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelSequence'],
    },
    IfcRelServicesBuildings: {
      name: 'IfcRelServicesBuildings',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingSystem',
          type: 'IfcSystem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildings',
          type: 'IfcSpatialElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingSystem',
          type: 'IfcSystem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildings',
          type: 'IfcSpatialElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelServicesBuildings'],
    },
    IfcRelSpaceBoundary: {
      name: 'IfcRelSpaceBoundary',
      isAbstract: false,
      parent: 'IfcRelConnects',
      attributes: [
        {
          name: 'RelatingSpace',
          type: 'IfcSpaceBoundarySelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PhysicalOrVirtualBoundary',
          type: 'IfcPhysicalOrVirtualEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalOrExternalBoundary',
          type: 'IfcInternalOrExternalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingSpace',
          type: 'IfcSpaceBoundarySelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PhysicalOrVirtualBoundary',
          type: 'IfcPhysicalOrVirtualEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalOrExternalBoundary',
          type: 'IfcInternalOrExternalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelSpaceBoundary'],
    },
    IfcRelSpaceBoundary1stLevel: {
      name: 'IfcRelSpaceBoundary1stLevel',
      isAbstract: false,
      parent: 'IfcRelSpaceBoundary',
      attributes: [
        {
          name: 'ParentBoundary',
          type: 'IfcRelSpaceBoundary1stLevel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingSpace',
          type: 'IfcSpaceBoundarySelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PhysicalOrVirtualBoundary',
          type: 'IfcPhysicalOrVirtualEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalOrExternalBoundary',
          type: 'IfcInternalOrExternalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentBoundary',
          type: 'IfcRelSpaceBoundary1stLevel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelSpaceBoundary', 'IfcRelSpaceBoundary1stLevel'],
    },
    IfcRelSpaceBoundary2ndLevel: {
      name: 'IfcRelSpaceBoundary2ndLevel',
      isAbstract: false,
      parent: 'IfcRelSpaceBoundary1stLevel',
      attributes: [
        {
          name: 'CorrespondingBoundary',
          type: 'IfcRelSpaceBoundary2ndLevel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingSpace',
          type: 'IfcSpaceBoundarySelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConnectionGeometry',
          type: 'IfcConnectionGeometry',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PhysicalOrVirtualBoundary',
          type: 'IfcPhysicalOrVirtualEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InternalOrExternalBoundary',
          type: 'IfcInternalOrExternalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentBoundary',
          type: 'IfcRelSpaceBoundary1stLevel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CorrespondingBoundary',
          type: 'IfcRelSpaceBoundary2ndLevel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelConnects', 'IfcRelSpaceBoundary', 'IfcRelSpaceBoundary1stLevel', 'IfcRelSpaceBoundary2ndLevel'],
    },
    IfcRelVoidsElement: {
      name: 'IfcRelVoidsElement',
      isAbstract: false,
      parent: 'IfcRelDecomposes',
      attributes: [
        {
          name: 'RelatingBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedOpeningElement',
          type: 'IfcFeatureElementSubtraction',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingBuildingElement',
          type: 'IfcElement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedOpeningElement',
          type: 'IfcFeatureElementSubtraction',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship', 'IfcRelDecomposes', 'IfcRelVoidsElement'],
    },
    IfcRelationship: {
      name: 'IfcRelationship',
      isAbstract: true,
      parent: 'IfcRoot',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcRelationship'],
    },
    IfcReparametrisedCompositeCurveSegment: {
      name: 'IfcReparametrisedCompositeCurveSegment',
      isAbstract: false,
      parent: 'IfcCompositeCurveSegment',
      attributes: [
        {
          name: 'ParamLength',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Transition',
          type: 'IfcTransitionCode',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SameSense',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParamLength',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCompositeCurveSegment', 'IfcReparametrisedCompositeCurveSegment'],
    },
    IfcRepresentation: {
      name: 'IfcRepresentation',
      isAbstract: true,
      attributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentation'],
    },
    IfcRepresentationContext: {
      name: 'IfcRepresentationContext',
      isAbstract: true,
      attributes: [
        {
          name: 'ContextIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ContextType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ContextIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ContextType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationContext'],
    },
    IfcRepresentationItem: {
      name: 'IfcRepresentationItem',
      isAbstract: true,
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem'],
    },
    IfcRepresentationMap: {
      name: 'IfcRepresentationMap',
      isAbstract: false,
      attributes: [
        {
          name: 'MappingOrigin',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MappedRepresentation',
          type: 'IfcRepresentation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'MappingOrigin',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MappedRepresentation',
          type: 'IfcRepresentation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationMap'],
    },
    IfcResource: {
      name: 'IfcResource',
      isAbstract: true,
      parent: 'IfcObject',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource'],
    },
    IfcResourceApprovalRelationship: {
      name: 'IfcResourceApprovalRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatedResourceObjects',
          type: 'IfcResourceObjectSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingApproval',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedResourceObjects',
          type: 'IfcResourceObjectSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RelatingApproval',
          type: 'IfcApproval',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcResourceApprovalRelationship'],
    },
    IfcResourceConstraintRelationship: {
      name: 'IfcResourceConstraintRelationship',
      isAbstract: false,
      parent: 'IfcResourceLevelRelationship',
      attributes: [
        {
          name: 'RelatingConstraint',
          type: 'IfcConstraint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedResourceObjects',
          type: 'IfcResourceObjectSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatingConstraint',
          type: 'IfcConstraint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RelatedResourceObjects',
          type: 'IfcResourceObjectSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship', 'IfcResourceConstraintRelationship'],
    },
    IfcResourceLevelRelationship: {
      name: 'IfcResourceLevelRelationship',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcResourceLevelRelationship'],
    },
    IfcResourceTime: {
      name: 'IfcResourceTime',
      isAbstract: false,
      parent: 'IfcSchedulingTime',
      attributes: [
        {
          name: 'ScheduleWork',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleUsage',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleContour',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LevelingDelay',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsOverAllocated',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StatusTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualWork',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualUsage',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingWork',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingUsage',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Completion',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleWork',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleUsage',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleContour',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LevelingDelay',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsOverAllocated',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StatusTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualWork',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualUsage',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingWork',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingUsage',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Completion',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime', 'IfcResourceTime'],
    },
    IfcRevolvedAreaSolid: {
      name: 'IfcRevolvedAreaSolid',
      isAbstract: false,
      parent: 'IfcSweptAreaSolid',
      attributes: [
        {
          name: 'Axis',
          type: 'IfcAxis1Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Angle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcAxis1Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Angle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid', 'IfcRevolvedAreaSolid'],
    },
    IfcRevolvedAreaSolidTapered: {
      name: 'IfcRevolvedAreaSolidTapered',
      isAbstract: false,
      parent: 'IfcRevolvedAreaSolid',
      attributes: [
        {
          name: 'EndSweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcAxis1Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Angle',
          type: 'IfcPlaneAngleMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndSweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid', 'IfcRevolvedAreaSolid', 'IfcRevolvedAreaSolidTapered'],
    },
    IfcRightCircularCone: {
      name: 'IfcRightCircularCone',
      isAbstract: false,
      parent: 'IfcCsgPrimitive3D',
      attributes: [
        {
          name: 'Height',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Height',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCsgPrimitive3D', 'IfcRightCircularCone'],
    },
    IfcRightCircularCylinder: {
      name: 'IfcRightCircularCylinder',
      isAbstract: false,
      parent: 'IfcCsgPrimitive3D',
      attributes: [
        {
          name: 'Height',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Height',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCsgPrimitive3D', 'IfcRightCircularCylinder'],
    },
    IfcRoof: {
      name: 'IfcRoof',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRoofTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRoofTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcRoof'],
    },
    IfcRoofType: {
      name: 'IfcRoofType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcRoofTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcRoofTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcRoofType'],
    },
    IfcRoot: {
      name: 'IfcRoot',
      isAbstract: true,
      attributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot'],
    },
    IfcRoundedRectangleProfileDef: {
      name: 'IfcRoundedRectangleProfileDef',
      isAbstract: false,
      parent: 'IfcRectangleProfileDef',
      attributes: [
        {
          name: 'RoundingRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'XDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RoundingRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcRectangleProfileDef', 'IfcRoundedRectangleProfileDef'],
    },
    IfcSIUnit: {
      name: 'IfcSIUnit',
      isAbstract: false,
      parent: 'IfcNamedUnit',
      attributes: [
        {
          name: 'Prefix',
          type: 'IfcSIPrefix',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcSIUnitName',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Dimensions',
          type: 'IfcDimensionalExponents',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UnitType',
          type: 'IfcUnitEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Prefix',
          type: 'IfcSIPrefix',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcSIUnitName',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcNamedUnit', 'IfcSIUnit'],
    },
    IfcSanitaryTerminal: {
      name: 'IfcSanitaryTerminal',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSanitaryTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSanitaryTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcSanitaryTerminal'],
    },
    IfcSanitaryTerminalType: {
      name: 'IfcSanitaryTerminalType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSanitaryTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSanitaryTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcSanitaryTerminalType'],
    },
    IfcSchedulingTime: {
      name: 'IfcSchedulingTime',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime'],
    },
    IfcSeamCurve: {
      name: 'IfcSeamCurve',
      isAbstract: false,
      parent: 'IfcSurfaceCurve',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Curve3D',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssociatedGeometry',
          type: 'IfcPcurve',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, 2],
        },
        {
          name: 'MasterRepresentation',
          type: 'IfcPreferredSurfaceCurveRepresentation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcSurfaceCurve', 'IfcSeamCurve'],
    },
    IfcSectionProperties: {
      name: 'IfcSectionProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedProperties',
      attributes: [
        {
          name: 'SectionType',
          type: 'IfcSectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartProfile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndProfile',
          type: 'IfcProfileDef',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SectionType',
          type: 'IfcSectionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartProfile',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndProfile',
          type: 'IfcProfileDef',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcPreDefinedProperties', 'IfcSectionProperties'],
    },
    IfcSectionReinforcementProperties: {
      name: 'IfcSectionReinforcementProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedProperties',
      attributes: [
        {
          name: 'LongitudinalStartPosition',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalEndPosition',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransversePosition',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReinforcementRole',
          type: 'IfcReinforcingBarRoleEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SectionDefinition',
          type: 'IfcSectionProperties',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionReinforcementDefinitions',
          type: 'IfcReinforcementBarProperties',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'LongitudinalStartPosition',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongitudinalEndPosition',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransversePosition',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReinforcementRole',
          type: 'IfcReinforcingBarRoleEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SectionDefinition',
          type: 'IfcSectionProperties',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionReinforcementDefinitions',
          type: 'IfcReinforcementBarProperties',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcPreDefinedProperties', 'IfcSectionReinforcementProperties'],
    },
    IfcSectionedSpine: {
      name: 'IfcSectionedSpine',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'SpineCurve',
          type: 'IfcCompositeCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSections',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'CrossSectionPositions',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'SpineCurve',
          type: 'IfcCompositeCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSections',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
        {
          name: 'CrossSectionPositions',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSectionedSpine'],
    },
    IfcSensor: {
      name: 'IfcSensor',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSensorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSensorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcSensor'],
    },
    IfcSensorType: {
      name: 'IfcSensorType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSensorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSensorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcSensorType'],
    },
    IfcShadingDevice: {
      name: 'IfcShadingDevice',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcShadingDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcShadingDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcShadingDevice'],
    },
    IfcShadingDeviceType: {
      name: 'IfcShadingDeviceType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcShadingDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcShadingDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcShadingDeviceType'],
    },
    IfcShapeAspect: {
      name: 'IfcShapeAspect',
      isAbstract: false,
      attributes: [
        {
          name: 'ShapeRepresentations',
          type: 'IfcShapeModel',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProductDefinitional',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartOfProductDefinitionShape',
          type: 'IfcProductRepresentationSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ShapeRepresentations',
          type: 'IfcShapeModel',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProductDefinitional',
          type: 'IfcLogical',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartOfProductDefinitionShape',
          type: 'IfcProductRepresentationSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcShapeAspect'],
    },
    IfcShapeModel: {
      name: 'IfcShapeModel',
      isAbstract: true,
      parent: 'IfcRepresentation',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentation', 'IfcShapeModel'],
    },
    IfcShapeRepresentation: {
      name: 'IfcShapeRepresentation',
      isAbstract: false,
      parent: 'IfcShapeModel',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentation', 'IfcShapeModel', 'IfcShapeRepresentation'],
    },
    IfcShellBasedSurfaceModel: {
      name: 'IfcShellBasedSurfaceModel',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'SbsmBoundary',
          type: 'IfcShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'SbsmBoundary',
          type: 'IfcShell',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcShellBasedSurfaceModel'],
    },
    IfcSimpleProperty: {
      name: 'IfcSimpleProperty',
      isAbstract: true,
      parent: 'IfcProperty',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcIdentifier',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPropertyAbstraction', 'IfcProperty', 'IfcSimpleProperty'],
    },
    IfcSimplePropertyTemplate: {
      name: 'IfcSimplePropertyTemplate',
      isAbstract: false,
      parent: 'IfcPropertyTemplate',
      attributes: [
        {
          name: 'TemplateType',
          type: 'IfcSimplePropertyTemplateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PrimaryMeasureType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondaryMeasureType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Enumerators',
          type: 'IfcPropertyEnumeration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PrimaryUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondaryUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Expression',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AccessState',
          type: 'IfcStateEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TemplateType',
          type: 'IfcSimplePropertyTemplateTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PrimaryMeasureType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondaryMeasureType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Enumerators',
          type: 'IfcPropertyEnumeration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PrimaryUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondaryUnit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Expression',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AccessState',
          type: 'IfcStateEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertyTemplateDefinition', 'IfcPropertyTemplate', 'IfcSimplePropertyTemplate'],
    },
    IfcSite: {
      name: 'IfcSite',
      isAbstract: false,
      parent: 'IfcSpatialStructureElement',
      attributes: [
        {
          name: 'RefLatitude',
          type: 'IfcCompoundPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefLongitude',
          type: 'IfcCompoundPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefElevation',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LandTitleNumber',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SiteAddress',
          type: 'IfcPostalAddress',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompositionType',
          type: 'IfcElementCompositionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefLatitude',
          type: 'IfcCompoundPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefLongitude',
          type: 'IfcCompoundPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RefElevation',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LandTitleNumber',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SiteAddress',
          type: 'IfcPostalAddress',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcSpatialStructureElement', 'IfcSite'],
    },
    IfcSlab: {
      name: 'IfcSlab',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSlabTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSlabTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcSlab'],
    },
    IfcSlabElementedCase: {
      name: 'IfcSlabElementedCase',
      isAbstract: false,
      parent: 'IfcSlab',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSlabTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcSlab', 'IfcSlabElementedCase'],
    },
    IfcSlabStandardCase: {
      name: 'IfcSlabStandardCase',
      isAbstract: false,
      parent: 'IfcSlab',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSlabTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcSlab', 'IfcSlabStandardCase'],
    },
    IfcSlabType: {
      name: 'IfcSlabType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSlabTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSlabTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcSlabType'],
    },
    IfcSlippageConnectionCondition: {
      name: 'IfcSlippageConnectionCondition',
      isAbstract: false,
      parent: 'IfcStructuralConnectionCondition',
      attributes: [
        {
          name: 'SlippageX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SlippageY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SlippageZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SlippageX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SlippageY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SlippageZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralConnectionCondition', 'IfcSlippageConnectionCondition'],
    },
    IfcSolarDevice: {
      name: 'IfcSolarDevice',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSolarDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSolarDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcSolarDevice'],
    },
    IfcSolarDeviceType: {
      name: 'IfcSolarDeviceType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSolarDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSolarDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcSolarDeviceType'],
    },
    IfcSolidModel: {
      name: 'IfcSolidModel',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel'],
    },
    IfcSpace: {
      name: 'IfcSpace',
      isAbstract: false,
      parent: 'IfcSpatialStructureElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSpaceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElevationWithFlooring',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompositionType',
          type: 'IfcElementCompositionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSpaceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElevationWithFlooring',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcSpatialStructureElement', 'IfcSpace'],
    },
    IfcSpaceHeater: {
      name: 'IfcSpaceHeater',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSpaceHeaterTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSpaceHeaterTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcSpaceHeater'],
    },
    IfcSpaceHeaterType: {
      name: 'IfcSpaceHeaterType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSpaceHeaterTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSpaceHeaterTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcSpaceHeaterType'],
    },
    IfcSpaceType: {
      name: 'IfcSpaceType',
      isAbstract: false,
      parent: 'IfcSpatialStructureElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSpaceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSpaceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcSpatialElementType', 'IfcSpatialStructureElementType', 'IfcSpaceType'],
    },
    IfcSpatialElement: {
      name: 'IfcSpatialElement',
      isAbstract: true,
      parent: 'IfcProduct',
      attributes: [
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement'],
    },
    IfcSpatialElementType: {
      name: 'IfcSpatialElementType',
      isAbstract: true,
      parent: 'IfcTypeProduct',
      attributes: [
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcSpatialElementType'],
    },
    IfcSpatialStructureElement: {
      name: 'IfcSpatialStructureElement',
      isAbstract: true,
      parent: 'IfcSpatialElement',
      attributes: [
        {
          name: 'CompositionType',
          type: 'IfcElementCompositionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CompositionType',
          type: 'IfcElementCompositionEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcSpatialStructureElement'],
    },
    IfcSpatialStructureElementType: {
      name: 'IfcSpatialStructureElementType',
      isAbstract: true,
      parent: 'IfcSpatialElementType',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcSpatialElementType', 'IfcSpatialStructureElementType'],
    },
    IfcSpatialZone: {
      name: 'IfcSpatialZone',
      isAbstract: false,
      parent: 'IfcSpatialElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSpatialZoneTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSpatialZoneTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcSpatialElement', 'IfcSpatialZone'],
    },
    IfcSpatialZoneType: {
      name: 'IfcSpatialZoneType',
      isAbstract: false,
      parent: 'IfcSpatialElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSpatialZoneTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSpatialZoneTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcSpatialElementType', 'IfcSpatialZoneType'],
    },
    IfcSphere: {
      name: 'IfcSphere',
      isAbstract: false,
      parent: 'IfcCsgPrimitive3D',
      attributes: [
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCsgPrimitive3D', 'IfcSphere'],
    },
    IfcSphericalSurface: {
      name: 'IfcSphericalSurface',
      isAbstract: false,
      parent: 'IfcElementarySurface',
      attributes: [
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcElementarySurface', 'IfcSphericalSurface'],
    },
    IfcStackTerminal: {
      name: 'IfcStackTerminal',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStackTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStackTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcStackTerminal'],
    },
    IfcStackTerminalType: {
      name: 'IfcStackTerminalType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStackTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStackTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcStackTerminalType'],
    },
    IfcStair: {
      name: 'IfcStair',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStairTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStairTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcStair'],
    },
    IfcStairFlight: {
      name: 'IfcStairFlight',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'NumberOfRisers',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NumberOfTreads',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RiserHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TreadLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStairFlightTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NumberOfRisers',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NumberOfTreads',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RiserHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TreadLength',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStairFlightTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcStairFlight'],
    },
    IfcStairFlightType: {
      name: 'IfcStairFlightType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStairFlightTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStairFlightTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcStairFlightType'],
    },
    IfcStairType: {
      name: 'IfcStairType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStairTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStairTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcStairType'],
    },
    IfcStructuralAction: {
      name: 'IfcStructuralAction',
      isAbstract: true,
      parent: 'IfcStructuralActivity',
      attributes: [
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralAction'],
    },
    IfcStructuralActivity: {
      name: 'IfcStructuralActivity',
      isAbstract: true,
      parent: 'IfcProduct',
      attributes: [
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity'],
    },
    IfcStructuralAnalysisModel: {
      name: 'IfcStructuralAnalysisModel',
      isAbstract: false,
      parent: 'IfcSystem',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcAnalysisModelTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OrientationOf2DPlane',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LoadedBy',
          type: 'IfcStructuralLoadGroup',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'HasResults',
          type: 'IfcStructuralResultGroup',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SharedPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcAnalysisModelTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OrientationOf2DPlane',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LoadedBy',
          type: 'IfcStructuralLoadGroup',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'HasResults',
          type: 'IfcStructuralResultGroup',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'SharedPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcSystem', 'IfcStructuralAnalysisModel'],
    },
    IfcStructuralConnection: {
      name: 'IfcStructuralConnection',
      isAbstract: true,
      parent: 'IfcStructuralItem',
      attributes: [
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralConnection'],
    },
    IfcStructuralConnectionCondition: {
      name: 'IfcStructuralConnectionCondition',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralConnectionCondition'],
    },
    IfcStructuralCurveAction: {
      name: 'IfcStructuralCurveAction',
      isAbstract: false,
      parent: 'IfcStructuralAction',
      attributes: [
        {
          name: 'ProjectedOrTrue',
          type: 'IfcProjectedOrTrueLengthEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProjectedOrTrue',
          type: 'IfcProjectedOrTrueLengthEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralAction', 'IfcStructuralCurveAction'],
    },
    IfcStructuralCurveConnection: {
      name: 'IfcStructuralCurveConnection',
      isAbstract: false,
      parent: 'IfcStructuralConnection',
      attributes: [
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralConnection', 'IfcStructuralCurveConnection'],
    },
    IfcStructuralCurveMember: {
      name: 'IfcStructuralCurveMember',
      isAbstract: false,
      parent: 'IfcStructuralMember',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralMember', 'IfcStructuralCurveMember'],
    },
    IfcStructuralCurveMemberVarying: {
      name: 'IfcStructuralCurveMemberVarying',
      isAbstract: false,
      parent: 'IfcStructuralCurveMember',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Axis',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralMember', 'IfcStructuralCurveMember', 'IfcStructuralCurveMemberVarying'],
    },
    IfcStructuralCurveReaction: {
      name: 'IfcStructuralCurveReaction',
      isAbstract: false,
      parent: 'IfcStructuralReaction',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralReaction', 'IfcStructuralCurveReaction'],
    },
    IfcStructuralItem: {
      name: 'IfcStructuralItem',
      isAbstract: true,
      parent: 'IfcProduct',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem'],
    },
    IfcStructuralLinearAction: {
      name: 'IfcStructuralLinearAction',
      isAbstract: false,
      parent: 'IfcStructuralCurveAction',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProjectedOrTrue',
          type: 'IfcProjectedOrTrueLengthEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralCurveActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralAction', 'IfcStructuralCurveAction', 'IfcStructuralLinearAction'],
    },
    IfcStructuralLoad: {
      name: 'IfcStructuralLoad',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad'],
    },
    IfcStructuralLoadCase: {
      name: 'IfcStructuralLoadCase',
      isAbstract: false,
      parent: 'IfcStructuralLoadGroup',
      attributes: [
        {
          name: 'SelfWeightCoefficients',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, 3],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLoadGroupTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActionType',
          type: 'IfcActionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActionSource',
          type: 'IfcActionSourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Coefficient',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SelfWeightCoefficients',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, 3],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcStructuralLoadGroup', 'IfcStructuralLoadCase'],
    },
    IfcStructuralLoadConfiguration: {
      name: 'IfcStructuralLoadConfiguration',
      isAbstract: false,
      parent: 'IfcStructuralLoad',
      attributes: [
        {
          name: 'Values',
          type: 'IfcStructuralLoadOrResult',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Locations',
          type: 'UNIQUE LIST [1:2] OF IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Values',
          type: 'IfcStructuralLoadOrResult',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Locations',
          type: 'UNIQUE LIST [1:2] OF IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadConfiguration'],
    },
    IfcStructuralLoadGroup: {
      name: 'IfcStructuralLoadGroup',
      isAbstract: false,
      parent: 'IfcGroup',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcLoadGroupTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActionType',
          type: 'IfcActionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActionSource',
          type: 'IfcActionSourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Coefficient',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcLoadGroupTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActionType',
          type: 'IfcActionTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActionSource',
          type: 'IfcActionSourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Coefficient',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcStructuralLoadGroup'],
    },
    IfcStructuralLoadLinearForce: {
      name: 'IfcStructuralLoadLinearForce',
      isAbstract: false,
      parent: 'IfcStructuralLoadStatic',
      attributes: [
        {
          name: 'LinearForceX',
          type: 'IfcLinearForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearForceY',
          type: 'IfcLinearForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearForceZ',
          type: 'IfcLinearForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearMomentX',
          type: 'IfcLinearMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearMomentY',
          type: 'IfcLinearMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearMomentZ',
          type: 'IfcLinearMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearForceX',
          type: 'IfcLinearForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearForceY',
          type: 'IfcLinearForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearForceZ',
          type: 'IfcLinearForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearMomentX',
          type: 'IfcLinearMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearMomentY',
          type: 'IfcLinearMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LinearMomentZ',
          type: 'IfcLinearMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadLinearForce'],
    },
    IfcStructuralLoadOrResult: {
      name: 'IfcStructuralLoadOrResult',
      isAbstract: true,
      parent: 'IfcStructuralLoad',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult'],
    },
    IfcStructuralLoadPlanarForce: {
      name: 'IfcStructuralLoadPlanarForce',
      isAbstract: false,
      parent: 'IfcStructuralLoadStatic',
      attributes: [
        {
          name: 'PlanarForceX',
          type: 'IfcPlanarForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlanarForceY',
          type: 'IfcPlanarForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlanarForceZ',
          type: 'IfcPlanarForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlanarForceX',
          type: 'IfcPlanarForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlanarForceY',
          type: 'IfcPlanarForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PlanarForceZ',
          type: 'IfcPlanarForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadPlanarForce'],
    },
    IfcStructuralLoadSingleDisplacement: {
      name: 'IfcStructuralLoadSingleDisplacement',
      isAbstract: false,
      parent: 'IfcStructuralLoadStatic',
      attributes: [
        {
          name: 'DisplacementX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRX',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRY',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRZ',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRX',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRY',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRZ',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadSingleDisplacement'],
    },
    IfcStructuralLoadSingleDisplacementDistortion: {
      name: 'IfcStructuralLoadSingleDisplacementDistortion',
      isAbstract: false,
      parent: 'IfcStructuralLoadSingleDisplacement',
      attributes: [
        {
          name: 'Distortion',
          type: 'IfcCurvatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DisplacementZ',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRX',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRY',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RotationalDisplacementRZ',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Distortion',
          type: 'IfcCurvatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadSingleDisplacement', 'IfcStructuralLoadSingleDisplacementDistortion'],
    },
    IfcStructuralLoadSingleForce: {
      name: 'IfcStructuralLoadSingleForce',
      isAbstract: false,
      parent: 'IfcStructuralLoadStatic',
      attributes: [
        {
          name: 'ForceX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentX',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentY',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentZ',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentX',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentY',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentZ',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadSingleForce'],
    },
    IfcStructuralLoadSingleForceWarping: {
      name: 'IfcStructuralLoadSingleForceWarping',
      isAbstract: false,
      parent: 'IfcStructuralLoadSingleForce',
      attributes: [
        {
          name: 'WarpingMoment',
          type: 'IfcWarpingMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceX',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceY',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ForceZ',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentX',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentY',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MomentZ',
          type: 'IfcTorqueMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WarpingMoment',
          type: 'IfcWarpingMomentMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadSingleForce', 'IfcStructuralLoadSingleForceWarping'],
    },
    IfcStructuralLoadStatic: {
      name: 'IfcStructuralLoadStatic',
      isAbstract: true,
      parent: 'IfcStructuralLoadOrResult',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic'],
    },
    IfcStructuralLoadTemperature: {
      name: 'IfcStructuralLoadTemperature',
      isAbstract: false,
      parent: 'IfcStructuralLoadStatic',
      attributes: [
        {
          name: 'DeltaTConstant',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DeltaTY',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DeltaTZ',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DeltaTConstant',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DeltaTY',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DeltaTZ',
          type: 'IfcThermodynamicTemperatureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcStructuralLoadStatic', 'IfcStructuralLoadTemperature'],
    },
    IfcStructuralMember: {
      name: 'IfcStructuralMember',
      isAbstract: true,
      parent: 'IfcStructuralItem',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralMember'],
    },
    IfcStructuralPlanarAction: {
      name: 'IfcStructuralPlanarAction',
      isAbstract: false,
      parent: 'IfcStructuralSurfaceAction',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProjectedOrTrue',
          type: 'IfcProjectedOrTrueLengthEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralAction', 'IfcStructuralSurfaceAction', 'IfcStructuralPlanarAction'],
    },
    IfcStructuralPointAction: {
      name: 'IfcStructuralPointAction',
      isAbstract: false,
      parent: 'IfcStructuralAction',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralAction', 'IfcStructuralPointAction'],
    },
    IfcStructuralPointConnection: {
      name: 'IfcStructuralPointConnection',
      isAbstract: false,
      parent: 'IfcStructuralConnection',
      attributes: [
        {
          name: 'ConditionCoordinateSystem',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConditionCoordinateSystem',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralConnection', 'IfcStructuralPointConnection'],
    },
    IfcStructuralPointReaction: {
      name: 'IfcStructuralPointReaction',
      isAbstract: false,
      parent: 'IfcStructuralReaction',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralReaction', 'IfcStructuralPointReaction'],
    },
    IfcStructuralReaction: {
      name: 'IfcStructuralReaction',
      isAbstract: true,
      parent: 'IfcStructuralActivity',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralReaction'],
    },
    IfcStructuralResultGroup: {
      name: 'IfcStructuralResultGroup',
      isAbstract: false,
      parent: 'IfcGroup',
      attributes: [
        {
          name: 'TheoryType',
          type: 'IfcAnalysisTheoryTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResultForLoadGroup',
          type: 'IfcStructuralLoadGroup',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsLinear',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TheoryType',
          type: 'IfcAnalysisTheoryTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResultForLoadGroup',
          type: 'IfcStructuralLoadGroup',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsLinear',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcStructuralResultGroup'],
    },
    IfcStructuralSurfaceAction: {
      name: 'IfcStructuralSurfaceAction',
      isAbstract: false,
      parent: 'IfcStructuralAction',
      attributes: [
        {
          name: 'ProjectedOrTrue',
          type: 'IfcProjectedOrTrueLengthEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DestabilizingLoad',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProjectedOrTrue',
          type: 'IfcProjectedOrTrueLengthEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralAction', 'IfcStructuralSurfaceAction'],
    },
    IfcStructuralSurfaceConnection: {
      name: 'IfcStructuralSurfaceConnection',
      isAbstract: false,
      parent: 'IfcStructuralConnection',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedCondition',
          type: 'IfcBoundaryCondition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralConnection', 'IfcStructuralSurfaceConnection'],
    },
    IfcStructuralSurfaceMember: {
      name: 'IfcStructuralSurfaceMember',
      isAbstract: false,
      parent: 'IfcStructuralMember',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralMember', 'IfcStructuralSurfaceMember'],
    },
    IfcStructuralSurfaceMemberVarying: {
      name: 'IfcStructuralSurfaceMemberVarying',
      isAbstract: false,
      parent: 'IfcStructuralSurfaceMember',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceMemberTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Thickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralItem', 'IfcStructuralMember', 'IfcStructuralSurfaceMember', 'IfcStructuralSurfaceMemberVarying'],
    },
    IfcStructuralSurfaceReaction: {
      name: 'IfcStructuralSurfaceReaction',
      isAbstract: false,
      parent: 'IfcStructuralReaction',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AppliedLoad',
          type: 'IfcStructuralLoad',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'GlobalOrLocal',
          type: 'IfcGlobalOrLocalEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcStructuralSurfaceActivityTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcStructuralActivity', 'IfcStructuralReaction', 'IfcStructuralSurfaceReaction'],
    },
    IfcStyleModel: {
      name: 'IfcStyleModel',
      isAbstract: true,
      parent: 'IfcRepresentation',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentation', 'IfcStyleModel'],
    },
    IfcStyledItem: {
      name: 'IfcStyledItem',
      isAbstract: false,
      parent: 'IfcRepresentationItem',
      attributes: [
        {
          name: 'Item',
          type: 'IfcRepresentationItem',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Styles',
          type: 'IfcStyleAssignmentSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Item',
          type: 'IfcRepresentationItem',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Styles',
          type: 'IfcStyleAssignmentSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcStyledItem'],
    },
    IfcStyledRepresentation: {
      name: 'IfcStyledRepresentation',
      isAbstract: false,
      parent: 'IfcStyleModel',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentation', 'IfcStyleModel', 'IfcStyledRepresentation'],
    },
    IfcSubContractResource: {
      name: 'IfcSubContractResource',
      isAbstract: false,
      parent: 'IfcConstructionResource',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSubContractResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Usage',
          type: 'IfcResourceTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSubContractResourceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcResource', 'IfcConstructionResource', 'IfcSubContractResource'],
    },
    IfcSubContractResourceType: {
      name: 'IfcSubContractResourceType',
      isAbstract: false,
      parent: 'IfcConstructionResourceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSubContractResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BaseCosts',
          type: 'IfcAppliedValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'BaseQuantity',
          type: 'IfcPhysicalQuantity',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSubContractResourceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource', 'IfcConstructionResourceType', 'IfcSubContractResourceType'],
    },
    IfcSubedge: {
      name: 'IfcSubedge',
      isAbstract: false,
      parent: 'IfcEdge',
      attributes: [
        {
          name: 'ParentEdge',
          type: 'IfcEdge',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'EdgeStart',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeEnd',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParentEdge',
          type: 'IfcEdge',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcEdge', 'IfcSubedge'],
    },
    IfcSurface: {
      name: 'IfcSurface',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface'],
    },
    IfcSurfaceCurve: {
      name: 'IfcSurfaceCurve',
      isAbstract: false,
      parent: 'IfcCurve',
      attributes: [
        {
          name: 'Curve3D',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssociatedGeometry',
          type: 'IfcPcurve',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, 2],
        },
        {
          name: 'MasterRepresentation',
          type: 'IfcPreferredSurfaceCurveRepresentation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Curve3D',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AssociatedGeometry',
          type: 'IfcPcurve',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, 2],
        },
        {
          name: 'MasterRepresentation',
          type: 'IfcPreferredSurfaceCurveRepresentation',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcSurfaceCurve'],
    },
    IfcSurfaceCurveSweptAreaSolid: {
      name: 'IfcSurfaceCurveSweptAreaSolid',
      isAbstract: false,
      parent: 'IfcSweptAreaSolid',
      attributes: [
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferenceSurface',
          type: 'IfcSurface',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid', 'IfcSurfaceCurveSweptAreaSolid'],
    },
    IfcSurfaceFeature: {
      name: 'IfcSurfaceFeature',
      isAbstract: false,
      parent: 'IfcFeatureElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSurfaceFeatureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSurfaceFeatureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcSurfaceFeature'],
    },
    IfcSurfaceOfLinearExtrusion: {
      name: 'IfcSurfaceOfLinearExtrusion',
      isAbstract: false,
      parent: 'IfcSweptSurface',
      attributes: [
        {
          name: 'ExtrudedDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptCurve',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ExtrudedDirection',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcSweptSurface', 'IfcSurfaceOfLinearExtrusion'],
    },
    IfcSurfaceOfRevolution: {
      name: 'IfcSurfaceOfRevolution',
      isAbstract: false,
      parent: 'IfcSweptSurface',
      attributes: [
        {
          name: 'AxisPosition',
          type: 'IfcAxis1Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptCurve',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AxisPosition',
          type: 'IfcAxis1Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcSweptSurface', 'IfcSurfaceOfRevolution'],
    },
    IfcSurfaceReinforcementArea: {
      name: 'IfcSurfaceReinforcementArea',
      isAbstract: false,
      parent: 'IfcStructuralLoadOrResult',
      attributes: [
        {
          name: 'SurfaceReinforcement1',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
        {
          name: 'SurfaceReinforcement2',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
        {
          name: 'ShearReinforcement',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SurfaceReinforcement1',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
        {
          name: 'SurfaceReinforcement2',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
        {
          name: 'ShearReinforcement',
          type: 'IfcRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcStructuralLoad', 'IfcStructuralLoadOrResult', 'IfcSurfaceReinforcementArea'],
    },
    IfcSurfaceStyle: {
      name: 'IfcSurfaceStyle',
      isAbstract: false,
      parent: 'IfcPresentationStyle',
      attributes: [
        {
          name: 'Side',
          type: 'IfcSurfaceSide',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Styles',
          type: 'IfcSurfaceStyleElementSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, 5],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Side',
          type: 'IfcSurfaceSide',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Styles',
          type: 'IfcSurfaceStyleElementSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, 5],
        },
      ],
      inheritanceChain: ['IfcPresentationStyle', 'IfcSurfaceStyle'],
    },
    IfcSurfaceStyleLighting: {
      name: 'IfcSurfaceStyleLighting',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'DiffuseTransmissionColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DiffuseReflectionColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransmissionColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReflectanceColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'DiffuseTransmissionColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DiffuseReflectionColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransmissionColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReflectanceColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceStyleLighting'],
    },
    IfcSurfaceStyleRefraction: {
      name: 'IfcSurfaceStyleRefraction',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'RefractionIndex',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DispersionFactor',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'RefractionIndex',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DispersionFactor',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceStyleRefraction'],
    },
    IfcSurfaceStyleRendering: {
      name: 'IfcSurfaceStyleRendering',
      isAbstract: false,
      parent: 'IfcSurfaceStyleShading',
      attributes: [
        {
          name: 'DiffuseColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransmissionColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DiffuseTransmissionColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReflectionColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SpecularColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SpecularHighlight',
          type: 'IfcSpecularHighlightSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReflectanceMethod',
          type: 'IfcReflectanceMethodEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SurfaceColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Transparency',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DiffuseColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransmissionColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DiffuseTransmissionColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReflectionColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SpecularColour',
          type: 'IfcColourOrFactor',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SpecularHighlight',
          type: 'IfcSpecularHighlightSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReflectanceMethod',
          type: 'IfcReflectanceMethodEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceStyleShading', 'IfcSurfaceStyleRendering'],
    },
    IfcSurfaceStyleShading: {
      name: 'IfcSurfaceStyleShading',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'SurfaceColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Transparency',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SurfaceColour',
          type: 'IfcColourRgb',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Transparency',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceStyleShading'],
    },
    IfcSurfaceStyleWithTextures: {
      name: 'IfcSurfaceStyleWithTextures',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Textures',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Textures',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceStyleWithTextures'],
    },
    IfcSurfaceTexture: {
      name: 'IfcSurfaceTexture',
      isAbstract: true,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'RepeatS',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepeatT',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Mode',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextureTransform',
          type: 'IfcCartesianTransformationOperator2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'RepeatS',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepeatT',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Mode',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextureTransform',
          type: 'IfcCartesianTransformationOperator2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcSurfaceTexture'],
    },
    IfcSweptAreaSolid: {
      name: 'IfcSweptAreaSolid',
      isAbstract: true,
      parent: 'IfcSolidModel',
      attributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptArea',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptAreaSolid'],
    },
    IfcSweptDiskSolid: {
      name: 'IfcSweptDiskSolid',
      isAbstract: false,
      parent: 'IfcSolidModel',
      attributes: [
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptDiskSolid'],
    },
    IfcSweptDiskSolidPolygonal: {
      name: 'IfcSweptDiskSolidPolygonal',
      isAbstract: false,
      parent: 'IfcSweptDiskSolid',
      attributes: [
        {
          name: 'FilletRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Directrix',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Radius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'InnerRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndParam',
          type: 'IfcParameterValue',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSolidModel', 'IfcSweptDiskSolid', 'IfcSweptDiskSolidPolygonal'],
    },
    IfcSweptSurface: {
      name: 'IfcSweptSurface',
      isAbstract: true,
      parent: 'IfcSurface',
      attributes: [
        {
          name: 'SweptCurve',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'SweptCurve',
          type: 'IfcProfileDef',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcSweptSurface'],
    },
    IfcSwitchingDevice: {
      name: 'IfcSwitchingDevice',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSwitchingDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSwitchingDeviceTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcSwitchingDevice'],
    },
    IfcSwitchingDeviceType: {
      name: 'IfcSwitchingDeviceType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSwitchingDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSwitchingDeviceTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcSwitchingDeviceType'],
    },
    IfcSystem: {
      name: 'IfcSystem',
      isAbstract: false,
      parent: 'IfcGroup',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcSystem'],
    },
    IfcSystemFurnitureElement: {
      name: 'IfcSystemFurnitureElement',
      isAbstract: false,
      parent: 'IfcFurnishingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSystemFurnitureElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSystemFurnitureElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFurnishingElement', 'IfcSystemFurnitureElement'],
    },
    IfcSystemFurnitureElementType: {
      name: 'IfcSystemFurnitureElementType',
      isAbstract: false,
      parent: 'IfcFurnishingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcSystemFurnitureElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcSystemFurnitureElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcFurnishingElementType', 'IfcSystemFurnitureElementType'],
    },
    IfcTShapeProfileDef: {
      name: 'IfcTShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebEdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcTShapeProfileDef'],
    },
    IfcTable: {
      name: 'IfcTable',
      isAbstract: false,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Rows',
          type: 'IfcTableRow',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Columns',
          type: 'IfcTableColumn',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Rows',
          type: 'IfcTableRow',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Columns',
          type: 'IfcTableColumn',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcTable'],
    },
    IfcTableColumn: {
      name: 'IfcTableColumn',
      isAbstract: false,
      attributes: [
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencePath',
          type: 'IfcReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Identifier',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ReferencePath',
          type: 'IfcReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcTableColumn'],
    },
    IfcTableRow: {
      name: 'IfcTableRow',
      isAbstract: false,
      attributes: [
        {
          name: 'RowCells',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'IsHeading',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'RowCells',
          type: 'IfcValue',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'IsHeading',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcTableRow'],
    },
    IfcTank: {
      name: 'IfcTank',
      isAbstract: false,
      parent: 'IfcFlowStorageDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTankTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTankTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowStorageDevice', 'IfcTank'],
    },
    IfcTankType: {
      name: 'IfcTankType',
      isAbstract: false,
      parent: 'IfcFlowStorageDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTankTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTankTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowStorageDeviceType', 'IfcTankType'],
    },
    IfcTask: {
      name: 'IfcTask',
      isAbstract: false,
      parent: 'IfcProcess',
      attributes: [
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorkMethod',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsMilestone',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TaskTime',
          type: 'IfcTaskTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTaskTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Status',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorkMethod',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsMilestone',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Priority',
          type: 'IfcInteger',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TaskTime',
          type: 'IfcTaskTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTaskTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProcess', 'IfcTask'],
    },
    IfcTaskTime: {
      name: 'IfcTaskTime',
      isAbstract: false,
      parent: 'IfcSchedulingTime',
      attributes: [
        {
          name: 'DurationType',
          type: 'IfcTaskDurationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleDuration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FreeFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsCritical',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StatusTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualDuration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingTime',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Completion',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DurationType',
          type: 'IfcTaskDurationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleDuration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FreeFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsCritical',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StatusTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualDuration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingTime',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Completion',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime', 'IfcTaskTime'],
    },
    IfcTaskTimeRecurring: {
      name: 'IfcTaskTimeRecurring',
      isAbstract: false,
      parent: 'IfcTaskTime',
      attributes: [
        {
          name: 'Recurrence',
          type: 'IfcRecurrencePattern',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DurationType',
          type: 'IfcTaskDurationEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleDuration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ScheduleFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EarlyFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LateFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FreeFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'IsCritical',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StatusTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualDuration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualStart',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ActualFinish',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RemainingTime',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Completion',
          type: 'IfcPositiveRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Recurrence',
          type: 'IfcRecurrencePattern',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime', 'IfcTaskTime', 'IfcTaskTimeRecurring'],
    },
    IfcTaskType: {
      name: 'IfcTaskType',
      isAbstract: false,
      parent: 'IfcTypeProcess',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTaskTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorkMethod',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProcessType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTaskTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorkMethod',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProcess', 'IfcTaskType'],
    },
    IfcTelecomAddress: {
      name: 'IfcTelecomAddress',
      isAbstract: false,
      parent: 'IfcAddress',
      attributes: [
        {
          name: 'TelephoneNumbers',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'FacsimileNumbers',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PagerNumber',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElectronicMailAddresses',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'WWWHomePageURL',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MessagingIDs',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Purpose',
          type: 'IfcAddressTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPurpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TelephoneNumbers',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'FacsimileNumbers',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PagerNumber',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElectronicMailAddresses',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'WWWHomePageURL',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MessagingIDs',
          type: 'IfcURIReference',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcAddress', 'IfcTelecomAddress'],
    },
    IfcTendon: {
      name: 'IfcTendon',
      isAbstract: false,
      parent: 'IfcReinforcingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTendonTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionForce',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PreStress',
          type: 'IfcPressureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrictionCoefficient',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AnchorageSlip',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MinCurvatureRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTendonTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TensionForce',
          type: 'IfcForceMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PreStress',
          type: 'IfcPressureMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrictionCoefficient',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'AnchorageSlip',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MinCurvatureRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcReinforcingElement', 'IfcTendon'],
    },
    IfcTendonAnchor: {
      name: 'IfcTendonAnchor',
      isAbstract: false,
      parent: 'IfcReinforcingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTendonAnchorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SteelGrade',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTendonAnchorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcReinforcingElement', 'IfcTendonAnchor'],
    },
    IfcTendonAnchorType: {
      name: 'IfcTendonAnchorType',
      isAbstract: false,
      parent: 'IfcReinforcingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTendonAnchorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTendonAnchorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcReinforcingElementType', 'IfcTendonAnchorType'],
    },
    IfcTendonType: {
      name: 'IfcTendonType',
      isAbstract: false,
      parent: 'IfcReinforcingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTendonTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SheathDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTendonTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'NominalDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CrossSectionArea',
          type: 'IfcAreaMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SheathDiameter',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcReinforcingElementType', 'IfcTendonType'],
    },
    IfcTessellatedFaceSet: {
      name: 'IfcTessellatedFaceSet',
      isAbstract: true,
      parent: 'IfcTessellatedItem',
      attributes: [
        {
          name: 'Coordinates',
          type: 'IfcCartesianPointList3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Coordinates',
          type: 'IfcCartesianPointList3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTessellatedItem', 'IfcTessellatedFaceSet'],
    },
    IfcTessellatedItem: {
      name: 'IfcTessellatedItem',
      isAbstract: true,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTessellatedItem'],
    },
    IfcTextLiteral: {
      name: 'IfcTextLiteral',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Literal',
          type: 'IfcPresentableText',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Placement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Path',
          type: 'IfcTextPath',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Literal',
          type: 'IfcPresentableText',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Placement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Path',
          type: 'IfcTextPath',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTextLiteral'],
    },
    IfcTextLiteralWithExtent: {
      name: 'IfcTextLiteralWithExtent',
      isAbstract: false,
      parent: 'IfcTextLiteral',
      attributes: [
        {
          name: 'Extent',
          type: 'IfcPlanarExtent',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BoxAlignment',
          type: 'IfcBoxAlignment',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Literal',
          type: 'IfcPresentableText',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Placement',
          type: 'IfcAxis2Placement',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Path',
          type: 'IfcTextPath',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Extent',
          type: 'IfcPlanarExtent',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BoxAlignment',
          type: 'IfcBoxAlignment',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTextLiteral', 'IfcTextLiteralWithExtent'],
    },
    IfcTextStyle: {
      name: 'IfcTextStyle',
      isAbstract: false,
      parent: 'IfcPresentationStyle',
      attributes: [
        {
          name: 'TextCharacterAppearance',
          type: 'IfcTextStyleForDefinedFont',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextStyle',
          type: 'IfcTextStyleTextModel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextFontStyle',
          type: 'IfcTextFontSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ModelOrDraughting',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextCharacterAppearance',
          type: 'IfcTextStyleForDefinedFont',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextStyle',
          type: 'IfcTextStyleTextModel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextFontStyle',
          type: 'IfcTextFontSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ModelOrDraughting',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationStyle', 'IfcTextStyle'],
    },
    IfcTextStyleFontModel: {
      name: 'IfcTextStyleFontModel',
      isAbstract: false,
      parent: 'IfcPreDefinedTextFont',
      attributes: [
        {
          name: 'FontFamily',
          type: 'IfcTextFontName',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'FontStyle',
          type: 'IfcFontStyle',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontVariant',
          type: 'IfcFontVariant',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontWeight',
          type: 'IfcFontWeight',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontSize',
          type: 'IfcSizeSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontFamily',
          type: 'IfcTextFontName',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'FontStyle',
          type: 'IfcFontStyle',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontVariant',
          type: 'IfcFontVariant',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontWeight',
          type: 'IfcFontWeight',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FontSize',
          type: 'IfcSizeSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcPreDefinedItem', 'IfcPreDefinedTextFont', 'IfcTextStyleFontModel'],
    },
    IfcTextStyleForDefinedFont: {
      name: 'IfcTextStyleForDefinedFont',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Colour',
          type: 'IfcColour',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BackgroundColour',
          type: 'IfcColour',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Colour',
          type: 'IfcColour',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BackgroundColour',
          type: 'IfcColour',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextStyleForDefinedFont'],
    },
    IfcTextStyleTextModel: {
      name: 'IfcTextStyleTextModel',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'TextIndent',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextAlign',
          type: 'IfcTextAlignment',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextDecoration',
          type: 'IfcTextDecoration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LetterSpacing',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WordSpacing',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextTransform',
          type: 'IfcTextTransformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LineHeight',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'TextIndent',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextAlign',
          type: 'IfcTextAlignment',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextDecoration',
          type: 'IfcTextDecoration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LetterSpacing',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WordSpacing',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TextTransform',
          type: 'IfcTextTransformation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LineHeight',
          type: 'IfcSizeSelect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextStyleTextModel'],
    },
    IfcTextureCoordinate: {
      name: 'IfcTextureCoordinate',
      isAbstract: true,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Maps',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Maps',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureCoordinate'],
    },
    IfcTextureCoordinateGenerator: {
      name: 'IfcTextureCoordinateGenerator',
      isAbstract: false,
      parent: 'IfcTextureCoordinate',
      attributes: [
        {
          name: 'Mode',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Maps',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Mode',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Parameter',
          type: 'IfcReal',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureCoordinate', 'IfcTextureCoordinateGenerator'],
    },
    IfcTextureMap: {
      name: 'IfcTextureMap',
      isAbstract: false,
      parent: 'IfcTextureCoordinate',
      attributes: [
        {
          name: 'Vertices',
          type: 'IfcTextureVertex',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
        {
          name: 'MappedTo',
          type: 'IfcFace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Maps',
          type: 'IfcSurfaceTexture',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Vertices',
          type: 'IfcTextureVertex',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [3, Infinity],
        },
        {
          name: 'MappedTo',
          type: 'IfcFace',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureCoordinate', 'IfcTextureMap'],
    },
    IfcTextureVertex: {
      name: 'IfcTextureVertex',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'Coordinates',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 2],
        },
      ],
      allAttributes: [
        {
          name: 'Coordinates',
          type: 'IfcParameterValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 2],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureVertex'],
    },
    IfcTextureVertexList: {
      name: 'IfcTextureVertexList',
      isAbstract: false,
      parent: 'IfcPresentationItem',
      attributes: [
        {
          name: 'TexCoordsList',
          type: 'IfcParameterValue[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'TexCoordsList',
          type: 'IfcParameterValue[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcPresentationItem', 'IfcTextureVertexList'],
    },
    IfcTimePeriod: {
      name: 'IfcTimePeriod',
      isAbstract: false,
      attributes: [
        {
          name: 'StartTime',
          type: 'IfcTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndTime',
          type: 'IfcTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'StartTime',
          type: 'IfcTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndTime',
          type: 'IfcTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcTimePeriod'],
    },
    IfcTimeSeries: {
      name: 'IfcTimeSeries',
      isAbstract: true,
      attributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeSeriesDataType',
          type: 'IfcTimeSeriesDataTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EndTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TimeSeriesDataType',
          type: 'IfcTimeSeriesDataTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Unit',
          type: 'IfcUnit',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcTimeSeries'],
    },
    IfcTimeSeriesValue: {
      name: 'IfcTimeSeriesValue',
      isAbstract: false,
      attributes: [
        {
          name: 'ListValues',
          type: 'IfcValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'ListValues',
          type: 'IfcValue',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcTimeSeriesValue'],
    },
    IfcTopologicalRepresentationItem: {
      name: 'IfcTopologicalRepresentationItem',
      isAbstract: true,
      parent: 'IfcRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem'],
    },
    IfcTopologyRepresentation: {
      name: 'IfcTopologyRepresentation',
      isAbstract: false,
      parent: 'IfcShapeModel',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'ContextOfItems',
          type: 'IfcRepresentationContext',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationIdentifier',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RepresentationType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Items',
          type: 'IfcRepresentationItem',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentation', 'IfcShapeModel', 'IfcTopologyRepresentation'],
    },
    IfcToroidalSurface: {
      name: 'IfcToroidalSurface',
      isAbstract: false,
      parent: 'IfcElementarySurface',
      attributes: [
        {
          name: 'MajorRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MinorRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Position',
          type: 'IfcAxis2Placement3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MajorRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MinorRadius',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcSurface', 'IfcElementarySurface', 'IfcToroidalSurface'],
    },
    IfcTransformer: {
      name: 'IfcTransformer',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTransformerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTransformerTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcTransformer'],
    },
    IfcTransformerType: {
      name: 'IfcTransformerType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTransformerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTransformerTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcTransformerType'],
    },
    IfcTransportElement: {
      name: 'IfcTransportElement',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTransportElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTransportElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcTransportElement'],
    },
    IfcTransportElementType: {
      name: 'IfcTransportElementType',
      isAbstract: false,
      parent: 'IfcElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTransportElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTransportElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcTransportElementType'],
    },
    IfcTrapeziumProfileDef: {
      name: 'IfcTrapeziumProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'BottomXDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopXDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopXOffset',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'BottomXDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopXDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'YDim',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TopXOffset',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcTrapeziumProfileDef'],
    },
    IfcTriangulatedFaceSet: {
      name: 'IfcTriangulatedFaceSet',
      isAbstract: false,
      parent: 'IfcTessellatedFaceSet',
      attributes: [
        {
          name: 'Normals',
          type: 'IfcParameterValue[]',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Closed',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CoordIndex',
          type: 'IfcPositiveInteger[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PnIndex',
          type: 'IfcPositiveInteger',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Coordinates',
          type: 'IfcCartesianPointList3D',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Normals',
          type: 'IfcParameterValue[]',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Closed',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CoordIndex',
          type: 'IfcPositiveInteger[]',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PnIndex',
          type: 'IfcPositiveInteger',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcTessellatedItem', 'IfcTessellatedFaceSet', 'IfcTriangulatedFaceSet'],
    },
    IfcTrimmedCurve: {
      name: 'IfcTrimmedCurve',
      isAbstract: false,
      parent: 'IfcBoundedCurve',
      attributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Trim1',
          type: 'IfcTrimmingSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, 2],
        },
        {
          name: 'Trim2',
          type: 'IfcTrimmingSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, 2],
        },
        {
          name: 'SenseAgreement',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MasterRepresentation',
          type: 'IfcTrimmingPreference',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'BasisCurve',
          type: 'IfcCurve',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Trim1',
          type: 'IfcTrimmingSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, 2],
        },
        {
          name: 'Trim2',
          type: 'IfcTrimmingSelect',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, 2],
        },
        {
          name: 'SenseAgreement',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MasterRepresentation',
          type: 'IfcTrimmingPreference',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcCurve', 'IfcBoundedCurve', 'IfcTrimmedCurve'],
    },
    IfcTubeBundle: {
      name: 'IfcTubeBundle',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTubeBundleTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTubeBundleTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcTubeBundle'],
    },
    IfcTubeBundleType: {
      name: 'IfcTubeBundleType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcTubeBundleTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcTubeBundleTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcTubeBundleType'],
    },
    IfcTypeObject: {
      name: 'IfcTypeObject',
      isAbstract: false,
      parent: 'IfcObjectDefinition',
      attributes: [
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject'],
    },
    IfcTypeProcess: {
      name: 'IfcTypeProcess',
      isAbstract: true,
      parent: 'IfcTypeObject',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProcessType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProcessType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProcess'],
    },
    IfcTypeProduct: {
      name: 'IfcTypeProduct',
      isAbstract: false,
      parent: 'IfcTypeObject',
      attributes: [
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct'],
    },
    IfcTypeResource: {
      name: 'IfcTypeResource',
      isAbstract: true,
      parent: 'IfcTypeObject',
      attributes: [
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongDescription',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ResourceType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeResource'],
    },
    IfcUShapeProfileDef: {
      name: 'IfcUShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeSlope',
          type: 'IfcPlaneAngleMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcUShapeProfileDef'],
    },
    IfcUnitAssignment: {
      name: 'IfcUnitAssignment',
      isAbstract: false,
      attributes: [
        {
          name: 'Units',
          type: 'IfcUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      allAttributes: [
        {
          name: 'Units',
          type: 'IfcUnit',
          optional: false,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
      ],
      inheritanceChain: ['IfcUnitAssignment'],
    },
    IfcUnitaryControlElement: {
      name: 'IfcUnitaryControlElement',
      isAbstract: false,
      parent: 'IfcDistributionControlElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryControlElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryControlElementTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionControlElement', 'IfcUnitaryControlElement'],
    },
    IfcUnitaryControlElementType: {
      name: 'IfcUnitaryControlElementType',
      isAbstract: false,
      parent: 'IfcDistributionControlElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryControlElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryControlElementTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionControlElementType', 'IfcUnitaryControlElementType'],
    },
    IfcUnitaryEquipment: {
      name: 'IfcUnitaryEquipment',
      isAbstract: false,
      parent: 'IfcEnergyConversionDevice',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryEquipmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryEquipmentTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcEnergyConversionDevice', 'IfcUnitaryEquipment'],
    },
    IfcUnitaryEquipmentType: {
      name: 'IfcUnitaryEquipmentType',
      isAbstract: false,
      parent: 'IfcEnergyConversionDeviceType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryEquipmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcUnitaryEquipmentTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcEnergyConversionDeviceType', 'IfcUnitaryEquipmentType'],
    },
    IfcValve: {
      name: 'IfcValve',
      isAbstract: false,
      parent: 'IfcFlowController',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcValveTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcValveTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowController', 'IfcValve'],
    },
    IfcValveType: {
      name: 'IfcValveType',
      isAbstract: false,
      parent: 'IfcFlowControllerType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcValveTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcValveTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowControllerType', 'IfcValveType'],
    },
    IfcVector: {
      name: 'IfcVector',
      isAbstract: false,
      parent: 'IfcGeometricRepresentationItem',
      attributes: [
        {
          name: 'Orientation',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Magnitude',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Orientation',
          type: 'IfcDirection',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Magnitude',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcGeometricRepresentationItem', 'IfcVector'],
    },
    IfcVertex: {
      name: 'IfcVertex',
      isAbstract: false,
      parent: 'IfcTopologicalRepresentationItem',
      attributes: [
      ],
      allAttributes: [
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcVertex'],
    },
    IfcVertexLoop: {
      name: 'IfcVertexLoop',
      isAbstract: false,
      parent: 'IfcLoop',
      attributes: [
        {
          name: 'LoopVertex',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'LoopVertex',
          type: 'IfcVertex',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcLoop', 'IfcVertexLoop'],
    },
    IfcVertexPoint: {
      name: 'IfcVertexPoint',
      isAbstract: false,
      parent: 'IfcVertex',
      attributes: [
        {
          name: 'VertexGeometry',
          type: 'IfcPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'VertexGeometry',
          type: 'IfcPoint',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRepresentationItem', 'IfcTopologicalRepresentationItem', 'IfcVertex', 'IfcVertexPoint'],
    },
    IfcVibrationIsolator: {
      name: 'IfcVibrationIsolator',
      isAbstract: false,
      parent: 'IfcElementComponent',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcVibrationIsolatorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcVibrationIsolatorTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcElementComponent', 'IfcVibrationIsolator'],
    },
    IfcVibrationIsolatorType: {
      name: 'IfcVibrationIsolatorType',
      isAbstract: false,
      parent: 'IfcElementComponentType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcVibrationIsolatorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcVibrationIsolatorTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcElementComponentType', 'IfcVibrationIsolatorType'],
    },
    IfcVirtualElement: {
      name: 'IfcVirtualElement',
      isAbstract: false,
      parent: 'IfcElement',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcVirtualElement'],
    },
    IfcVirtualGridIntersection: {
      name: 'IfcVirtualGridIntersection',
      isAbstract: false,
      attributes: [
        {
          name: 'IntersectingAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 2],
        },
        {
          name: 'OffsetDistances',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
      ],
      allAttributes: [
        {
          name: 'IntersectingAxes',
          type: 'UNIQUE IfcGridAxis',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 2],
        },
        {
          name: 'OffsetDistances',
          type: 'IfcLengthMeasure',
          optional: false,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [2, 3],
        },
      ],
      inheritanceChain: ['IfcVirtualGridIntersection'],
    },
    IfcVoidingFeature: {
      name: 'IfcVoidingFeature',
      isAbstract: false,
      parent: 'IfcFeatureElementSubtraction',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcVoidingFeatureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcVoidingFeatureTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcFeatureElement', 'IfcFeatureElementSubtraction', 'IfcVoidingFeature'],
    },
    IfcWall: {
      name: 'IfcWall',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWallTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWallTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcWall'],
    },
    IfcWallElementedCase: {
      name: 'IfcWallElementedCase',
      isAbstract: false,
      parent: 'IfcWall',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWallTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcWall', 'IfcWallElementedCase'],
    },
    IfcWallStandardCase: {
      name: 'IfcWallStandardCase',
      isAbstract: false,
      parent: 'IfcWall',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWallTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcWall', 'IfcWallStandardCase'],
    },
    IfcWallType: {
      name: 'IfcWallType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWallTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWallTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcWallType'],
    },
    IfcWasteTerminal: {
      name: 'IfcWasteTerminal',
      isAbstract: false,
      parent: 'IfcFlowTerminal',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWasteTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWasteTerminalTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcDistributionElement', 'IfcDistributionFlowElement', 'IfcFlowTerminal', 'IfcWasteTerminal'],
    },
    IfcWasteTerminalType: {
      name: 'IfcWasteTerminalType',
      isAbstract: false,
      parent: 'IfcFlowTerminalType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWasteTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWasteTerminalTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcDistributionElementType', 'IfcDistributionFlowElementType', 'IfcFlowTerminalType', 'IfcWasteTerminalType'],
    },
    IfcWindow: {
      name: 'IfcWindow',
      isAbstract: false,
      parent: 'IfcBuildingElement',
      attributes: [
        {
          name: 'OverallHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWindowTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartitioningType',
          type: 'IfcWindowTypePartitioningEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPartitioningType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWindowTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartitioningType',
          type: 'IfcWindowTypePartitioningEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPartitioningType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcWindow'],
    },
    IfcWindowLiningProperties: {
      name: 'IfcWindowLiningProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedPropertySet',
      attributes: [
        {
          name: 'LiningDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransomThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MullionThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstTransomOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondTransomOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstMullionOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondMullionOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TransomThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'MullionThickness',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstTransomOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondTransomOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FirstMullionOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'SecondMullionOffset',
          type: 'IfcNormalisedRatioMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningOffset',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetX',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LiningToPanelOffsetY',
          type: 'IfcLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet', 'IfcWindowLiningProperties'],
    },
    IfcWindowPanelProperties: {
      name: 'IfcWindowPanelProperties',
      isAbstract: false,
      parent: 'IfcPreDefinedPropertySet',
      attributes: [
        {
          name: 'OperationType',
          type: 'IfcWindowPanelOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelPosition',
          type: 'IfcWindowPanelPositionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcWindowPanelOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PanelPosition',
          type: 'IfcWindowPanelPositionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameDepth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FrameThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ShapeAspectStyle',
          type: 'IfcShapeAspect',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcPropertyDefinition', 'IfcPropertySetDefinition', 'IfcPreDefinedPropertySet', 'IfcWindowPanelProperties'],
    },
    IfcWindowStandardCase: {
      name: 'IfcWindowStandardCase',
      isAbstract: false,
      parent: 'IfcWindow',
      attributes: [
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectPlacement',
          type: 'IfcObjectPlacement',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Representation',
          type: 'IfcProductRepresentation',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Tag',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallHeight',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OverallWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWindowTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartitioningType',
          type: 'IfcWindowTypePartitioningEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPartitioningType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcProduct', 'IfcElement', 'IfcBuildingElement', 'IfcWindow', 'IfcWindowStandardCase'],
    },
    IfcWindowStyle: {
      name: 'IfcWindowStyle',
      isAbstract: false,
      parent: 'IfcTypeProduct',
      attributes: [
        {
          name: 'ConstructionType',
          type: 'IfcWindowStyleConstructionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcWindowStyleOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Sizeable',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ConstructionType',
          type: 'IfcWindowStyleConstructionEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OperationType',
          type: 'IfcWindowStyleOperationEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Sizeable',
          type: 'IfcBoolean',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcWindowStyle'],
    },
    IfcWindowType: {
      name: 'IfcWindowType',
      isAbstract: false,
      parent: 'IfcBuildingElementType',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWindowTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartitioningType',
          type: 'IfcWindowTypePartitioningEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPartitioningType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ApplicableOccurrence',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'HasPropertySets',
          type: 'IfcPropertySetDefinition',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'RepresentationMaps',
          type: 'UNIQUE IfcRepresentationMap',
          optional: true,
          isArray: false,
          isList: true,
          isSet: false,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Tag',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ElementType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWindowTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PartitioningType',
          type: 'IfcWindowTypePartitioningEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ParameterTakesPrecedence',
          type: 'IfcBoolean',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedPartitioningType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcTypeObject', 'IfcTypeProduct', 'IfcElementType', 'IfcBuildingElementType', 'IfcWindowType'],
    },
    IfcWorkCalendar: {
      name: 'IfcWorkCalendar',
      isAbstract: false,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'WorkingTimes',
          type: 'IfcWorkTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ExceptionTimes',
          type: 'IfcWorkTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PredefinedType',
          type: 'IfcWorkCalendarTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WorkingTimes',
          type: 'IfcWorkTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'ExceptionTimes',
          type: 'IfcWorkTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'PredefinedType',
          type: 'IfcWorkCalendarTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcWorkCalendar'],
    },
    IfcWorkControl: {
      name: 'IfcWorkControl',
      isAbstract: true,
      parent: 'IfcControl',
      attributes: [
        {
          name: 'CreationDate',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Creators',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Duration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FinishTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationDate',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Creators',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Duration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FinishTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcWorkControl'],
    },
    IfcWorkPlan: {
      name: 'IfcWorkPlan',
      isAbstract: false,
      parent: 'IfcWorkControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWorkPlanTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationDate',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Creators',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Duration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FinishTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWorkPlanTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcWorkControl', 'IfcWorkPlan'],
    },
    IfcWorkSchedule: {
      name: 'IfcWorkSchedule',
      isAbstract: false,
      parent: 'IfcWorkControl',
      attributes: [
        {
          name: 'PredefinedType',
          type: 'IfcWorkScheduleTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Identification',
          type: 'IfcIdentifier',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'CreationDate',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Creators',
          type: 'IfcPerson',
          optional: true,
          isArray: false,
          isList: false,
          isSet: true,
          arrayBounds: [1, Infinity],
        },
        {
          name: 'Purpose',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Duration',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'TotalFloat',
          type: 'IfcDuration',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'StartTime',
          type: 'IfcDateTime',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FinishTime',
          type: 'IfcDateTime',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'PredefinedType',
          type: 'IfcWorkScheduleTypeEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcControl', 'IfcWorkControl', 'IfcWorkSchedule'],
    },
    IfcWorkTime: {
      name: 'IfcWorkTime',
      isAbstract: false,
      parent: 'IfcSchedulingTime',
      attributes: [
        {
          name: 'RecurrencePattern',
          type: 'IfcRecurrencePattern',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Start',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Finish',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'DataOrigin',
          type: 'IfcDataOriginEnum',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'UserDefinedDataOrigin',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'RecurrencePattern',
          type: 'IfcRecurrencePattern',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Start',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Finish',
          type: 'IfcDate',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcSchedulingTime', 'IfcWorkTime'],
    },
    IfcZShapeProfileDef: {
      name: 'IfcZShapeProfileDef',
      isAbstract: false,
      parent: 'IfcParameterizedProfileDef',
      attributes: [
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'ProfileType',
          type: 'IfcProfileTypeEnum',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ProfileName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Position',
          type: 'IfcAxis2Placement2D',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Depth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeWidth',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'WebThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FlangeThickness',
          type: 'IfcPositiveLengthMeasure',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'FilletRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'EdgeRadius',
          type: 'IfcNonNegativeLengthMeasure',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcProfileDef', 'IfcParameterizedProfileDef', 'IfcZShapeProfileDef'],
    },
    IfcZone: {
      name: 'IfcZone',
      isAbstract: false,
      parent: 'IfcSystem',
      attributes: [
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      allAttributes: [
        {
          name: 'GlobalId',
          type: 'IfcGloballyUniqueId',
          optional: false,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'OwnerHistory',
          type: 'IfcOwnerHistory',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Name',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'Description',
          type: 'IfcText',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'ObjectType',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
        {
          name: 'LongName',
          type: 'IfcLabel',
          optional: true,
          isArray: false,
          isList: false,
          isSet: false,
        },
      ],
      inheritanceChain: ['IfcRoot', 'IfcObjectDefinition', 'IfcObject', 'IfcGroup', 'IfcSystem', 'IfcZone'],
    },
  },

  types: {
    IfcAbsorbedDoseMeasure: 'REAL',
    IfcAccelerationMeasure: 'REAL',
    IfcAmountOfSubstanceMeasure: 'REAL',
    IfcAngularVelocityMeasure: 'REAL',
    IfcArcIndex: 'LIST [3:3] OF IfcPositiveInteger',
    IfcAreaDensityMeasure: 'REAL',
    IfcAreaMeasure: 'REAL',
    IfcBinary: 'BINARY',
    IfcBoolean: 'BOOLEAN',
    IfcBoxAlignment: 'IfcLabel',
    IfcCardinalPointReference: 'INTEGER',
    IfcComplexNumber: 'ARRAY [1:2] OF REAL',
    IfcCompoundPlaneAngleMeasure: 'LIST [3:4] OF INTEGER',
    IfcContextDependentMeasure: 'REAL',
    IfcCountMeasure: 'NUMBER',
    IfcCurvatureMeasure: 'REAL',
    IfcDate: 'STRING',
    IfcDateTime: 'STRING',
    IfcDayInMonthNumber: 'INTEGER',
    IfcDayInWeekNumber: 'INTEGER',
    IfcDescriptiveMeasure: 'STRING',
    IfcDimensionCount: 'INTEGER',
    IfcDoseEquivalentMeasure: 'REAL',
    IfcDuration: 'STRING',
    IfcDynamicViscosityMeasure: 'REAL',
    IfcElectricCapacitanceMeasure: 'REAL',
    IfcElectricChargeMeasure: 'REAL',
    IfcElectricConductanceMeasure: 'REAL',
    IfcElectricCurrentMeasure: 'REAL',
    IfcElectricResistanceMeasure: 'REAL',
    IfcElectricVoltageMeasure: 'REAL',
    IfcEnergyMeasure: 'REAL',
    IfcFontStyle: 'STRING',
    IfcFontVariant: 'STRING',
    IfcFontWeight: 'STRING',
    IfcForceMeasure: 'REAL',
    IfcFrequencyMeasure: 'REAL',
    IfcGloballyUniqueId: 'STRING(22) FIXED',
    IfcHeatFluxDensityMeasure: 'REAL',
    IfcHeatingValueMeasure: 'REAL',
    IfcIdentifier: 'STRING(255)',
    IfcIlluminanceMeasure: 'REAL',
    IfcInductanceMeasure: 'REAL',
    IfcInteger: 'INTEGER',
    IfcIntegerCountRateMeasure: 'INTEGER',
    IfcIonConcentrationMeasure: 'REAL',
    IfcIsothermalMoistureCapacityMeasure: 'REAL',
    IfcKinematicViscosityMeasure: 'REAL',
    IfcLabel: 'STRING(255)',
    IfcLanguageId: 'IfcIdentifier',
    IfcLengthMeasure: 'REAL',
    IfcLineIndex: 'LIST [2:?] OF IfcPositiveInteger',
    IfcLinearForceMeasure: 'REAL',
    IfcLinearMomentMeasure: 'REAL',
    IfcLinearStiffnessMeasure: 'REAL',
    IfcLinearVelocityMeasure: 'REAL',
    IfcLogical: 'LOGICAL',
    IfcLuminousFluxMeasure: 'REAL',
    IfcLuminousIntensityDistributionMeasure: 'REAL',
    IfcLuminousIntensityMeasure: 'REAL',
    IfcMagneticFluxDensityMeasure: 'REAL',
    IfcMagneticFluxMeasure: 'REAL',
    IfcMassDensityMeasure: 'REAL',
    IfcMassFlowRateMeasure: 'REAL',
    IfcMassMeasure: 'REAL',
    IfcMassPerLengthMeasure: 'REAL',
    IfcModulusOfElasticityMeasure: 'REAL',
    IfcModulusOfLinearSubgradeReactionMeasure: 'REAL',
    IfcModulusOfRotationalSubgradeReactionMeasure: 'REAL',
    IfcModulusOfSubgradeReactionMeasure: 'REAL',
    IfcMoistureDiffusivityMeasure: 'REAL',
    IfcMolecularWeightMeasure: 'REAL',
    IfcMomentOfInertiaMeasure: 'REAL',
    IfcMonetaryMeasure: 'REAL',
    IfcMonthInYearNumber: 'INTEGER',
    IfcNonNegativeLengthMeasure: 'IfcLengthMeasure',
    IfcNormalisedRatioMeasure: 'IfcRatioMeasure',
    IfcNumericMeasure: 'NUMBER',
    IfcPHMeasure: 'REAL',
    IfcParameterValue: 'REAL',
    IfcPlanarForceMeasure: 'REAL',
    IfcPlaneAngleMeasure: 'REAL',
    IfcPositiveInteger: 'IfcInteger',
    IfcPositiveLengthMeasure: 'IfcLengthMeasure',
    IfcPositivePlaneAngleMeasure: 'IfcPlaneAngleMeasure',
    IfcPositiveRatioMeasure: 'IfcRatioMeasure',
    IfcPowerMeasure: 'REAL',
    IfcPresentableText: 'STRING',
    IfcPressureMeasure: 'REAL',
    IfcPropertySetDefinitionSet: 'SET [1:?] OF IfcPropertySetDefinition',
    IfcRadioActivityMeasure: 'REAL',
    IfcRatioMeasure: 'REAL',
    IfcReal: 'REAL',
    IfcRotationalFrequencyMeasure: 'REAL',
    IfcRotationalMassMeasure: 'REAL',
    IfcRotationalStiffnessMeasure: 'REAL',
    IfcSectionModulusMeasure: 'REAL',
    IfcSectionalAreaIntegralMeasure: 'REAL',
    IfcShearModulusMeasure: 'REAL',
    IfcSolidAngleMeasure: 'REAL',
    IfcSoundPowerLevelMeasure: 'REAL',
    IfcSoundPowerMeasure: 'REAL',
    IfcSoundPressureLevelMeasure: 'REAL',
    IfcSoundPressureMeasure: 'REAL',
    IfcSpecificHeatCapacityMeasure: 'REAL',
    IfcSpecularExponent: 'REAL',
    IfcSpecularRoughness: 'REAL',
    IfcTemperatureGradientMeasure: 'REAL',
    IfcTemperatureRateOfChangeMeasure: 'REAL',
    IfcText: 'STRING',
    IfcTextAlignment: 'STRING',
    IfcTextDecoration: 'STRING',
    IfcTextFontName: 'STRING',
    IfcTextTransformation: 'STRING',
    IfcThermalAdmittanceMeasure: 'REAL',
    IfcThermalConductivityMeasure: 'REAL',
    IfcThermalExpansionCoefficientMeasure: 'REAL',
    IfcThermalResistanceMeasure: 'REAL',
    IfcThermalTransmittanceMeasure: 'REAL',
    IfcThermodynamicTemperatureMeasure: 'REAL',
    IfcTime: 'STRING',
    IfcTimeMeasure: 'REAL',
    IfcTimeStamp: 'INTEGER',
    IfcTorqueMeasure: 'REAL',
    IfcURIReference: 'STRING',
    IfcVaporPermeabilityMeasure: 'REAL',
    IfcVolumeMeasure: 'REAL',
    IfcVolumetricFlowRateMeasure: 'REAL',
    IfcWarpingConstantMeasure: 'REAL',
    IfcWarpingMomentMeasure: 'REAL',
    IfcActionRequestTypeEnum: 'ENUMERATION OF 	(EMAIL 	,FAX 	,PHONE 	,POST 	,VERBAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcActionSourceTypeEnum: 'ENUMERATION OF 	(DEAD_LOAD_G 	,COMPLETION_G1 	,LIVE_LOAD_Q 	,SNOW_S 	,WIND_W 	,PRESTRESSING_P 	,SETTLEMENT_U 	,TEMPERATURE_T 	,EARTHQUAKE_E 	,FIRE 	,IMPULSE 	,IMPACT 	,TRANSPORT 	,ERECTION 	,PROPPING 	,SYSTEM_IMPERFECTION 	,SHRINKAGE 	,CREEP 	,LACK_OF_FIT 	,BUOYANCY 	,ICE 	,CURRENT 	,WAVE 	,RAIN 	,BRAKES 	,USERDEFINED 	,NOTDEFINED)',
    IfcActionTypeEnum: 'ENUMERATION OF 	(PERMANENT_G 	,VARIABLE_Q 	,EXTRAORDINARY_A 	,USERDEFINED 	,NOTDEFINED)',
    IfcActuatorTypeEnum: 'ENUMERATION OF 	(ELECTRICACTUATOR 	,HANDOPERATEDACTUATOR 	,HYDRAULICACTUATOR 	,PNEUMATICACTUATOR 	,THERMOSTATICACTUATOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcAddressTypeEnum: 'ENUMERATION OF 	(OFFICE 	,SITE 	,HOME 	,DISTRIBUTIONPOINT 	,USERDEFINED)',
    IfcAirTerminalBoxTypeEnum: 'ENUMERATION OF 	(CONSTANTFLOW 	,VARIABLEFLOWPRESSUREDEPENDANT 	,VARIABLEFLOWPRESSUREINDEPENDANT 	,USERDEFINED 	,NOTDEFINED)',
    IfcAirTerminalTypeEnum: 'ENUMERATION OF 	(DIFFUSER 	,GRILLE 	,LOUVRE 	,REGISTER 	,USERDEFINED 	,NOTDEFINED)',
    IfcAirToAirHeatRecoveryTypeEnum: 'ENUMERATION OF 	(FIXEDPLATECOUNTERFLOWEXCHANGER 	,FIXEDPLATECROSSFLOWEXCHANGER 	,FIXEDPLATEPARALLELFLOWEXCHANGER 	,ROTARYWHEEL 	,RUNAROUNDCOILLOOP 	,HEATPIPE 	,TWINTOWERENTHALPYRECOVERYLOOPS 	,THERMOSIPHONSEALEDTUBEHEATEXCHANGERS 	,THERMOSIPHONCOILTYPEHEATEXCHANGERS 	,USERDEFINED 	,NOTDEFINED)',
    IfcAlarmTypeEnum: 'ENUMERATION OF 	(BELL 	,BREAKGLASSBUTTON 	,LIGHT 	,MANUALPULLBOX 	,SIREN 	,WHISTLE 	,USERDEFINED 	,NOTDEFINED)',
    IfcAnalysisModelTypeEnum: 'ENUMERATION OF 	(IN_PLANE_LOADING_2D 	,OUT_PLANE_LOADING_2D 	,LOADING_3D 	,USERDEFINED 	,NOTDEFINED)',
    IfcAnalysisTheoryTypeEnum: 'ENUMERATION OF 	(FIRST_ORDER_THEORY 	,SECOND_ORDER_THEORY 	,THIRD_ORDER_THEORY 	,FULL_NONLINEAR_THEORY 	,USERDEFINED 	,NOTDEFINED)',
    IfcArithmeticOperatorEnum: 'ENUMERATION OF 	(ADD 	,DIVIDE 	,MULTIPLY 	,SUBTRACT)',
    IfcAssemblyPlaceEnum: 'ENUMERATION OF 	(SITE 	,FACTORY 	,NOTDEFINED)',
    IfcAudioVisualApplianceTypeEnum: 'ENUMERATION OF 	(AMPLIFIER 	,CAMERA 	,DISPLAY 	,MICROPHONE 	,PLAYER 	,PROJECTOR 	,RECEIVER 	,SPEAKER 	,SWITCHER 	,TELEPHONE 	,TUNER 	,USERDEFINED 	,NOTDEFINED)',
    IfcBSplineCurveForm: 'ENUMERATION OF 	(POLYLINE_FORM 	,CIRCULAR_ARC 	,ELLIPTIC_ARC 	,PARABOLIC_ARC 	,HYPERBOLIC_ARC 	,UNSPECIFIED)',
    IfcBSplineSurfaceForm: 'ENUMERATION OF 	(PLANE_SURF 	,CYLINDRICAL_SURF 	,CONICAL_SURF 	,SPHERICAL_SURF 	,TOROIDAL_SURF 	,SURF_OF_REVOLUTION 	,RULED_SURF 	,GENERALISED_CONE 	,QUADRIC_SURF 	,SURF_OF_LINEAR_EXTRUSION 	,UNSPECIFIED)',
    IfcBeamTypeEnum: 'ENUMERATION OF 	(BEAM 	,JOIST 	,HOLLOWCORE 	,LINTEL 	,SPANDREL 	,T_BEAM 	,USERDEFINED 	,NOTDEFINED)',
    IfcBenchmarkEnum: 'ENUMERATION OF 	(GREATERTHAN 	,GREATERTHANOREQUALTO 	,LESSTHAN 	,LESSTHANOREQUALTO 	,EQUALTO 	,NOTEQUALTO 	,INCLUDES 	,NOTINCLUDES 	,INCLUDEDIN 	,NOTINCLUDEDIN)',
    IfcBoilerTypeEnum: 'ENUMERATION OF 	(WATER 	,STEAM 	,USERDEFINED 	,NOTDEFINED)',
    IfcBooleanOperator: 'ENUMERATION OF 	(UNION 	,INTERSECTION 	,DIFFERENCE)',
    IfcBuildingElementPartTypeEnum: 'ENUMERATION OF 	(INSULATION 	,PRECASTPANEL 	,USERDEFINED 	,NOTDEFINED)',
    IfcBuildingElementProxyTypeEnum: 'ENUMERATION OF 	(COMPLEX 	,ELEMENT 	,PARTIAL 	,PROVISIONFORVOID 	,PROVISIONFORSPACE 	,USERDEFINED 	,NOTDEFINED)',
    IfcBuildingSystemTypeEnum: 'ENUMERATION OF 	(FENESTRATION 	,FOUNDATION 	,LOADBEARING 	,OUTERSHELL 	,SHADING 	,TRANSPORT 	,USERDEFINED 	,NOTDEFINED)',
    IfcBurnerTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcCableCarrierFittingTypeEnum: 'ENUMERATION OF 	(BEND 	,CROSS 	,REDUCER 	,TEE 	,USERDEFINED 	,NOTDEFINED)',
    IfcCableCarrierSegmentTypeEnum: 'ENUMERATION OF 	(CABLELADDERSEGMENT 	,CABLETRAYSEGMENT 	,CABLETRUNKINGSEGMENT 	,CONDUITSEGMENT 	,USERDEFINED 	,NOTDEFINED)',
    IfcCableFittingTypeEnum: 'ENUMERATION OF 	(CONNECTOR 	,ENTRY 	,EXIT 	,JUNCTION 	,TRANSITION 	,USERDEFINED 	,NOTDEFINED)',
    IfcCableSegmentTypeEnum: 'ENUMERATION OF 	(BUSBARSEGMENT 	,CABLESEGMENT 	,CONDUCTORSEGMENT 	,CORESEGMENT 	,USERDEFINED 	,NOTDEFINED)',
    IfcChangeActionEnum: 'ENUMERATION OF 	(NOCHANGE 	,MODIFIED 	,ADDED 	,DELETED 	,NOTDEFINED)',
    IfcChillerTypeEnum: 'ENUMERATION OF 	(AIRCOOLED 	,WATERCOOLED 	,HEATRECOVERY 	,USERDEFINED 	,NOTDEFINED)',
    IfcChimneyTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcCoilTypeEnum: 'ENUMERATION OF 	(DXCOOLINGCOIL 	,ELECTRICHEATINGCOIL 	,GASHEATINGCOIL 	,HYDRONICCOIL 	,STEAMHEATINGCOIL 	,WATERCOOLINGCOIL 	,WATERHEATINGCOIL 	,USERDEFINED 	,NOTDEFINED)',
    IfcColumnTypeEnum: 'ENUMERATION OF 	(COLUMN 	,PILASTER 	,USERDEFINED 	,NOTDEFINED)',
    IfcCommunicationsApplianceTypeEnum: 'ENUMERATION OF 	(ANTENNA 	,COMPUTER 	,FAX 	,GATEWAY 	,MODEM 	,NETWORKAPPLIANCE 	,NETWORKBRIDGE 	,NETWORKHUB 	,PRINTER 	,REPEATER 	,ROUTER 	,SCANNER 	,USERDEFINED 	,NOTDEFINED)',
    IfcComplexPropertyTemplateTypeEnum: 'ENUMERATION OF 	(P_COMPLEX 	,Q_COMPLEX)',
    IfcCompressorTypeEnum: 'ENUMERATION OF 	(DYNAMIC 	,RECIPROCATING 	,ROTARY 	,SCROLL 	,TROCHOIDAL 	,SINGLESTAGE 	,BOOSTER 	,OPENTYPE 	,HERMETIC 	,SEMIHERMETIC 	,WELDEDSHELLHERMETIC 	,ROLLINGPISTON 	,ROTARYVANE 	,SINGLESCREW 	,TWINSCREW 	,USERDEFINED 	,NOTDEFINED)',
    IfcCondenserTypeEnum: 'ENUMERATION OF 	(AIRCOOLED 	,EVAPORATIVECOOLED 	,WATERCOOLED 	,WATERCOOLEDBRAZEDPLATE 	,WATERCOOLEDSHELLCOIL 	,WATERCOOLEDSHELLTUBE 	,WATERCOOLEDTUBEINTUBE 	,USERDEFINED 	,NOTDEFINED)',
    IfcConnectionTypeEnum: 'ENUMERATION OF 	(ATPATH 	,ATSTART 	,ATEND 	,NOTDEFINED)',
    IfcConstraintEnum: 'ENUMERATION OF 	(HARD 	,SOFT 	,ADVISORY 	,USERDEFINED 	,NOTDEFINED)',
    IfcConstructionEquipmentResourceTypeEnum: 'ENUMERATION OF 	(DEMOLISHING 	,EARTHMOVING 	,ERECTING 	,HEATING 	,LIGHTING 	,PAVING 	,PUMPING 	,TRANSPORTING 	,USERDEFINED 	,NOTDEFINED)',
    IfcConstructionMaterialResourceTypeEnum: 'ENUMERATION OF 	(AGGREGATES 	,CONCRETE 	,DRYWALL 	,FUEL 	,GYPSUM 	,MASONRY 	,METAL 	,PLASTIC 	,WOOD 	,NOTDEFINED 	,USERDEFINED)',
    IfcConstructionProductResourceTypeEnum: 'ENUMERATION OF 	(ASSEMBLY 	,FORMWORK 	,USERDEFINED 	,NOTDEFINED)',
    IfcControllerTypeEnum: 'ENUMERATION OF 	(FLOATING 	,PROGRAMMABLE 	,PROPORTIONAL 	,MULTIPOSITION 	,TWOPOSITION 	,USERDEFINED 	,NOTDEFINED)',
    IfcCooledBeamTypeEnum: 'ENUMERATION OF 	(ACTIVE 	,PASSIVE 	,USERDEFINED 	,NOTDEFINED)',
    IfcCoolingTowerTypeEnum: 'ENUMERATION OF 	(NATURALDRAFT 	,MECHANICALINDUCEDDRAFT 	,MECHANICALFORCEDDRAFT 	,USERDEFINED 	,NOTDEFINED)',
    IfcCostItemTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcCostScheduleTypeEnum: 'ENUMERATION OF 	(BUDGET 	,COSTPLAN 	,ESTIMATE 	,TENDER 	,PRICEDBILLOFQUANTITIES 	,UNPRICEDBILLOFQUANTITIES 	,SCHEDULEOFRATES 	,USERDEFINED 	,NOTDEFINED)',
    IfcCoveringTypeEnum: 'ENUMERATION OF 	(CEILING 	,FLOORING 	,CLADDING 	,ROOFING 	,MOLDING 	,SKIRTINGBOARD 	,INSULATION 	,MEMBRANE 	,SLEEVING 	,WRAPPING 	,USERDEFINED 	,NOTDEFINED)',
    IfcCrewResourceTypeEnum: 'ENUMERATION OF 	(OFFICE 	,SITE 	,USERDEFINED 	,NOTDEFINED)',
    IfcCurtainWallTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcCurveInterpolationEnum: 'ENUMERATION OF 	(LINEAR 	,LOG_LINEAR 	,LOG_LOG 	,NOTDEFINED)',
    IfcDamperTypeEnum: 'ENUMERATION OF 	(BACKDRAFTDAMPER 	,BALANCINGDAMPER 	,BLASTDAMPER 	,CONTROLDAMPER 	,FIREDAMPER 	,FIRESMOKEDAMPER 	,FUMEHOODEXHAUST 	,GRAVITYDAMPER 	,GRAVITYRELIEFDAMPER 	,RELIEFDAMPER 	,SMOKEDAMPER 	,USERDEFINED 	,NOTDEFINED)',
    IfcDataOriginEnum: 'ENUMERATION OF 	(MEASURED 	,PREDICTED 	,SIMULATED 	,USERDEFINED 	,NOTDEFINED)',
    IfcDerivedUnitEnum: 'ENUMERATION OF 	(ANGULARVELOCITYUNIT 	,AREADENSITYUNIT 	,COMPOUNDPLANEANGLEUNIT 	,DYNAMICVISCOSITYUNIT 	,HEATFLUXDENSITYUNIT 	,INTEGERCOUNTRATEUNIT 	,ISOTHERMALMOISTURECAPACITYUNIT 	,KINEMATICVISCOSITYUNIT 	,LINEARVELOCITYUNIT 	,MASSDENSITYUNIT 	,MASSFLOWRATEUNIT 	,MOISTUREDIFFUSIVITYUNIT 	,MOLECULARWEIGHTUNIT 	,SPECIFICHEATCAPACITYUNIT 	,THERMALADMITTANCEUNIT 	,THERMALCONDUCTANCEUNIT 	,THERMALRESISTANCEUNIT 	,THERMALTRANSMITTANCEUNIT 	,VAPORPERMEABILITYUNIT 	,VOLUMETRICFLOWRATEUNIT 	,ROTATIONALFREQUENCYUNIT 	,TORQUEUNIT 	,MOMENTOFINERTIAUNIT 	,LINEARMOMENTUNIT 	,LINEARFORCEUNIT 	,PLANARFORCEUNIT 	,MODULUSOFELASTICITYUNIT 	,SHEARMODULUSUNIT 	,LINEARSTIFFNESSUNIT 	,ROTATIONALSTIFFNESSUNIT 	,MODULUSOFSUBGRADEREACTIONUNIT 	,ACCELERATIONUNIT 	,CURVATUREUNIT 	,HEATINGVALUEUNIT 	,IONCONCENTRATIONUNIT 	,LUMINOUSINTENSITYDISTRIBUTIONUNIT 	,MASSPERLENGTHUNIT 	,MODULUSOFLINEARSUBGRADEREACTIONUNIT 	,MODULUSOFROTATIONALSUBGRADEREACTIONUNIT 	,PHUNIT 	,ROTATIONALMASSUNIT 	,SECTIONAREAINTEGRALUNIT 	,SECTIONMODULUSUNIT 	,SOUNDPOWERLEVELUNIT 	,SOUNDPOWERUNIT 	,SOUNDPRESSURELEVELUNIT 	,SOUNDPRESSUREUNIT 	,TEMPERATUREGRADIENTUNIT 	,TEMPERATURERATEOFCHANGEUNIT 	,THERMALEXPANSIONCOEFFICIENTUNIT 	,WARPINGCONSTANTUNIT 	,WARPINGMOMENTUNIT 	,USERDEFINED)',
    IfcDirectionSenseEnum: 'ENUMERATION OF 	(POSITIVE 	,NEGATIVE)',
    IfcDiscreteAccessoryTypeEnum: 'ENUMERATION OF 	(ANCHORPLATE 	,BRACKET 	,SHOE 	,USERDEFINED 	,NOTDEFINED)',
    IfcDistributionChamberElementTypeEnum: 'ENUMERATION OF 	(FORMEDDUCT 	,INSPECTIONCHAMBER 	,INSPECTIONPIT 	,MANHOLE 	,METERCHAMBER 	,SUMP 	,TRENCH 	,VALVECHAMBER 	,USERDEFINED 	,NOTDEFINED)',
    IfcDistributionPortTypeEnum: 'ENUMERATION OF 	(CABLE 	,CABLECARRIER 	,DUCT 	,PIPE 	,USERDEFINED 	,NOTDEFINED)',
    IfcDistributionSystemEnum: 'ENUMERATION OF 	(AIRCONDITIONING 	,AUDIOVISUAL 	,CHEMICAL 	,CHILLEDWATER 	,COMMUNICATION 	,COMPRESSEDAIR 	,CONDENSERWATER 	,CONTROL 	,CONVEYING 	,DATA 	,DISPOSAL 	,DOMESTICCOLDWATER 	,DOMESTICHOTWATER 	,DRAINAGE 	,EARTHING 	,ELECTRICAL 	,ELECTROACOUSTIC 	,EXHAUST 	,FIREPROTECTION 	,FUEL 	,GAS 	,HAZARDOUS 	,HEATING 	,LIGHTING 	,LIGHTNINGPROTECTION 	,MUNICIPALSOLIDWASTE 	,OIL 	,OPERATIONAL 	,POWERGENERATION 	,RAINWATER 	,REFRIGERATION 	,SECURITY 	,SEWAGE 	,SIGNAL 	,STORMWATER 	,TELEPHONE 	,TV 	,VACUUM 	,VENT 	,VENTILATION 	,WASTEWATER 	,WATERSUPPLY 	,USERDEFINED 	,NOTDEFINED)',
    IfcDocumentConfidentialityEnum: 'ENUMERATION OF 	(PUBLIC 	,RESTRICTED 	,CONFIDENTIAL 	,PERSONAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcDocumentStatusEnum: 'ENUMERATION OF 	(DRAFT 	,FINALDRAFT 	,FINAL 	,REVISION 	,NOTDEFINED)',
    IfcDoorPanelOperationEnum: 'ENUMERATION OF 	(SWINGING 	,DOUBLE_ACTING 	,SLIDING 	,FOLDING 	,REVOLVING 	,ROLLINGUP 	,FIXEDPANEL 	,USERDEFINED 	,NOTDEFINED)',
    IfcDoorPanelPositionEnum: 'ENUMERATION OF 	(LEFT 	,MIDDLE 	,RIGHT 	,NOTDEFINED)',
    IfcDoorStyleConstructionEnum: 'ENUMERATION OF 	(ALUMINIUM 	,HIGH_GRADE_STEEL 	,STEEL 	,WOOD 	,ALUMINIUM_WOOD 	,ALUMINIUM_PLASTIC 	,PLASTIC 	,USERDEFINED 	,NOTDEFINED)',
    IfcDoorStyleOperationEnum: 'ENUMERATION OF 	(SINGLE_SWING_LEFT 	,SINGLE_SWING_RIGHT 	,DOUBLE_DOOR_SINGLE_SWING 	,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT 	,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT 	,DOUBLE_SWING_LEFT 	,DOUBLE_SWING_RIGHT 	,DOUBLE_DOOR_DOUBLE_SWING 	,SLIDING_TO_LEFT 	,SLIDING_TO_RIGHT 	,DOUBLE_DOOR_SLIDING 	,FOLDING_TO_LEFT 	,FOLDING_TO_RIGHT 	,DOUBLE_DOOR_FOLDING 	,REVOLVING 	,ROLLINGUP 	,USERDEFINED 	,NOTDEFINED)',
    IfcDoorTypeEnum: 'ENUMERATION OF 	(DOOR 	,GATE 	,TRAPDOOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcDoorTypeOperationEnum: 'ENUMERATION OF 	(SINGLE_SWING_LEFT 	,SINGLE_SWING_RIGHT 	,DOUBLE_DOOR_SINGLE_SWING 	,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT 	,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT 	,DOUBLE_SWING_LEFT 	,DOUBLE_SWING_RIGHT 	,DOUBLE_DOOR_DOUBLE_SWING 	,SLIDING_TO_LEFT 	,SLIDING_TO_RIGHT 	,DOUBLE_DOOR_SLIDING 	,FOLDING_TO_LEFT 	,FOLDING_TO_RIGHT 	,DOUBLE_DOOR_FOLDING 	,REVOLVING 	,ROLLINGUP 	,SWING_FIXED_LEFT 	,SWING_FIXED_RIGHT 	,USERDEFINED 	,NOTDEFINED)',
    IfcDuctFittingTypeEnum: 'ENUMERATION OF 	(BEND 	,CONNECTOR 	,ENTRY 	,EXIT 	,JUNCTION 	,OBSTRUCTION 	,TRANSITION 	,USERDEFINED 	,NOTDEFINED)',
    IfcDuctSegmentTypeEnum: 'ENUMERATION OF 	(RIGIDSEGMENT 	,FLEXIBLESEGMENT 	,USERDEFINED 	,NOTDEFINED)',
    IfcDuctSilencerTypeEnum: 'ENUMERATION OF 	(FLATOVAL 	,RECTANGULAR 	,ROUND 	,USERDEFINED 	,NOTDEFINED)',
    IfcElectricApplianceTypeEnum: 'ENUMERATION OF 	(DISHWASHER 	,ELECTRICCOOKER 	,FREESTANDINGELECTRICHEATER 	,FREESTANDINGFAN 	,FREESTANDINGWATERHEATER 	,FREESTANDINGWATERCOOLER 	,FREEZER 	,FRIDGE_FREEZER 	,HANDDRYER 	,KITCHENMACHINE 	,MICROWAVE 	,PHOTOCOPIER 	,REFRIGERATOR 	,TUMBLEDRYER 	,VENDINGMACHINE 	,WASHINGMACHINE 	,USERDEFINED 	,NOTDEFINED)',
    IfcElectricDistributionBoardTypeEnum: 'ENUMERATION OF 	(CONSUMERUNIT 	,DISTRIBUTIONBOARD 	,MOTORCONTROLCENTRE 	,SWITCHBOARD 	,USERDEFINED 	,NOTDEFINED)',
    IfcElectricFlowStorageDeviceTypeEnum: 'ENUMERATION OF 	(BATTERY 	,CAPACITORBANK 	,HARMONICFILTER 	,INDUCTORBANK 	,UPS 	,USERDEFINED 	,NOTDEFINED)',
    IfcElectricGeneratorTypeEnum: 'ENUMERATION OF 	(CHP 	,ENGINEGENERATOR 	,STANDALONE 	,USERDEFINED 	,NOTDEFINED)',
    IfcElectricMotorTypeEnum: 'ENUMERATION OF 	(DC 	,INDUCTION 	,POLYPHASE 	,RELUCTANCESYNCHRONOUS 	,SYNCHRONOUS 	,USERDEFINED 	,NOTDEFINED)',
    IfcElectricTimeControlTypeEnum: 'ENUMERATION OF 	(TIMECLOCK 	,TIMEDELAY 	,RELAY 	,USERDEFINED 	,NOTDEFINED)',
    IfcElementAssemblyTypeEnum: 'ENUMERATION OF 	(ACCESSORY_ASSEMBLY 	,ARCH 	,BEAM_GRID 	,BRACED_FRAME 	,GIRDER 	,REINFORCEMENT_UNIT 	,RIGID_FRAME 	,SLAB_FIELD 	,TRUSS 	,USERDEFINED 	,NOTDEFINED)',
    IfcElementCompositionEnum: 'ENUMERATION OF 	(COMPLEX 	,ELEMENT 	,PARTIAL)',
    IfcEngineTypeEnum: 'ENUMERATION OF 	(EXTERNALCOMBUSTION 	,INTERNALCOMBUSTION 	,USERDEFINED 	,NOTDEFINED)',
    IfcEvaporativeCoolerTypeEnum: 'ENUMERATION OF 	(DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER 	,DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER 	,DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER 	,DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER 	,DIRECTEVAPORATIVEAIRWASHER 	,INDIRECTEVAPORATIVEPACKAGEAIRCOOLER 	,INDIRECTEVAPORATIVEWETCOIL 	,INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER 	,INDIRECTDIRECTCOMBINATION 	,USERDEFINED 	,NOTDEFINED)',
    IfcEvaporatorTypeEnum: 'ENUMERATION OF 	(DIRECTEXPANSION 	,DIRECTEXPANSIONSHELLANDTUBE 	,DIRECTEXPANSIONTUBEINTUBE 	,DIRECTEXPANSIONBRAZEDPLATE 	,FLOODEDSHELLANDTUBE 	,SHELLANDCOIL 	,USERDEFINED 	,NOTDEFINED)',
    IfcEventTriggerTypeEnum: 'ENUMERATION OF 	(EVENTRULE 	,EVENTMESSAGE 	,EVENTTIME 	,EVENTCOMPLEX 	,USERDEFINED 	,NOTDEFINED)',
    IfcEventTypeEnum: 'ENUMERATION OF 	(STARTEVENT 	,ENDEVENT 	,INTERMEDIATEEVENT 	,USERDEFINED 	,NOTDEFINED)',
    IfcExternalSpatialElementTypeEnum: 'ENUMERATION OF 	(EXTERNAL 	,EXTERNAL_EARTH 	,EXTERNAL_WATER 	,EXTERNAL_FIRE 	,USERDEFINED 	,NOTDEFINED)',
    IfcFanTypeEnum: 'ENUMERATION OF 	(CENTRIFUGALFORWARDCURVED 	,CENTRIFUGALRADIAL 	,CENTRIFUGALBACKWARDINCLINEDCURVED 	,CENTRIFUGALAIRFOIL 	,TUBEAXIAL 	,VANEAXIAL 	,PROPELLORAXIAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcFastenerTypeEnum: 'ENUMERATION OF 	(GLUE 	,MORTAR 	,WELD 	,USERDEFINED 	,NOTDEFINED)',
    IfcFilterTypeEnum: 'ENUMERATION OF 	(AIRPARTICLEFILTER 	,COMPRESSEDAIRFILTER 	,ODORFILTER 	,OILFILTER 	,STRAINER 	,WATERFILTER 	,USERDEFINED 	,NOTDEFINED)',
    IfcFireSuppressionTerminalTypeEnum: 'ENUMERATION OF 	(BREECHINGINLET 	,FIREHYDRANT 	,HOSEREEL 	,SPRINKLER 	,SPRINKLERDEFLECTOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcFlowDirectionEnum: 'ENUMERATION OF 	(SOURCE 	,SINK 	,SOURCEANDSINK 	,NOTDEFINED)',
    IfcFlowInstrumentTypeEnum: 'ENUMERATION OF 	(PRESSUREGAUGE 	,THERMOMETER 	,AMMETER 	,FREQUENCYMETER 	,POWERFACTORMETER 	,PHASEANGLEMETER 	,VOLTMETER_PEAK 	,VOLTMETER_RMS 	,USERDEFINED 	,NOTDEFINED)',
    IfcFlowMeterTypeEnum: 'ENUMERATION OF 	(ENERGYMETER 	,GASMETER 	,OILMETER 	,WATERMETER 	,USERDEFINED 	,NOTDEFINED)',
    IfcFootingTypeEnum: 'ENUMERATION OF 	(CAISSON_FOUNDATION 	,FOOTING_BEAM 	,PAD_FOOTING 	,PILE_CAP 	,STRIP_FOOTING 	,USERDEFINED 	,NOTDEFINED)',
    IfcFurnitureTypeEnum: 'ENUMERATION OF 	(CHAIR 	,TABLE 	,DESK 	,BED 	,FILECABINET 	,SHELF 	,SOFA 	,USERDEFINED 	,NOTDEFINED)',
    IfcGeographicElementTypeEnum: 'ENUMERATION OF 	(TERRAIN 	,USERDEFINED 	,NOTDEFINED)',
    IfcGeometricProjectionEnum: 'ENUMERATION OF 	(GRAPH_VIEW 	,SKETCH_VIEW 	,MODEL_VIEW 	,PLAN_VIEW 	,REFLECTED_PLAN_VIEW 	,SECTION_VIEW 	,ELEVATION_VIEW 	,USERDEFINED 	,NOTDEFINED)',
    IfcGlobalOrLocalEnum: 'ENUMERATION OF 	(GLOBAL_COORDS 	,LOCAL_COORDS)',
    IfcGridTypeEnum: 'ENUMERATION OF 	(RECTANGULAR 	,RADIAL 	,TRIANGULAR 	,IRREGULAR 	,USERDEFINED 	,NOTDEFINED)',
    IfcHeatExchangerTypeEnum: 'ENUMERATION OF 	(PLATE 	,SHELLANDTUBE 	,USERDEFINED 	,NOTDEFINED)',
    IfcHumidifierTypeEnum: 'ENUMERATION OF 	(STEAMINJECTION 	,ADIABATICAIRWASHER 	,ADIABATICPAN 	,ADIABATICWETTEDELEMENT 	,ADIABATICATOMIZING 	,ADIABATICULTRASONIC 	,ADIABATICRIGIDMEDIA 	,ADIABATICCOMPRESSEDAIRNOZZLE 	,ASSISTEDELECTRIC 	,ASSISTEDNATURALGAS 	,ASSISTEDPROPANE 	,ASSISTEDBUTANE 	,ASSISTEDSTEAM 	,USERDEFINED 	,NOTDEFINED)',
    IfcInterceptorTypeEnum: 'ENUMERATION OF 	(CYCLONIC 	,GREASE 	,OIL 	,PETROL 	,USERDEFINED 	,NOTDEFINED)',
    IfcInternalOrExternalEnum: 'ENUMERATION OF 	(INTERNAL 	,EXTERNAL 	,EXTERNAL_EARTH 	,EXTERNAL_WATER 	,EXTERNAL_FIRE 	,NOTDEFINED)',
    IfcInventoryTypeEnum: 'ENUMERATION OF 	(ASSETINVENTORY 	,SPACEINVENTORY 	,FURNITUREINVENTORY 	,USERDEFINED 	,NOTDEFINED)',
    IfcJunctionBoxTypeEnum: 'ENUMERATION OF 	(DATA 	,POWER 	,USERDEFINED 	,NOTDEFINED)',
    IfcKnotType: 'ENUMERATION OF 	(UNIFORM_KNOTS 	,QUASI_UNIFORM_KNOTS 	,PIECEWISE_BEZIER_KNOTS 	,UNSPECIFIED)',
    IfcLaborResourceTypeEnum: 'ENUMERATION OF 	(ADMINISTRATION 	,CARPENTRY 	,CLEANING 	,CONCRETE 	,DRYWALL 	,ELECTRIC 	,FINISHING 	,FLOORING 	,GENERAL 	,HVAC 	,LANDSCAPING 	,MASONRY 	,PAINTING 	,PAVING 	,PLUMBING 	,ROOFING 	,SITEGRADING 	,STEELWORK 	,SURVEYING 	,USERDEFINED 	,NOTDEFINED)',
    IfcLampTypeEnum: 'ENUMERATION OF 	(COMPACTFLUORESCENT 	,FLUORESCENT 	,HALOGEN 	,HIGHPRESSUREMERCURY 	,HIGHPRESSURESODIUM 	,LED 	,METALHALIDE 	,OLED 	,TUNGSTENFILAMENT 	,USERDEFINED 	,NOTDEFINED)',
    IfcLayerSetDirectionEnum: 'ENUMERATION OF 	(AXIS1 	,AXIS2 	,AXIS3)',
    IfcLightDistributionCurveEnum: 'ENUMERATION OF 	(TYPE_A 	,TYPE_B 	,TYPE_C 	,NOTDEFINED)',
    IfcLightEmissionSourceEnum: 'ENUMERATION OF 	(COMPACTFLUORESCENT 	,FLUORESCENT 	,HIGHPRESSUREMERCURY 	,HIGHPRESSURESODIUM 	,LIGHTEMITTINGDIODE 	,LOWPRESSURESODIUM 	,LOWVOLTAGEHALOGEN 	,MAINVOLTAGEHALOGEN 	,METALHALIDE 	,TUNGSTENFILAMENT 	,NOTDEFINED)',
    IfcLightFixtureTypeEnum: 'ENUMERATION OF 	(POINTSOURCE 	,DIRECTIONSOURCE 	,SECURITYLIGHTING 	,USERDEFINED 	,NOTDEFINED)',
    IfcLoadGroupTypeEnum: 'ENUMERATION OF 	(LOAD_GROUP 	,LOAD_CASE 	,LOAD_COMBINATION 	,USERDEFINED 	,NOTDEFINED)',
    IfcLogicalOperatorEnum: 'ENUMERATION OF 	(LOGICALAND 	,LOGICALOR 	,LOGICALXOR 	,LOGICALNOTAND 	,LOGICALNOTOR)',
    IfcMechanicalFastenerTypeEnum: 'ENUMERATION OF 	(ANCHORBOLT 	,BOLT 	,DOWEL 	,NAIL 	,NAILPLATE 	,RIVET 	,SCREW 	,SHEARCONNECTOR 	,STAPLE 	,STUDSHEARCONNECTOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcMedicalDeviceTypeEnum: 'ENUMERATION OF 	(AIRSTATION 	,FEEDAIRUNIT 	,OXYGENGENERATOR 	,OXYGENPLANT 	,VACUUMSTATION 	,USERDEFINED 	,NOTDEFINED)',
    IfcMemberTypeEnum: 'ENUMERATION OF 	(BRACE 	,CHORD 	,COLLAR 	,MEMBER 	,MULLION 	,PLATE 	,POST 	,PURLIN 	,RAFTER 	,STRINGER 	,STRUT 	,STUD 	,USERDEFINED 	,NOTDEFINED)',
    IfcMotorConnectionTypeEnum: 'ENUMERATION OF 	(BELTDRIVE 	,COUPLING 	,DIRECTDRIVE 	,USERDEFINED 	,NOTDEFINED)',
    IfcNullStyle: 'ENUMERATION OF 	(NULL)',
    IfcObjectTypeEnum: 'ENUMERATION OF 	(PRODUCT 	,PROCESS 	,CONTROL 	,RESOURCE 	,ACTOR 	,GROUP 	,PROJECT 	,NOTDEFINED)',
    IfcObjectiveEnum: 'ENUMERATION OF 	(CODECOMPLIANCE 	,CODEWAIVER 	,DESIGNINTENT 	,EXTERNAL 	,HEALTHANDSAFETY 	,MERGECONFLICT 	,MODELVIEW 	,PARAMETER 	,REQUIREMENT 	,SPECIFICATION 	,TRIGGERCONDITION 	,USERDEFINED 	,NOTDEFINED)',
    IfcOccupantTypeEnum: 'ENUMERATION OF 	(ASSIGNEE 	,ASSIGNOR 	,LESSEE 	,LESSOR 	,LETTINGAGENT 	,OWNER 	,TENANT 	,USERDEFINED 	,NOTDEFINED)',
    IfcOpeningElementTypeEnum: 'ENUMERATION OF 	(OPENING 	,RECESS 	,USERDEFINED 	,NOTDEFINED)',
    IfcOutletTypeEnum: 'ENUMERATION OF 	(AUDIOVISUALOUTLET 	,COMMUNICATIONSOUTLET 	,POWEROUTLET 	,DATAOUTLET 	,TELEPHONEOUTLET 	,USERDEFINED 	,NOTDEFINED)',
    IfcPerformanceHistoryTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcPermeableCoveringOperationEnum: 'ENUMERATION OF 	(GRILL 	,LOUVER 	,SCREEN 	,USERDEFINED 	,NOTDEFINED)',
    IfcPermitTypeEnum: 'ENUMERATION OF 	(ACCESS 	,BUILDING 	,WORK 	,USERDEFINED 	,NOTDEFINED)',
    IfcPhysicalOrVirtualEnum: 'ENUMERATION OF 	(PHYSICAL 	,VIRTUAL 	,NOTDEFINED)',
    IfcPileConstructionEnum: 'ENUMERATION OF 	(CAST_IN_PLACE 	,COMPOSITE 	,PRECAST_CONCRETE 	,PREFAB_STEEL 	,USERDEFINED 	,NOTDEFINED)',
    IfcPileTypeEnum: 'ENUMERATION OF 	(BORED 	,DRIVEN 	,JETGROUTING 	,COHESION 	,FRICTION 	,SUPPORT 	,USERDEFINED 	,NOTDEFINED)',
    IfcPipeFittingTypeEnum: 'ENUMERATION OF 	(BEND 	,CONNECTOR 	,ENTRY 	,EXIT 	,JUNCTION 	,OBSTRUCTION 	,TRANSITION 	,USERDEFINED 	,NOTDEFINED)',
    IfcPipeSegmentTypeEnum: 'ENUMERATION OF 	(CULVERT 	,FLEXIBLESEGMENT 	,RIGIDSEGMENT 	,GUTTER 	,SPOOL 	,USERDEFINED 	,NOTDEFINED)',
    IfcPlateTypeEnum: 'ENUMERATION OF 	(CURTAIN_PANEL 	,SHEET 	,USERDEFINED 	,NOTDEFINED)',
    IfcPreferredSurfaceCurveRepresentation: 'ENUMERATION OF 	(CURVE3D 	,PCURVE_S1 	,PCURVE_S2)',
    IfcProcedureTypeEnum: 'ENUMERATION OF 	(ADVICE_CAUTION 	,ADVICE_NOTE 	,ADVICE_WARNING 	,CALIBRATION 	,DIAGNOSTIC 	,SHUTDOWN 	,STARTUP 	,USERDEFINED 	,NOTDEFINED)',
    IfcProfileTypeEnum: 'ENUMERATION OF 	(CURVE 	,AREA)',
    IfcProjectOrderTypeEnum: 'ENUMERATION OF 	(CHANGEORDER 	,MAINTENANCEWORKORDER 	,MOVEORDER 	,PURCHASEORDER 	,WORKORDER 	,USERDEFINED 	,NOTDEFINED)',
    IfcProjectedOrTrueLengthEnum: 'ENUMERATION OF 	(PROJECTED_LENGTH 	,TRUE_LENGTH)',
    IfcProjectionElementTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcPropertySetTemplateTypeEnum: 'ENUMERATION OF 	(PSET_TYPEDRIVENONLY 	,PSET_TYPEDRIVENOVERRIDE 	,PSET_OCCURRENCEDRIVEN 	,PSET_PERFORMANCEDRIVEN 	,QTO_TYPEDRIVENONLY 	,QTO_TYPEDRIVENOVERRIDE 	,QTO_OCCURRENCEDRIVEN 	,NOTDEFINED)',
    IfcProtectiveDeviceTrippingUnitTypeEnum: 'ENUMERATION OF 	(ELECTRONIC 	,ELECTROMAGNETIC 	,RESIDUALCURRENT 	,THERMAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcProtectiveDeviceTypeEnum: 'ENUMERATION OF 	(CIRCUITBREAKER 	,EARTHLEAKAGECIRCUITBREAKER 	,EARTHINGSWITCH 	,FUSEDISCONNECTOR 	,RESIDUALCURRENTCIRCUITBREAKER 	,RESIDUALCURRENTSWITCH 	,VARISTOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcPumpTypeEnum: 'ENUMERATION OF 	(CIRCULATOR 	,ENDSUCTION 	,SPLITCASE 	,SUBMERSIBLEPUMP 	,SUMPPUMP 	,VERTICALINLINE 	,VERTICALTURBINE 	,USERDEFINED 	,NOTDEFINED)',
    IfcRailingTypeEnum: 'ENUMERATION OF 	(HANDRAIL 	,GUARDRAIL 	,BALUSTRADE 	,USERDEFINED 	,NOTDEFINED)',
    IfcRampFlightTypeEnum: 'ENUMERATION OF 	(STRAIGHT 	,SPIRAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcRampTypeEnum: 'ENUMERATION OF 	(STRAIGHT_RUN_RAMP 	,TWO_STRAIGHT_RUN_RAMP 	,QUARTER_TURN_RAMP 	,TWO_QUARTER_TURN_RAMP 	,HALF_TURN_RAMP 	,SPIRAL_RAMP 	,USERDEFINED 	,NOTDEFINED)',
    IfcRecurrenceTypeEnum: 'ENUMERATION OF 	(DAILY 	,WEEKLY 	,MONTHLY_BY_DAY_OF_MONTH 	,MONTHLY_BY_POSITION 	,BY_DAY_COUNT 	,BY_WEEKDAY_COUNT 	,YEARLY_BY_DAY_OF_MONTH 	,YEARLY_BY_POSITION)',
    IfcReflectanceMethodEnum: 'ENUMERATION OF 	(BLINN 	,FLAT 	,GLASS 	,MATT 	,METAL 	,MIRROR 	,PHONG 	,PLASTIC 	,STRAUSS 	,NOTDEFINED)',
    IfcReinforcingBarRoleEnum: 'ENUMERATION OF 	(MAIN 	,SHEAR 	,LIGATURE 	,STUD 	,PUNCHING 	,EDGE 	,RING 	,ANCHORING 	,USERDEFINED 	,NOTDEFINED)',
    IfcReinforcingBarSurfaceEnum: 'ENUMERATION OF 	(PLAIN 	,TEXTURED)',
    IfcReinforcingBarTypeEnum: 'ENUMERATION OF 	(ANCHORING 	,EDGE 	,LIGATURE 	,MAIN 	,PUNCHING 	,RING 	,SHEAR 	,STUD 	,USERDEFINED 	,NOTDEFINED)',
    IfcReinforcingMeshTypeEnum: 'ENUMERATION OF 	(USERDEFINED 	,NOTDEFINED)',
    IfcRoleEnum: 'ENUMERATION OF 	(SUPPLIER 	,MANUFACTURER 	,CONTRACTOR 	,SUBCONTRACTOR 	,ARCHITECT 	,STRUCTURALENGINEER 	,COSTENGINEER 	,CLIENT 	,BUILDINGOWNER 	,BUILDINGOPERATOR 	,MECHANICALENGINEER 	,ELECTRICALENGINEER 	,PROJECTMANAGER 	,FACILITIESMANAGER 	,CIVILENGINEER 	,COMMISSIONINGENGINEER 	,ENGINEER 	,OWNER 	,CONSULTANT 	,CONSTRUCTIONMANAGER 	,FIELDCONSTRUCTIONMANAGER 	,RESELLER 	,USERDEFINED)',
    IfcRoofTypeEnum: 'ENUMERATION OF 	(FLAT_ROOF 	,SHED_ROOF 	,GABLE_ROOF 	,HIP_ROOF 	,HIPPED_GABLE_ROOF 	,GAMBREL_ROOF 	,MANSARD_ROOF 	,BARREL_ROOF 	,RAINBOW_ROOF 	,BUTTERFLY_ROOF 	,PAVILION_ROOF 	,DOME_ROOF 	,FREEFORM 	,USERDEFINED 	,NOTDEFINED)',
    IfcSIPrefix: 'ENUMERATION OF 	(EXA 	,PETA 	,TERA 	,GIGA 	,MEGA 	,KILO 	,HECTO 	,DECA 	,DECI 	,CENTI 	,MILLI 	,MICRO 	,NANO 	,PICO 	,FEMTO 	,ATTO)',
    IfcSIUnitName: 'ENUMERATION OF 	(AMPERE 	,BECQUEREL 	,CANDELA 	,COULOMB 	,CUBIC_METRE 	,DEGREE_CELSIUS 	,FARAD 	,GRAM 	,GRAY 	,HENRY 	,HERTZ 	,JOULE 	,KELVIN 	,LUMEN 	,LUX 	,METRE 	,MOLE 	,NEWTON 	,OHM 	,PASCAL 	,RADIAN 	,SECOND 	,SIEMENS 	,SIEVERT 	,SQUARE_METRE 	,STERADIAN 	,TESLA 	,VOLT 	,WATT 	,WEBER)',
    IfcSanitaryTerminalTypeEnum: 'ENUMERATION OF 	(BATH 	,BIDET 	,CISTERN 	,SHOWER 	,SINK 	,SANITARYFOUNTAIN 	,TOILETPAN 	,URINAL 	,WASHHANDBASIN 	,WCSEAT 	,USERDEFINED 	,NOTDEFINED)',
    IfcSectionTypeEnum: 'ENUMERATION OF 	(UNIFORM 	,TAPERED)',
    IfcSensorTypeEnum: 'ENUMERATION OF 	(COSENSOR 	,CO2SENSOR 	,CONDUCTANCESENSOR 	,CONTACTSENSOR 	,FIRESENSOR 	,FLOWSENSOR 	,FROSTSENSOR 	,GASSENSOR 	,HEATSENSOR 	,HUMIDITYSENSOR 	,IDENTIFIERSENSOR 	,IONCONCENTRATIONSENSOR 	,LEVELSENSOR 	,LIGHTSENSOR 	,MOISTURESENSOR 	,MOVEMENTSENSOR 	,PHSENSOR 	,PRESSURESENSOR 	,RADIATIONSENSOR 	,RADIOACTIVITYSENSOR 	,SMOKESENSOR 	,SOUNDSENSOR 	,TEMPERATURESENSOR 	,WINDSENSOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcSequenceEnum: 'ENUMERATION OF 	(START_START 	,START_FINISH 	,FINISH_START 	,FINISH_FINISH 	,USERDEFINED 	,NOTDEFINED)',
    IfcShadingDeviceTypeEnum: 'ENUMERATION OF 	(JALOUSIE 	,SHUTTER 	,AWNING 	,USERDEFINED 	,NOTDEFINED)',
    IfcSimplePropertyTemplateTypeEnum: 'ENUMERATION OF 	(P_SINGLEVALUE 	,P_ENUMERATEDVALUE 	,P_BOUNDEDVALUE 	,P_LISTVALUE 	,P_TABLEVALUE 	,P_REFERENCEVALUE 	,Q_LENGTH 	,Q_AREA 	,Q_VOLUME 	,Q_COUNT 	,Q_WEIGHT 	,Q_TIME)',
    IfcSlabTypeEnum: 'ENUMERATION OF 	(FLOOR 	,ROOF 	,LANDING 	,BASESLAB 	,USERDEFINED 	,NOTDEFINED)',
    IfcSolarDeviceTypeEnum: 'ENUMERATION OF 	(SOLARCOLLECTOR 	,SOLARPANEL 	,USERDEFINED 	,NOTDEFINED)',
    IfcSpaceHeaterTypeEnum: 'ENUMERATION OF 	(CONVECTOR 	,RADIATOR 	,USERDEFINED 	,NOTDEFINED)',
    IfcSpaceTypeEnum: 'ENUMERATION OF 	(SPACE 	,PARKING 	,GFA 	,INTERNAL 	,EXTERNAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcSpatialZoneTypeEnum: 'ENUMERATION OF 	(CONSTRUCTION 	,FIRESAFETY 	,LIGHTING 	,OCCUPANCY 	,SECURITY 	,THERMAL 	,TRANSPORT 	,VENTILATION 	,USERDEFINED 	,NOTDEFINED)',
    IfcStackTerminalTypeEnum: 'ENUMERATION OF 	(BIRDCAGE 	,COWL 	,RAINWATERHOPPER 	,USERDEFINED 	,NOTDEFINED)',
    IfcStairFlightTypeEnum: 'ENUMERATION OF 	(STRAIGHT 	,WINDER 	,SPIRAL 	,CURVED 	,FREEFORM 	,USERDEFINED 	,NOTDEFINED)',
    IfcStairTypeEnum: 'ENUMERATION OF 	(STRAIGHT_RUN_STAIR 	,TWO_STRAIGHT_RUN_STAIR 	,QUARTER_WINDING_STAIR 	,QUARTER_TURN_STAIR 	,HALF_WINDING_STAIR 	,HALF_TURN_STAIR 	,TWO_QUARTER_WINDING_STAIR 	,TWO_QUARTER_TURN_STAIR 	,THREE_QUARTER_WINDING_STAIR 	,THREE_QUARTER_TURN_STAIR 	,SPIRAL_STAIR 	,DOUBLE_RETURN_STAIR 	,CURVED_RUN_STAIR 	,TWO_CURVED_RUN_STAIR 	,USERDEFINED 	,NOTDEFINED)',
    IfcStateEnum: 'ENUMERATION OF 	(READWRITE 	,READONLY 	,LOCKED 	,READWRITELOCKED 	,READONLYLOCKED)',
    IfcStructuralCurveActivityTypeEnum: 'ENUMERATION OF 	(CONST 	,LINEAR 	,POLYGONAL 	,EQUIDISTANT 	,SINUS 	,PARABOLA 	,DISCRETE 	,USERDEFINED 	,NOTDEFINED)',
    IfcStructuralCurveMemberTypeEnum: 'ENUMERATION OF 	(RIGID_JOINED_MEMBER 	,PIN_JOINED_MEMBER 	,CABLE 	,TENSION_MEMBER 	,COMPRESSION_MEMBER 	,USERDEFINED 	,NOTDEFINED)',
    IfcStructuralSurfaceActivityTypeEnum: 'ENUMERATION OF 	(CONST 	,BILINEAR 	,DISCRETE 	,ISOCONTOUR 	,USERDEFINED 	,NOTDEFINED)',
    IfcStructuralSurfaceMemberTypeEnum: 'ENUMERATION OF 	(BENDING_ELEMENT 	,MEMBRANE_ELEMENT 	,SHELL 	,USERDEFINED 	,NOTDEFINED)',
    IfcSubContractResourceTypeEnum: 'ENUMERATION OF 	(PURCHASE 	,WORK 	,USERDEFINED 	,NOTDEFINED)',
    IfcSurfaceFeatureTypeEnum: 'ENUMERATION OF 	(MARK 	,TAG 	,TREATMENT 	,USERDEFINED 	,NOTDEFINED)',
    IfcSurfaceSide: 'ENUMERATION OF 	(POSITIVE 	,NEGATIVE 	,BOTH)',
    IfcSwitchingDeviceTypeEnum: 'ENUMERATION OF 	(CONTACTOR 	,DIMMERSWITCH 	,EMERGENCYSTOP 	,KEYPAD 	,MOMENTARYSWITCH 	,SELECTORSWITCH 	,STARTER 	,SWITCHDISCONNECTOR 	,TOGGLESWITCH 	,USERDEFINED 	,NOTDEFINED)',
    IfcSystemFurnitureElementTypeEnum: 'ENUMERATION OF 	(PANEL 	,WORKSURFACE 	,USERDEFINED 	,NOTDEFINED)',
    IfcTankTypeEnum: 'ENUMERATION OF 	(BASIN 	,BREAKPRESSURE 	,EXPANSION 	,FEEDANDEXPANSION 	,PRESSUREVESSEL 	,STORAGE 	,VESSEL 	,USERDEFINED 	,NOTDEFINED)',
    IfcTaskDurationEnum: 'ENUMERATION OF 	(ELAPSEDTIME 	,WORKTIME 	,NOTDEFINED)',
    IfcTaskTypeEnum: 'ENUMERATION OF 	(ATTENDANCE 	,CONSTRUCTION 	,DEMOLITION 	,DISMANTLE 	,DISPOSAL 	,INSTALLATION 	,LOGISTIC 	,MAINTENANCE 	,MOVE 	,OPERATION 	,REMOVAL 	,RENOVATION 	,USERDEFINED 	,NOTDEFINED)',
    IfcTendonAnchorTypeEnum: 'ENUMERATION OF 	(COUPLER 	,FIXED_END 	,TENSIONING_END 	,USERDEFINED 	,NOTDEFINED)',
    IfcTendonTypeEnum: 'ENUMERATION OF 	(BAR 	,COATED 	,STRAND 	,WIRE 	,USERDEFINED 	,NOTDEFINED)',
    IfcTextPath: 'ENUMERATION OF 	(LEFT 	,RIGHT 	,UP 	,DOWN)',
    IfcTimeSeriesDataTypeEnum: 'ENUMERATION OF 	(CONTINUOUS 	,DISCRETE 	,DISCRETEBINARY 	,PIECEWISEBINARY 	,PIECEWISECONSTANT 	,PIECEWISECONTINUOUS 	,NOTDEFINED)',
    IfcTransformerTypeEnum: 'ENUMERATION OF 	(CURRENT 	,FREQUENCY 	,INVERTER 	,RECTIFIER 	,VOLTAGE 	,USERDEFINED 	,NOTDEFINED)',
    IfcTransitionCode: 'ENUMERATION OF 	(DISCONTINUOUS 	,CONTINUOUS 	,CONTSAMEGRADIENT 	,CONTSAMEGRADIENTSAMECURVATURE)',
    IfcTransportElementTypeEnum: 'ENUMERATION OF 	(ELEVATOR 	,ESCALATOR 	,MOVINGWALKWAY 	,CRANEWAY 	,LIFTINGGEAR 	,USERDEFINED 	,NOTDEFINED)',
    IfcTrimmingPreference: 'ENUMERATION OF 	(CARTESIAN 	,PARAMETER 	,UNSPECIFIED)',
    IfcTubeBundleTypeEnum: 'ENUMERATION OF 	(FINNED 	,USERDEFINED 	,NOTDEFINED)',
    IfcUnitEnum: 'ENUMERATION OF 	(ABSORBEDDOSEUNIT 	,AMOUNTOFSUBSTANCEUNIT 	,AREAUNIT 	,DOSEEQUIVALENTUNIT 	,ELECTRICCAPACITANCEUNIT 	,ELECTRICCHARGEUNIT 	,ELECTRICCONDUCTANCEUNIT 	,ELECTRICCURRENTUNIT 	,ELECTRICRESISTANCEUNIT 	,ELECTRICVOLTAGEUNIT 	,ENERGYUNIT 	,FORCEUNIT 	,FREQUENCYUNIT 	,ILLUMINANCEUNIT 	,INDUCTANCEUNIT 	,LENGTHUNIT 	,LUMINOUSFLUXUNIT 	,LUMINOUSINTENSITYUNIT 	,MAGNETICFLUXDENSITYUNIT 	,MAGNETICFLUXUNIT 	,MASSUNIT 	,PLANEANGLEUNIT 	,POWERUNIT 	,PRESSUREUNIT 	,RADIOACTIVITYUNIT 	,SOLIDANGLEUNIT 	,THERMODYNAMICTEMPERATUREUNIT 	,TIMEUNIT 	,VOLUMEUNIT 	,USERDEFINED)',
    IfcUnitaryControlElementTypeEnum: 'ENUMERATION OF 	(ALARMPANEL 	,CONTROLPANEL 	,GASDETECTIONPANEL 	,INDICATORPANEL 	,MIMICPANEL 	,HUMIDISTAT 	,THERMOSTAT 	,WEATHERSTATION 	,USERDEFINED 	,NOTDEFINED)',
    IfcUnitaryEquipmentTypeEnum: 'ENUMERATION OF 	(AIRHANDLER 	,AIRCONDITIONINGUNIT 	,DEHUMIDIFIER 	,SPLITSYSTEM 	,ROOFTOPUNIT 	,USERDEFINED 	,NOTDEFINED)',
    IfcValveTypeEnum: 'ENUMERATION OF 	(AIRRELEASE 	,ANTIVACUUM 	,CHANGEOVER 	,CHECK 	,COMMISSIONING 	,DIVERTING 	,DRAWOFFCOCK 	,DOUBLECHECK 	,DOUBLEREGULATING 	,FAUCET 	,FLUSHING 	,GASCOCK 	,GASTAP 	,ISOLATING 	,MIXING 	,PRESSUREREDUCING 	,PRESSURERELIEF 	,REGULATING 	,SAFETYCUTOFF 	,STEAMTRAP 	,STOPCOCK 	,USERDEFINED 	,NOTDEFINED)',
    IfcVibrationIsolatorTypeEnum: 'ENUMERATION OF 	(COMPRESSION 	,SPRING 	,USERDEFINED 	,NOTDEFINED)',
    IfcVoidingFeatureTypeEnum: 'ENUMERATION OF 	(CUTOUT 	,NOTCH 	,HOLE 	,MITER 	,CHAMFER 	,EDGE 	,USERDEFINED 	,NOTDEFINED)',
    IfcWallTypeEnum: 'ENUMERATION OF 	(MOVABLE 	,PARAPET 	,PARTITIONING 	,PLUMBINGWALL 	,SHEAR 	,SOLIDWALL 	,STANDARD 	,POLYGONAL 	,ELEMENTEDWALL 	,USERDEFINED 	,NOTDEFINED)',
    IfcWasteTerminalTypeEnum: 'ENUMERATION OF 	(FLOORTRAP 	,FLOORWASTE 	,GULLYSUMP 	,GULLYTRAP 	,ROOFDRAIN 	,WASTEDISPOSALUNIT 	,WASTETRAP 	,USERDEFINED 	,NOTDEFINED)',
    IfcWindowPanelOperationEnum: 'ENUMERATION OF 	(SIDEHUNGRIGHTHAND 	,SIDEHUNGLEFTHAND 	,TILTANDTURNRIGHTHAND 	,TILTANDTURNLEFTHAND 	,TOPHUNG 	,BOTTOMHUNG 	,PIVOTHORIZONTAL 	,PIVOTVERTICAL 	,SLIDINGHORIZONTAL 	,SLIDINGVERTICAL 	,REMOVABLECASEMENT 	,FIXEDCASEMENT 	,OTHEROPERATION 	,NOTDEFINED)',
    IfcWindowPanelPositionEnum: 'ENUMERATION OF 	(LEFT 	,MIDDLE 	,RIGHT 	,BOTTOM 	,TOP 	,NOTDEFINED)',
    IfcWindowStyleConstructionEnum: 'ENUMERATION OF 	(ALUMINIUM 	,HIGH_GRADE_STEEL 	,STEEL 	,WOOD 	,ALUMINIUM_WOOD 	,PLASTIC 	,OTHER_CONSTRUCTION 	,NOTDEFINED)',
    IfcWindowStyleOperationEnum: 'ENUMERATION OF 	(SINGLE_PANEL 	,DOUBLE_PANEL_VERTICAL 	,DOUBLE_PANEL_HORIZONTAL 	,TRIPLE_PANEL_VERTICAL 	,TRIPLE_PANEL_BOTTOM 	,TRIPLE_PANEL_TOP 	,TRIPLE_PANEL_LEFT 	,TRIPLE_PANEL_RIGHT 	,TRIPLE_PANEL_HORIZONTAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcWindowTypeEnum: 'ENUMERATION OF 	(WINDOW 	,SKYLIGHT 	,LIGHTDOME 	,USERDEFINED 	,NOTDEFINED)',
    IfcWindowTypePartitioningEnum: 'ENUMERATION OF 	(SINGLE_PANEL 	,DOUBLE_PANEL_VERTICAL 	,DOUBLE_PANEL_HORIZONTAL 	,TRIPLE_PANEL_VERTICAL 	,TRIPLE_PANEL_BOTTOM 	,TRIPLE_PANEL_TOP 	,TRIPLE_PANEL_LEFT 	,TRIPLE_PANEL_RIGHT 	,TRIPLE_PANEL_HORIZONTAL 	,USERDEFINED 	,NOTDEFINED)',
    IfcWorkCalendarTypeEnum: 'ENUMERATION OF 	(FIRSTSHIFT 	,SECONDSHIFT 	,THIRDSHIFT 	,USERDEFINED 	,NOTDEFINED)',
    IfcWorkPlanTypeEnum: 'ENUMERATION OF 	(ACTUAL 	,BASELINE 	,PLANNED 	,USERDEFINED 	,NOTDEFINED)',
    IfcWorkScheduleTypeEnum: 'ENUMERATION OF 	(ACTUAL 	,BASELINE 	,PLANNED 	,USERDEFINED 	,NOTDEFINED)',
    IfcActorSelect: 'SELECT 	(IfcOrganization 	,IfcPerson 	,IfcPersonAndOrganization)',
    IfcAppliedValueSelect: 'SELECT 	(IfcMeasureWithUnit 	,IfcReference 	,IfcValue)',
    IfcAxis2Placement: 'SELECT 	(IfcAxis2Placement2D 	,IfcAxis2Placement3D)',
    IfcBendingParameterSelect: 'SELECT 	(IfcLengthMeasure 	,IfcPlaneAngleMeasure)',
    IfcBooleanOperand: 'SELECT 	(IfcBooleanResult 	,IfcCsgPrimitive3D 	,IfcHalfSpaceSolid 	,IfcSolidModel 	,IfcTessellatedFaceSet)',
    IfcClassificationReferenceSelect: 'SELECT 	(IfcClassification 	,IfcClassificationReference)',
    IfcClassificationSelect: 'SELECT 	(IfcClassification 	,IfcClassificationReference)',
    IfcColour: 'SELECT 	(IfcColourSpecification 	,IfcPreDefinedColour)',
    IfcColourOrFactor: 'SELECT 	(IfcColourRgb 	,IfcNormalisedRatioMeasure)',
    IfcCoordinateReferenceSystemSelect: 'SELECT 	(IfcCoordinateReferenceSystem 	,IfcGeometricRepresentationContext)',
    IfcCsgSelect: 'SELECT 	(IfcBooleanResult 	,IfcCsgPrimitive3D)',
    IfcCurveFontOrScaledCurveFontSelect: 'SELECT 	(IfcCurveStyleFontAndScaling 	,IfcCurveStyleFontSelect)',
    IfcCurveOnSurface: 'SELECT 	(IfcCompositeCurveOnSurface 	,IfcPcurve 	,IfcSurfaceCurve)',
    IfcCurveOrEdgeCurve: 'SELECT 	(IfcBoundedCurve 	,IfcEdgeCurve)',
    IfcCurveStyleFontSelect: 'SELECT 	(IfcCurveStyleFont 	,IfcPreDefinedCurveFont)',
    IfcDefinitionSelect: 'SELECT 	(IfcObjectDefinition 	,IfcPropertyDefinition)',
    IfcDerivedMeasureValue: 'SELECT 	(IfcAbsorbedDoseMeasure 	,IfcAccelerationMeasure 	,IfcAngularVelocityMeasure 	,IfcAreaDensityMeasure 	,IfcCompoundPlaneAngleMeasure 	,IfcCurvatureMeasure 	,IfcDoseEquivalentMeasure 	,IfcDynamicViscosityMeasure 	,IfcElectricCapacitanceMeasure 	,IfcElectricChargeMeasure 	,IfcElectricConductanceMeasure 	,IfcElectricResistanceMeasure 	,IfcElectricVoltageMeasure 	,IfcEnergyMeasure 	,IfcForceMeasure 	,IfcFrequencyMeasure 	,IfcHeatFluxDensityMeasure 	,IfcHeatingValueMeasure 	,IfcIlluminanceMeasure 	,IfcInductanceMeasure 	,IfcIntegerCountRateMeasure 	,IfcIonConcentrationMeasure 	,IfcIsothermalMoistureCapacityMeasure 	,IfcKinematicViscosityMeasure 	,IfcLinearForceMeasure 	,IfcLinearMomentMeasure 	,IfcLinearStiffnessMeasure 	,IfcLinearVelocityMeasure 	,IfcLuminousFluxMeasure 	,IfcLuminousIntensityDistributionMeasure 	,IfcMagneticFluxDensityMeasure 	,IfcMagneticFluxMeasure 	,IfcMassDensityMeasure 	,IfcMassFlowRateMeasure 	,IfcMassPerLengthMeasure 	,IfcModulusOfElasticityMeasure 	,IfcModulusOfLinearSubgradeReactionMeasure 	,IfcModulusOfRotationalSubgradeReactionMeasure 	,IfcModulusOfSubgradeReactionMeasure 	,IfcMoistureDiffusivityMeasure 	,IfcMolecularWeightMeasure 	,IfcMomentOfInertiaMeasure 	,IfcMonetaryMeasure 	,IfcPHMeasure 	,IfcPlanarForceMeasure 	,IfcPowerMeasure 	,IfcPressureMeasure 	,IfcRadioActivityMeasure 	,IfcRotationalFrequencyMeasure 	,IfcRotationalMassMeasure 	,IfcRotationalStiffnessMeasure 	,IfcSectionModulusMeasure 	,IfcSectionalAreaIntegralMeasure 	,IfcShearModulusMeasure 	,IfcSoundPowerLevelMeasure 	,IfcSoundPowerMeasure 	,IfcSoundPressureLevelMeasure 	,IfcSoundPressureMeasure 	,IfcSpecificHeatCapacityMeasure 	,IfcTemperatureGradientMeasure 	,IfcTemperatureRateOfChangeMeasure 	,IfcThermalAdmittanceMeasure 	,IfcThermalConductivityMeasure 	,IfcThermalExpansionCoefficientMeasure 	,IfcThermalResistanceMeasure 	,IfcThermalTransmittanceMeasure 	,IfcTorqueMeasure 	,IfcVaporPermeabilityMeasure 	,IfcVolumetricFlowRateMeasure 	,IfcWarpingConstantMeasure 	,IfcWarpingMomentMeasure)',
    IfcDocumentSelect: 'SELECT 	(IfcDocumentInformation 	,IfcDocumentReference)',
    IfcFillStyleSelect: 'SELECT 	(IfcColour 	,IfcExternallyDefinedHatchStyle 	,IfcFillAreaStyleHatching 	,IfcFillAreaStyleTiles)',
    IfcGeometricSetSelect: 'SELECT 	(IfcCurve 	,IfcPoint 	,IfcSurface)',
    IfcGridPlacementDirectionSelect: 'SELECT 	(IfcDirection 	,IfcVirtualGridIntersection)',
    IfcHatchLineDistanceSelect: 'SELECT 	(IfcPositiveLengthMeasure 	,IfcVector)',
    IfcLayeredItem: 'SELECT 	(IfcRepresentation 	,IfcRepresentationItem)',
    IfcLibrarySelect: 'SELECT 	(IfcLibraryInformation 	,IfcLibraryReference)',
    IfcLightDistributionDataSourceSelect: 'SELECT 	(IfcExternalReference 	,IfcLightIntensityDistribution)',
    IfcMaterialSelect: 'SELECT 	(IfcMaterialDefinition 	,IfcMaterialList 	,IfcMaterialUsageDefinition)',
    IfcMeasureValue: 'SELECT 	(IfcAmountOfSubstanceMeasure 	,IfcAreaMeasure 	,IfcComplexNumber 	,IfcContextDependentMeasure 	,IfcCountMeasure 	,IfcDescriptiveMeasure 	,IfcElectricCurrentMeasure 	,IfcLengthMeasure 	,IfcLuminousIntensityMeasure 	,IfcMassMeasure 	,IfcNonNegativeLengthMeasure 	,IfcNormalisedRatioMeasure 	,IfcNumericMeasure 	,IfcParameterValue 	,IfcPlaneAngleMeasure 	,IfcPositiveLengthMeasure 	,IfcPositivePlaneAngleMeasure 	,IfcPositiveRatioMeasure 	,IfcRatioMeasure 	,IfcSolidAngleMeasure 	,IfcThermodynamicTemperatureMeasure 	,IfcTimeMeasure 	,IfcVolumeMeasure)',
    IfcMetricValueSelect: 'SELECT 	(IfcAppliedValue 	,IfcMeasureWithUnit 	,IfcReference 	,IfcTable 	,IfcTimeSeries 	,IfcValue)',
    IfcModulusOfRotationalSubgradeReactionSelect: 'SELECT 	(IfcBoolean 	,IfcModulusOfRotationalSubgradeReactionMeasure)',
    IfcModulusOfSubgradeReactionSelect: 'SELECT 	(IfcBoolean 	,IfcModulusOfSubgradeReactionMeasure)',
    IfcModulusOfTranslationalSubgradeReactionSelect: 'SELECT 	(IfcBoolean 	,IfcModulusOfLinearSubgradeReactionMeasure)',
    IfcObjectReferenceSelect: 'SELECT 	(IfcAddress 	,IfcAppliedValue 	,IfcExternalReference 	,IfcMaterialDefinition 	,IfcOrganization 	,IfcPerson 	,IfcPersonAndOrganization 	,IfcTable 	,IfcTimeSeries)',
    IfcPointOrVertexPoint: 'SELECT 	(IfcPoint 	,IfcVertexPoint)',
    IfcPresentationStyleSelect: 'SELECT 	(IfcCurveStyle 	,IfcFillAreaStyle 	,IfcNullStyle 	,IfcSurfaceStyle 	,IfcTextStyle)',
    IfcProcessSelect: 'SELECT 	(IfcProcess 	,IfcTypeProcess)',
    IfcProductRepresentationSelect: 'SELECT 	(IfcProductDefinitionShape 	,IfcRepresentationMap)',
    IfcProductSelect: 'SELECT 	(IfcProduct 	,IfcTypeProduct)',
    IfcPropertySetDefinitionSelect: 'SELECT 	(IfcPropertySetDefinition 	,IfcPropertySetDefinitionSet)',
    IfcResourceObjectSelect: 'SELECT 	(IfcActorRole 	,IfcAppliedValue 	,IfcApproval 	,IfcConstraint 	,IfcContextDependentUnit 	,IfcConversionBasedUnit 	,IfcExternalInformation 	,IfcExternalReference 	,IfcMaterialDefinition 	,IfcOrganization 	,IfcPerson 	,IfcPersonAndOrganization 	,IfcPhysicalQuantity 	,IfcProfileDef 	,IfcPropertyAbstraction 	,IfcTimeSeries)',
    IfcResourceSelect: 'SELECT 	(IfcResource 	,IfcTypeResource)',
    IfcRotationalStiffnessSelect: 'SELECT 	(IfcBoolean 	,IfcRotationalStiffnessMeasure)',
    IfcSegmentIndexSelect: 'SELECT 	(IfcArcIndex 	,IfcLineIndex)',
    IfcShell: 'SELECT 	(IfcClosedShell 	,IfcOpenShell)',
    IfcSimpleValue: 'SELECT 	(IfcBinary 	,IfcBoolean 	,IfcDate 	,IfcDateTime 	,IfcDuration 	,IfcIdentifier 	,IfcInteger 	,IfcLabel 	,IfcLogical 	,IfcPositiveInteger 	,IfcReal 	,IfcText 	,IfcTime 	,IfcTimeStamp)',
    IfcSizeSelect: 'SELECT 	(IfcDescriptiveMeasure 	,IfcLengthMeasure 	,IfcNormalisedRatioMeasure 	,IfcPositiveLengthMeasure 	,IfcPositiveRatioMeasure 	,IfcRatioMeasure)',
    IfcSolidOrShell: 'SELECT 	(IfcClosedShell 	,IfcSolidModel)',
    IfcSpaceBoundarySelect: 'SELECT 	(IfcExternalSpatialElement 	,IfcSpace)',
    IfcSpecularHighlightSelect: 'SELECT 	(IfcSpecularExponent 	,IfcSpecularRoughness)',
    IfcStructuralActivityAssignmentSelect: 'SELECT 	(IfcElement 	,IfcStructuralItem)',
    IfcStyleAssignmentSelect: 'SELECT 	(IfcPresentationStyle 	,IfcPresentationStyleAssignment)',
    IfcSurfaceOrFaceSurface: 'SELECT 	(IfcFaceBasedSurfaceModel 	,IfcFaceSurface 	,IfcSurface)',
    IfcSurfaceStyleElementSelect: 'SELECT 	(IfcExternallyDefinedSurfaceStyle 	,IfcSurfaceStyleLighting 	,IfcSurfaceStyleRefraction 	,IfcSurfaceStyleShading 	,IfcSurfaceStyleWithTextures)',
    IfcTextFontSelect: 'SELECT 	(IfcExternallyDefinedTextFont 	,IfcPreDefinedTextFont)',
    IfcTimeOrRatioSelect: 'SELECT 	(IfcDuration 	,IfcRatioMeasure)',
    IfcTranslationalStiffnessSelect: 'SELECT 	(IfcBoolean 	,IfcLinearStiffnessMeasure)',
    IfcTrimmingSelect: 'SELECT 	(IfcCartesianPoint 	,IfcParameterValue)',
    IfcUnit: 'SELECT 	(IfcDerivedUnit 	,IfcMonetaryUnit 	,IfcNamedUnit)',
    IfcValue: 'SELECT 	(IfcDerivedMeasureValue 	,IfcMeasureValue 	,IfcSimpleValue)',
    IfcVectorOrDirection: 'SELECT 	(IfcDirection 	,IfcVector)',
    IfcWarpingStiffnessSelect: 'SELECT 	(IfcBoolean 	,IfcWarpingMomentMeasure)',
  },

  enums: {
    IfcActionRequestTypeEnum: ['EMAIL', 'FAX', 'PHONE', 'POST', 'VERBAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcActionSourceTypeEnum: ['DEAD_LOAD_G', 'COMPLETION_G1', 'LIVE_LOAD_Q', 'SNOW_S', 'WIND_W', 'PRESTRESSING_P', 'SETTLEMENT_U', 'TEMPERATURE_T', 'EARTHQUAKE_E', 'FIRE', 'IMPULSE', 'IMPACT', 'TRANSPORT', 'ERECTION', 'PROPPING', 'SYSTEM_IMPERFECTION', 'SHRINKAGE', 'CREEP', 'LACK_OF_FIT', 'BUOYANCY', 'ICE', 'CURRENT', 'WAVE', 'RAIN', 'BRAKES', 'USERDEFINED', 'NOTDEFINED'],
    IfcActionTypeEnum: ['PERMANENT_G', 'VARIABLE_Q', 'EXTRAORDINARY_A', 'USERDEFINED', 'NOTDEFINED'],
    IfcActuatorTypeEnum: ['ELECTRICACTUATOR', 'HANDOPERATEDACTUATOR', 'HYDRAULICACTUATOR', 'PNEUMATICACTUATOR', 'THERMOSTATICACTUATOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcAddressTypeEnum: ['OFFICE', 'SITE', 'HOME', 'DISTRIBUTIONPOINT', 'USERDEFINED'],
    IfcAirTerminalBoxTypeEnum: ['CONSTANTFLOW', 'VARIABLEFLOWPRESSUREDEPENDANT', 'VARIABLEFLOWPRESSUREINDEPENDANT', 'USERDEFINED', 'NOTDEFINED'],
    IfcAirTerminalTypeEnum: ['DIFFUSER', 'GRILLE', 'LOUVRE', 'REGISTER', 'USERDEFINED', 'NOTDEFINED'],
    IfcAirToAirHeatRecoveryTypeEnum: ['FIXEDPLATECOUNTERFLOWEXCHANGER', 'FIXEDPLATECROSSFLOWEXCHANGER', 'FIXEDPLATEPARALLELFLOWEXCHANGER', 'ROTARYWHEEL', 'RUNAROUNDCOILLOOP', 'HEATPIPE', 'TWINTOWERENTHALPYRECOVERYLOOPS', 'THERMOSIPHONSEALEDTUBEHEATEXCHANGERS', 'THERMOSIPHONCOILTYPEHEATEXCHANGERS', 'USERDEFINED', 'NOTDEFINED'],
    IfcAlarmTypeEnum: ['BELL', 'BREAKGLASSBUTTON', 'LIGHT', 'MANUALPULLBOX', 'SIREN', 'WHISTLE', 'USERDEFINED', 'NOTDEFINED'],
    IfcAnalysisModelTypeEnum: ['IN_PLANE_LOADING_2D', 'OUT_PLANE_LOADING_2D', 'LOADING_3D', 'USERDEFINED', 'NOTDEFINED'],
    IfcAnalysisTheoryTypeEnum: ['FIRST_ORDER_THEORY', 'SECOND_ORDER_THEORY', 'THIRD_ORDER_THEORY', 'FULL_NONLINEAR_THEORY', 'USERDEFINED', 'NOTDEFINED'],
    IfcArithmeticOperatorEnum: ['ADD', 'DIVIDE', 'MULTIPLY', 'SUBTRACT'],
    IfcAssemblyPlaceEnum: ['SITE', 'FACTORY', 'NOTDEFINED'],
    IfcAudioVisualApplianceTypeEnum: ['AMPLIFIER', 'CAMERA', 'DISPLAY', 'MICROPHONE', 'PLAYER', 'PROJECTOR', 'RECEIVER', 'SPEAKER', 'SWITCHER', 'TELEPHONE', 'TUNER', 'USERDEFINED', 'NOTDEFINED'],
    IfcBSplineCurveForm: ['POLYLINE_FORM', 'CIRCULAR_ARC', 'ELLIPTIC_ARC', 'PARABOLIC_ARC', 'HYPERBOLIC_ARC', 'UNSPECIFIED'],
    IfcBSplineSurfaceForm: ['PLANE_SURF', 'CYLINDRICAL_SURF', 'CONICAL_SURF', 'SPHERICAL_SURF', 'TOROIDAL_SURF', 'SURF_OF_REVOLUTION', 'RULED_SURF', 'GENERALISED_CONE', 'QUADRIC_SURF', 'SURF_OF_LINEAR_EXTRUSION', 'UNSPECIFIED'],
    IfcBeamTypeEnum: ['BEAM', 'JOIST', 'HOLLOWCORE', 'LINTEL', 'SPANDREL', 'T_BEAM', 'USERDEFINED', 'NOTDEFINED'],
    IfcBenchmarkEnum: ['GREATERTHAN', 'GREATERTHANOREQUALTO', 'LESSTHAN', 'LESSTHANOREQUALTO', 'EQUALTO', 'NOTEQUALTO', 'INCLUDES', 'NOTINCLUDES', 'INCLUDEDIN', 'NOTINCLUDEDIN'],
    IfcBoilerTypeEnum: ['WATER', 'STEAM', 'USERDEFINED', 'NOTDEFINED'],
    IfcBooleanOperator: ['UNION', 'INTERSECTION', 'DIFFERENCE'],
    IfcBuildingElementPartTypeEnum: ['INSULATION', 'PRECASTPANEL', 'USERDEFINED', 'NOTDEFINED'],
    IfcBuildingElementProxyTypeEnum: ['COMPLEX', 'ELEMENT', 'PARTIAL', 'PROVISIONFORVOID', 'PROVISIONFORSPACE', 'USERDEFINED', 'NOTDEFINED'],
    IfcBuildingSystemTypeEnum: ['FENESTRATION', 'FOUNDATION', 'LOADBEARING', 'OUTERSHELL', 'SHADING', 'TRANSPORT', 'USERDEFINED', 'NOTDEFINED'],
    IfcBurnerTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcCableCarrierFittingTypeEnum: ['BEND', 'CROSS', 'REDUCER', 'TEE', 'USERDEFINED', 'NOTDEFINED'],
    IfcCableCarrierSegmentTypeEnum: ['CABLELADDERSEGMENT', 'CABLETRAYSEGMENT', 'CABLETRUNKINGSEGMENT', 'CONDUITSEGMENT', 'USERDEFINED', 'NOTDEFINED'],
    IfcCableFittingTypeEnum: ['CONNECTOR', 'ENTRY', 'EXIT', 'JUNCTION', 'TRANSITION', 'USERDEFINED', 'NOTDEFINED'],
    IfcCableSegmentTypeEnum: ['BUSBARSEGMENT', 'CABLESEGMENT', 'CONDUCTORSEGMENT', 'CORESEGMENT', 'USERDEFINED', 'NOTDEFINED'],
    IfcChangeActionEnum: ['NOCHANGE', 'MODIFIED', 'ADDED', 'DELETED', 'NOTDEFINED'],
    IfcChillerTypeEnum: ['AIRCOOLED', 'WATERCOOLED', 'HEATRECOVERY', 'USERDEFINED', 'NOTDEFINED'],
    IfcChimneyTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcCoilTypeEnum: ['DXCOOLINGCOIL', 'ELECTRICHEATINGCOIL', 'GASHEATINGCOIL', 'HYDRONICCOIL', 'STEAMHEATINGCOIL', 'WATERCOOLINGCOIL', 'WATERHEATINGCOIL', 'USERDEFINED', 'NOTDEFINED'],
    IfcColumnTypeEnum: ['COLUMN', 'PILASTER', 'USERDEFINED', 'NOTDEFINED'],
    IfcCommunicationsApplianceTypeEnum: ['ANTENNA', 'COMPUTER', 'FAX', 'GATEWAY', 'MODEM', 'NETWORKAPPLIANCE', 'NETWORKBRIDGE', 'NETWORKHUB', 'PRINTER', 'REPEATER', 'ROUTER', 'SCANNER', 'USERDEFINED', 'NOTDEFINED'],
    IfcComplexPropertyTemplateTypeEnum: ['P_COMPLEX', 'Q_COMPLEX'],
    IfcCompressorTypeEnum: ['DYNAMIC', 'RECIPROCATING', 'ROTARY', 'SCROLL', 'TROCHOIDAL', 'SINGLESTAGE', 'BOOSTER', 'OPENTYPE', 'HERMETIC', 'SEMIHERMETIC', 'WELDEDSHELLHERMETIC', 'ROLLINGPISTON', 'ROTARYVANE', 'SINGLESCREW', 'TWINSCREW', 'USERDEFINED', 'NOTDEFINED'],
    IfcCondenserTypeEnum: ['AIRCOOLED', 'EVAPORATIVECOOLED', 'WATERCOOLED', 'WATERCOOLEDBRAZEDPLATE', 'WATERCOOLEDSHELLCOIL', 'WATERCOOLEDSHELLTUBE', 'WATERCOOLEDTUBEINTUBE', 'USERDEFINED', 'NOTDEFINED'],
    IfcConnectionTypeEnum: ['ATPATH', 'ATSTART', 'ATEND', 'NOTDEFINED'],
    IfcConstraintEnum: ['HARD', 'SOFT', 'ADVISORY', 'USERDEFINED', 'NOTDEFINED'],
    IfcConstructionEquipmentResourceTypeEnum: ['DEMOLISHING', 'EARTHMOVING', 'ERECTING', 'HEATING', 'LIGHTING', 'PAVING', 'PUMPING', 'TRANSPORTING', 'USERDEFINED', 'NOTDEFINED'],
    IfcConstructionMaterialResourceTypeEnum: ['AGGREGATES', 'CONCRETE', 'DRYWALL', 'FUEL', 'GYPSUM', 'MASONRY', 'METAL', 'PLASTIC', 'WOOD', 'NOTDEFINED', 'USERDEFINED'],
    IfcConstructionProductResourceTypeEnum: ['ASSEMBLY', 'FORMWORK', 'USERDEFINED', 'NOTDEFINED'],
    IfcControllerTypeEnum: ['FLOATING', 'PROGRAMMABLE', 'PROPORTIONAL', 'MULTIPOSITION', 'TWOPOSITION', 'USERDEFINED', 'NOTDEFINED'],
    IfcCooledBeamTypeEnum: ['ACTIVE', 'PASSIVE', 'USERDEFINED', 'NOTDEFINED'],
    IfcCoolingTowerTypeEnum: ['NATURALDRAFT', 'MECHANICALINDUCEDDRAFT', 'MECHANICALFORCEDDRAFT', 'USERDEFINED', 'NOTDEFINED'],
    IfcCostItemTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcCostScheduleTypeEnum: ['BUDGET', 'COSTPLAN', 'ESTIMATE', 'TENDER', 'PRICEDBILLOFQUANTITIES', 'UNPRICEDBILLOFQUANTITIES', 'SCHEDULEOFRATES', 'USERDEFINED', 'NOTDEFINED'],
    IfcCoveringTypeEnum: ['CEILING', 'FLOORING', 'CLADDING', 'ROOFING', 'MOLDING', 'SKIRTINGBOARD', 'INSULATION', 'MEMBRANE', 'SLEEVING', 'WRAPPING', 'USERDEFINED', 'NOTDEFINED'],
    IfcCrewResourceTypeEnum: ['OFFICE', 'SITE', 'USERDEFINED', 'NOTDEFINED'],
    IfcCurtainWallTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcCurveInterpolationEnum: ['LINEAR', 'LOG_LINEAR', 'LOG_LOG', 'NOTDEFINED'],
    IfcDamperTypeEnum: ['BACKDRAFTDAMPER', 'BALANCINGDAMPER', 'BLASTDAMPER', 'CONTROLDAMPER', 'FIREDAMPER', 'FIRESMOKEDAMPER', 'FUMEHOODEXHAUST', 'GRAVITYDAMPER', 'GRAVITYRELIEFDAMPER', 'RELIEFDAMPER', 'SMOKEDAMPER', 'USERDEFINED', 'NOTDEFINED'],
    IfcDataOriginEnum: ['MEASURED', 'PREDICTED', 'SIMULATED', 'USERDEFINED', 'NOTDEFINED'],
    IfcDerivedUnitEnum: ['ANGULARVELOCITYUNIT', 'AREADENSITYUNIT', 'COMPOUNDPLANEANGLEUNIT', 'DYNAMICVISCOSITYUNIT', 'HEATFLUXDENSITYUNIT', 'INTEGERCOUNTRATEUNIT', 'ISOTHERMALMOISTURECAPACITYUNIT', 'KINEMATICVISCOSITYUNIT', 'LINEARVELOCITYUNIT', 'MASSDENSITYUNIT', 'MASSFLOWRATEUNIT', 'MOISTUREDIFFUSIVITYUNIT', 'MOLECULARWEIGHTUNIT', 'SPECIFICHEATCAPACITYUNIT', 'THERMALADMITTANCEUNIT', 'THERMALCONDUCTANCEUNIT', 'THERMALRESISTANCEUNIT', 'THERMALTRANSMITTANCEUNIT', 'VAPORPERMEABILITYUNIT', 'VOLUMETRICFLOWRATEUNIT', 'ROTATIONALFREQUENCYUNIT', 'TORQUEUNIT', 'MOMENTOFINERTIAUNIT', 'LINEARMOMENTUNIT', 'LINEARFORCEUNIT', 'PLANARFORCEUNIT', 'MODULUSOFELASTICITYUNIT', 'SHEARMODULUSUNIT', 'LINEARSTIFFNESSUNIT', 'ROTATIONALSTIFFNESSUNIT', 'MODULUSOFSUBGRADEREACTIONUNIT', 'ACCELERATIONUNIT', 'CURVATUREUNIT', 'HEATINGVALUEUNIT', 'IONCONCENTRATIONUNIT', 'LUMINOUSINTENSITYDISTRIBUTIONUNIT', 'MASSPERLENGTHUNIT', 'MODULUSOFLINEARSUBGRADEREACTIONUNIT', 'MODULUSOFROTATIONALSUBGRADEREACTIONUNIT', 'PHUNIT', 'ROTATIONALMASSUNIT', 'SECTIONAREAINTEGRALUNIT', 'SECTIONMODULUSUNIT', 'SOUNDPOWERLEVELUNIT', 'SOUNDPOWERUNIT', 'SOUNDPRESSURELEVELUNIT', 'SOUNDPRESSUREUNIT', 'TEMPERATUREGRADIENTUNIT', 'TEMPERATURERATEOFCHANGEUNIT', 'THERMALEXPANSIONCOEFFICIENTUNIT', 'WARPINGCONSTANTUNIT', 'WARPINGMOMENTUNIT', 'USERDEFINED'],
    IfcDirectionSenseEnum: ['POSITIVE', 'NEGATIVE'],
    IfcDiscreteAccessoryTypeEnum: ['ANCHORPLATE', 'BRACKET', 'SHOE', 'USERDEFINED', 'NOTDEFINED'],
    IfcDistributionChamberElementTypeEnum: ['FORMEDDUCT', 'INSPECTIONCHAMBER', 'INSPECTIONPIT', 'MANHOLE', 'METERCHAMBER', 'SUMP', 'TRENCH', 'VALVECHAMBER', 'USERDEFINED', 'NOTDEFINED'],
    IfcDistributionPortTypeEnum: ['CABLE', 'CABLECARRIER', 'DUCT', 'PIPE', 'USERDEFINED', 'NOTDEFINED'],
    IfcDistributionSystemEnum: ['AIRCONDITIONING', 'AUDIOVISUAL', 'CHEMICAL', 'CHILLEDWATER', 'COMMUNICATION', 'COMPRESSEDAIR', 'CONDENSERWATER', 'CONTROL', 'CONVEYING', 'DATA', 'DISPOSAL', 'DOMESTICCOLDWATER', 'DOMESTICHOTWATER', 'DRAINAGE', 'EARTHING', 'ELECTRICAL', 'ELECTROACOUSTIC', 'EXHAUST', 'FIREPROTECTION', 'FUEL', 'GAS', 'HAZARDOUS', 'HEATING', 'LIGHTING', 'LIGHTNINGPROTECTION', 'MUNICIPALSOLIDWASTE', 'OIL', 'OPERATIONAL', 'POWERGENERATION', 'RAINWATER', 'REFRIGERATION', 'SECURITY', 'SEWAGE', 'SIGNAL', 'STORMWATER', 'TELEPHONE', 'TV', 'VACUUM', 'VENT', 'VENTILATION', 'WASTEWATER', 'WATERSUPPLY', 'USERDEFINED', 'NOTDEFINED'],
    IfcDocumentConfidentialityEnum: ['PUBLIC', 'RESTRICTED', 'CONFIDENTIAL', 'PERSONAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcDocumentStatusEnum: ['DRAFT', 'FINALDRAFT', 'FINAL', 'REVISION', 'NOTDEFINED'],
    IfcDoorPanelOperationEnum: ['SWINGING', 'DOUBLE_ACTING', 'SLIDING', 'FOLDING', 'REVOLVING', 'ROLLINGUP', 'FIXEDPANEL', 'USERDEFINED', 'NOTDEFINED'],
    IfcDoorPanelPositionEnum: ['LEFT', 'MIDDLE', 'RIGHT', 'NOTDEFINED'],
    IfcDoorStyleConstructionEnum: ['ALUMINIUM', 'HIGH_GRADE_STEEL', 'STEEL', 'WOOD', 'ALUMINIUM_WOOD', 'ALUMINIUM_PLASTIC', 'PLASTIC', 'USERDEFINED', 'NOTDEFINED'],
    IfcDoorStyleOperationEnum: ['SINGLE_SWING_LEFT', 'SINGLE_SWING_RIGHT', 'DOUBLE_DOOR_SINGLE_SWING', 'DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT', 'DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT', 'DOUBLE_SWING_LEFT', 'DOUBLE_SWING_RIGHT', 'DOUBLE_DOOR_DOUBLE_SWING', 'SLIDING_TO_LEFT', 'SLIDING_TO_RIGHT', 'DOUBLE_DOOR_SLIDING', 'FOLDING_TO_LEFT', 'FOLDING_TO_RIGHT', 'DOUBLE_DOOR_FOLDING', 'REVOLVING', 'ROLLINGUP', 'USERDEFINED', 'NOTDEFINED'],
    IfcDoorTypeEnum: ['DOOR', 'GATE', 'TRAPDOOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcDoorTypeOperationEnum: ['SINGLE_SWING_LEFT', 'SINGLE_SWING_RIGHT', 'DOUBLE_DOOR_SINGLE_SWING', 'DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT', 'DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT', 'DOUBLE_SWING_LEFT', 'DOUBLE_SWING_RIGHT', 'DOUBLE_DOOR_DOUBLE_SWING', 'SLIDING_TO_LEFT', 'SLIDING_TO_RIGHT', 'DOUBLE_DOOR_SLIDING', 'FOLDING_TO_LEFT', 'FOLDING_TO_RIGHT', 'DOUBLE_DOOR_FOLDING', 'REVOLVING', 'ROLLINGUP', 'SWING_FIXED_LEFT', 'SWING_FIXED_RIGHT', 'USERDEFINED', 'NOTDEFINED'],
    IfcDuctFittingTypeEnum: ['BEND', 'CONNECTOR', 'ENTRY', 'EXIT', 'JUNCTION', 'OBSTRUCTION', 'TRANSITION', 'USERDEFINED', 'NOTDEFINED'],
    IfcDuctSegmentTypeEnum: ['RIGIDSEGMENT', 'FLEXIBLESEGMENT', 'USERDEFINED', 'NOTDEFINED'],
    IfcDuctSilencerTypeEnum: ['FLATOVAL', 'RECTANGULAR', 'ROUND', 'USERDEFINED', 'NOTDEFINED'],
    IfcElectricApplianceTypeEnum: ['DISHWASHER', 'ELECTRICCOOKER', 'FREESTANDINGELECTRICHEATER', 'FREESTANDINGFAN', 'FREESTANDINGWATERHEATER', 'FREESTANDINGWATERCOOLER', 'FREEZER', 'FRIDGE_FREEZER', 'HANDDRYER', 'KITCHENMACHINE', 'MICROWAVE', 'PHOTOCOPIER', 'REFRIGERATOR', 'TUMBLEDRYER', 'VENDINGMACHINE', 'WASHINGMACHINE', 'USERDEFINED', 'NOTDEFINED'],
    IfcElectricDistributionBoardTypeEnum: ['CONSUMERUNIT', 'DISTRIBUTIONBOARD', 'MOTORCONTROLCENTRE', 'SWITCHBOARD', 'USERDEFINED', 'NOTDEFINED'],
    IfcElectricFlowStorageDeviceTypeEnum: ['BATTERY', 'CAPACITORBANK', 'HARMONICFILTER', 'INDUCTORBANK', 'UPS', 'USERDEFINED', 'NOTDEFINED'],
    IfcElectricGeneratorTypeEnum: ['CHP', 'ENGINEGENERATOR', 'STANDALONE', 'USERDEFINED', 'NOTDEFINED'],
    IfcElectricMotorTypeEnum: ['DC', 'INDUCTION', 'POLYPHASE', 'RELUCTANCESYNCHRONOUS', 'SYNCHRONOUS', 'USERDEFINED', 'NOTDEFINED'],
    IfcElectricTimeControlTypeEnum: ['TIMECLOCK', 'TIMEDELAY', 'RELAY', 'USERDEFINED', 'NOTDEFINED'],
    IfcElementAssemblyTypeEnum: ['ACCESSORY_ASSEMBLY', 'ARCH', 'BEAM_GRID', 'BRACED_FRAME', 'GIRDER', 'REINFORCEMENT_UNIT', 'RIGID_FRAME', 'SLAB_FIELD', 'TRUSS', 'USERDEFINED', 'NOTDEFINED'],
    IfcElementCompositionEnum: ['COMPLEX', 'ELEMENT', 'PARTIAL'],
    IfcEngineTypeEnum: ['EXTERNALCOMBUSTION', 'INTERNALCOMBUSTION', 'USERDEFINED', 'NOTDEFINED'],
    IfcEvaporativeCoolerTypeEnum: ['DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER', 'DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER', 'DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER', 'DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER', 'DIRECTEVAPORATIVEAIRWASHER', 'INDIRECTEVAPORATIVEPACKAGEAIRCOOLER', 'INDIRECTEVAPORATIVEWETCOIL', 'INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER', 'INDIRECTDIRECTCOMBINATION', 'USERDEFINED', 'NOTDEFINED'],
    IfcEvaporatorTypeEnum: ['DIRECTEXPANSION', 'DIRECTEXPANSIONSHELLANDTUBE', 'DIRECTEXPANSIONTUBEINTUBE', 'DIRECTEXPANSIONBRAZEDPLATE', 'FLOODEDSHELLANDTUBE', 'SHELLANDCOIL', 'USERDEFINED', 'NOTDEFINED'],
    IfcEventTriggerTypeEnum: ['EVENTRULE', 'EVENTMESSAGE', 'EVENTTIME', 'EVENTCOMPLEX', 'USERDEFINED', 'NOTDEFINED'],
    IfcEventTypeEnum: ['STARTEVENT', 'ENDEVENT', 'INTERMEDIATEEVENT', 'USERDEFINED', 'NOTDEFINED'],
    IfcExternalSpatialElementTypeEnum: ['EXTERNAL', 'EXTERNAL_EARTH', 'EXTERNAL_WATER', 'EXTERNAL_FIRE', 'USERDEFINED', 'NOTDEFINED'],
    IfcFanTypeEnum: ['CENTRIFUGALFORWARDCURVED', 'CENTRIFUGALRADIAL', 'CENTRIFUGALBACKWARDINCLINEDCURVED', 'CENTRIFUGALAIRFOIL', 'TUBEAXIAL', 'VANEAXIAL', 'PROPELLORAXIAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcFastenerTypeEnum: ['GLUE', 'MORTAR', 'WELD', 'USERDEFINED', 'NOTDEFINED'],
    IfcFilterTypeEnum: ['AIRPARTICLEFILTER', 'COMPRESSEDAIRFILTER', 'ODORFILTER', 'OILFILTER', 'STRAINER', 'WATERFILTER', 'USERDEFINED', 'NOTDEFINED'],
    IfcFireSuppressionTerminalTypeEnum: ['BREECHINGINLET', 'FIREHYDRANT', 'HOSEREEL', 'SPRINKLER', 'SPRINKLERDEFLECTOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcFlowDirectionEnum: ['SOURCE', 'SINK', 'SOURCEANDSINK', 'NOTDEFINED'],
    IfcFlowInstrumentTypeEnum: ['PRESSUREGAUGE', 'THERMOMETER', 'AMMETER', 'FREQUENCYMETER', 'POWERFACTORMETER', 'PHASEANGLEMETER', 'VOLTMETER_PEAK', 'VOLTMETER_RMS', 'USERDEFINED', 'NOTDEFINED'],
    IfcFlowMeterTypeEnum: ['ENERGYMETER', 'GASMETER', 'OILMETER', 'WATERMETER', 'USERDEFINED', 'NOTDEFINED'],
    IfcFootingTypeEnum: ['CAISSON_FOUNDATION', 'FOOTING_BEAM', 'PAD_FOOTING', 'PILE_CAP', 'STRIP_FOOTING', 'USERDEFINED', 'NOTDEFINED'],
    IfcFurnitureTypeEnum: ['CHAIR', 'TABLE', 'DESK', 'BED', 'FILECABINET', 'SHELF', 'SOFA', 'USERDEFINED', 'NOTDEFINED'],
    IfcGeographicElementTypeEnum: ['TERRAIN', 'USERDEFINED', 'NOTDEFINED'],
    IfcGeometricProjectionEnum: ['GRAPH_VIEW', 'SKETCH_VIEW', 'MODEL_VIEW', 'PLAN_VIEW', 'REFLECTED_PLAN_VIEW', 'SECTION_VIEW', 'ELEVATION_VIEW', 'USERDEFINED', 'NOTDEFINED'],
    IfcGlobalOrLocalEnum: ['GLOBAL_COORDS', 'LOCAL_COORDS'],
    IfcGridTypeEnum: ['RECTANGULAR', 'RADIAL', 'TRIANGULAR', 'IRREGULAR', 'USERDEFINED', 'NOTDEFINED'],
    IfcHeatExchangerTypeEnum: ['PLATE', 'SHELLANDTUBE', 'USERDEFINED', 'NOTDEFINED'],
    IfcHumidifierTypeEnum: ['STEAMINJECTION', 'ADIABATICAIRWASHER', 'ADIABATICPAN', 'ADIABATICWETTEDELEMENT', 'ADIABATICATOMIZING', 'ADIABATICULTRASONIC', 'ADIABATICRIGIDMEDIA', 'ADIABATICCOMPRESSEDAIRNOZZLE', 'ASSISTEDELECTRIC', 'ASSISTEDNATURALGAS', 'ASSISTEDPROPANE', 'ASSISTEDBUTANE', 'ASSISTEDSTEAM', 'USERDEFINED', 'NOTDEFINED'],
    IfcInterceptorTypeEnum: ['CYCLONIC', 'GREASE', 'OIL', 'PETROL', 'USERDEFINED', 'NOTDEFINED'],
    IfcInternalOrExternalEnum: ['INTERNAL', 'EXTERNAL', 'EXTERNAL_EARTH', 'EXTERNAL_WATER', 'EXTERNAL_FIRE', 'NOTDEFINED'],
    IfcInventoryTypeEnum: ['ASSETINVENTORY', 'SPACEINVENTORY', 'FURNITUREINVENTORY', 'USERDEFINED', 'NOTDEFINED'],
    IfcJunctionBoxTypeEnum: ['DATA', 'POWER', 'USERDEFINED', 'NOTDEFINED'],
    IfcKnotType: ['UNIFORM_KNOTS', 'QUASI_UNIFORM_KNOTS', 'PIECEWISE_BEZIER_KNOTS', 'UNSPECIFIED'],
    IfcLaborResourceTypeEnum: ['ADMINISTRATION', 'CARPENTRY', 'CLEANING', 'CONCRETE', 'DRYWALL', 'ELECTRIC', 'FINISHING', 'FLOORING', 'GENERAL', 'HVAC', 'LANDSCAPING', 'MASONRY', 'PAINTING', 'PAVING', 'PLUMBING', 'ROOFING', 'SITEGRADING', 'STEELWORK', 'SURVEYING', 'USERDEFINED', 'NOTDEFINED'],
    IfcLampTypeEnum: ['COMPACTFLUORESCENT', 'FLUORESCENT', 'HALOGEN', 'HIGHPRESSUREMERCURY', 'HIGHPRESSURESODIUM', 'LED', 'METALHALIDE', 'OLED', 'TUNGSTENFILAMENT', 'USERDEFINED', 'NOTDEFINED'],
    IfcLayerSetDirectionEnum: ['AXIS1', 'AXIS2', 'AXIS3'],
    IfcLightDistributionCurveEnum: ['TYPE_A', 'TYPE_B', 'TYPE_C', 'NOTDEFINED'],
    IfcLightEmissionSourceEnum: ['COMPACTFLUORESCENT', 'FLUORESCENT', 'HIGHPRESSUREMERCURY', 'HIGHPRESSURESODIUM', 'LIGHTEMITTINGDIODE', 'LOWPRESSURESODIUM', 'LOWVOLTAGEHALOGEN', 'MAINVOLTAGEHALOGEN', 'METALHALIDE', 'TUNGSTENFILAMENT', 'NOTDEFINED'],
    IfcLightFixtureTypeEnum: ['POINTSOURCE', 'DIRECTIONSOURCE', 'SECURITYLIGHTING', 'USERDEFINED', 'NOTDEFINED'],
    IfcLoadGroupTypeEnum: ['LOAD_GROUP', 'LOAD_CASE', 'LOAD_COMBINATION', 'USERDEFINED', 'NOTDEFINED'],
    IfcLogicalOperatorEnum: ['LOGICALAND', 'LOGICALOR', 'LOGICALXOR', 'LOGICALNOTAND', 'LOGICALNOTOR'],
    IfcMechanicalFastenerTypeEnum: ['ANCHORBOLT', 'BOLT', 'DOWEL', 'NAIL', 'NAILPLATE', 'RIVET', 'SCREW', 'SHEARCONNECTOR', 'STAPLE', 'STUDSHEARCONNECTOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcMedicalDeviceTypeEnum: ['AIRSTATION', 'FEEDAIRUNIT', 'OXYGENGENERATOR', 'OXYGENPLANT', 'VACUUMSTATION', 'USERDEFINED', 'NOTDEFINED'],
    IfcMemberTypeEnum: ['BRACE', 'CHORD', 'COLLAR', 'MEMBER', 'MULLION', 'PLATE', 'POST', 'PURLIN', 'RAFTER', 'STRINGER', 'STRUT', 'STUD', 'USERDEFINED', 'NOTDEFINED'],
    IfcMotorConnectionTypeEnum: ['BELTDRIVE', 'COUPLING', 'DIRECTDRIVE', 'USERDEFINED', 'NOTDEFINED'],
    IfcNullStyle: ['NULL'],
    IfcObjectTypeEnum: ['PRODUCT', 'PROCESS', 'CONTROL', 'RESOURCE', 'ACTOR', 'GROUP', 'PROJECT', 'NOTDEFINED'],
    IfcObjectiveEnum: ['CODECOMPLIANCE', 'CODEWAIVER', 'DESIGNINTENT', 'EXTERNAL', 'HEALTHANDSAFETY', 'MERGECONFLICT', 'MODELVIEW', 'PARAMETER', 'REQUIREMENT', 'SPECIFICATION', 'TRIGGERCONDITION', 'USERDEFINED', 'NOTDEFINED'],
    IfcOccupantTypeEnum: ['ASSIGNEE', 'ASSIGNOR', 'LESSEE', 'LESSOR', 'LETTINGAGENT', 'OWNER', 'TENANT', 'USERDEFINED', 'NOTDEFINED'],
    IfcOpeningElementTypeEnum: ['OPENING', 'RECESS', 'USERDEFINED', 'NOTDEFINED'],
    IfcOutletTypeEnum: ['AUDIOVISUALOUTLET', 'COMMUNICATIONSOUTLET', 'POWEROUTLET', 'DATAOUTLET', 'TELEPHONEOUTLET', 'USERDEFINED', 'NOTDEFINED'],
    IfcPerformanceHistoryTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcPermeableCoveringOperationEnum: ['GRILL', 'LOUVER', 'SCREEN', 'USERDEFINED', 'NOTDEFINED'],
    IfcPermitTypeEnum: ['ACCESS', 'BUILDING', 'WORK', 'USERDEFINED', 'NOTDEFINED'],
    IfcPhysicalOrVirtualEnum: ['PHYSICAL', 'VIRTUAL', 'NOTDEFINED'],
    IfcPileConstructionEnum: ['CAST_IN_PLACE', 'COMPOSITE', 'PRECAST_CONCRETE', 'PREFAB_STEEL', 'USERDEFINED', 'NOTDEFINED'],
    IfcPileTypeEnum: ['BORED', 'DRIVEN', 'JETGROUTING', 'COHESION', 'FRICTION', 'SUPPORT', 'USERDEFINED', 'NOTDEFINED'],
    IfcPipeFittingTypeEnum: ['BEND', 'CONNECTOR', 'ENTRY', 'EXIT', 'JUNCTION', 'OBSTRUCTION', 'TRANSITION', 'USERDEFINED', 'NOTDEFINED'],
    IfcPipeSegmentTypeEnum: ['CULVERT', 'FLEXIBLESEGMENT', 'RIGIDSEGMENT', 'GUTTER', 'SPOOL', 'USERDEFINED', 'NOTDEFINED'],
    IfcPlateTypeEnum: ['CURTAIN_PANEL', 'SHEET', 'USERDEFINED', 'NOTDEFINED'],
    IfcPreferredSurfaceCurveRepresentation: ['CURVE3D', 'PCURVE_S1', 'PCURVE_S2'],
    IfcProcedureTypeEnum: ['ADVICE_CAUTION', 'ADVICE_NOTE', 'ADVICE_WARNING', 'CALIBRATION', 'DIAGNOSTIC', 'SHUTDOWN', 'STARTUP', 'USERDEFINED', 'NOTDEFINED'],
    IfcProfileTypeEnum: ['CURVE', 'AREA'],
    IfcProjectOrderTypeEnum: ['CHANGEORDER', 'MAINTENANCEWORKORDER', 'MOVEORDER', 'PURCHASEORDER', 'WORKORDER', 'USERDEFINED', 'NOTDEFINED'],
    IfcProjectedOrTrueLengthEnum: ['PROJECTED_LENGTH', 'TRUE_LENGTH'],
    IfcProjectionElementTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcPropertySetTemplateTypeEnum: ['PSET_TYPEDRIVENONLY', 'PSET_TYPEDRIVENOVERRIDE', 'PSET_OCCURRENCEDRIVEN', 'PSET_PERFORMANCEDRIVEN', 'QTO_TYPEDRIVENONLY', 'QTO_TYPEDRIVENOVERRIDE', 'QTO_OCCURRENCEDRIVEN', 'NOTDEFINED'],
    IfcProtectiveDeviceTrippingUnitTypeEnum: ['ELECTRONIC', 'ELECTROMAGNETIC', 'RESIDUALCURRENT', 'THERMAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcProtectiveDeviceTypeEnum: ['CIRCUITBREAKER', 'EARTHLEAKAGECIRCUITBREAKER', 'EARTHINGSWITCH', 'FUSEDISCONNECTOR', 'RESIDUALCURRENTCIRCUITBREAKER', 'RESIDUALCURRENTSWITCH', 'VARISTOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcPumpTypeEnum: ['CIRCULATOR', 'ENDSUCTION', 'SPLITCASE', 'SUBMERSIBLEPUMP', 'SUMPPUMP', 'VERTICALINLINE', 'VERTICALTURBINE', 'USERDEFINED', 'NOTDEFINED'],
    IfcRailingTypeEnum: ['HANDRAIL', 'GUARDRAIL', 'BALUSTRADE', 'USERDEFINED', 'NOTDEFINED'],
    IfcRampFlightTypeEnum: ['STRAIGHT', 'SPIRAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcRampTypeEnum: ['STRAIGHT_RUN_RAMP', 'TWO_STRAIGHT_RUN_RAMP', 'QUARTER_TURN_RAMP', 'TWO_QUARTER_TURN_RAMP', 'HALF_TURN_RAMP', 'SPIRAL_RAMP', 'USERDEFINED', 'NOTDEFINED'],
    IfcRecurrenceTypeEnum: ['DAILY', 'WEEKLY', 'MONTHLY_BY_DAY_OF_MONTH', 'MONTHLY_BY_POSITION', 'BY_DAY_COUNT', 'BY_WEEKDAY_COUNT', 'YEARLY_BY_DAY_OF_MONTH', 'YEARLY_BY_POSITION'],
    IfcReflectanceMethodEnum: ['BLINN', 'FLAT', 'GLASS', 'MATT', 'METAL', 'MIRROR', 'PHONG', 'PLASTIC', 'STRAUSS', 'NOTDEFINED'],
    IfcReinforcingBarRoleEnum: ['MAIN', 'SHEAR', 'LIGATURE', 'STUD', 'PUNCHING', 'EDGE', 'RING', 'ANCHORING', 'USERDEFINED', 'NOTDEFINED'],
    IfcReinforcingBarSurfaceEnum: ['PLAIN', 'TEXTURED'],
    IfcReinforcingBarTypeEnum: ['ANCHORING', 'EDGE', 'LIGATURE', 'MAIN', 'PUNCHING', 'RING', 'SHEAR', 'STUD', 'USERDEFINED', 'NOTDEFINED'],
    IfcReinforcingMeshTypeEnum: ['USERDEFINED', 'NOTDEFINED'],
    IfcRoleEnum: ['SUPPLIER', 'MANUFACTURER', 'CONTRACTOR', 'SUBCONTRACTOR', 'ARCHITECT', 'STRUCTURALENGINEER', 'COSTENGINEER', 'CLIENT', 'BUILDINGOWNER', 'BUILDINGOPERATOR', 'MECHANICALENGINEER', 'ELECTRICALENGINEER', 'PROJECTMANAGER', 'FACILITIESMANAGER', 'CIVILENGINEER', 'COMMISSIONINGENGINEER', 'ENGINEER', 'OWNER', 'CONSULTANT', 'CONSTRUCTIONMANAGER', 'FIELDCONSTRUCTIONMANAGER', 'RESELLER', 'USERDEFINED'],
    IfcRoofTypeEnum: ['FLAT_ROOF', 'SHED_ROOF', 'GABLE_ROOF', 'HIP_ROOF', 'HIPPED_GABLE_ROOF', 'GAMBREL_ROOF', 'MANSARD_ROOF', 'BARREL_ROOF', 'RAINBOW_ROOF', 'BUTTERFLY_ROOF', 'PAVILION_ROOF', 'DOME_ROOF', 'FREEFORM', 'USERDEFINED', 'NOTDEFINED'],
    IfcSIPrefix: ['EXA', 'PETA', 'TERA', 'GIGA', 'MEGA', 'KILO', 'HECTO', 'DECA', 'DECI', 'CENTI', 'MILLI', 'MICRO', 'NANO', 'PICO', 'FEMTO', 'ATTO'],
    IfcSIUnitName: ['AMPERE', 'BECQUEREL', 'CANDELA', 'COULOMB', 'CUBIC_METRE', 'DEGREE_CELSIUS', 'FARAD', 'GRAM', 'GRAY', 'HENRY', 'HERTZ', 'JOULE', 'KELVIN', 'LUMEN', 'LUX', 'METRE', 'MOLE', 'NEWTON', 'OHM', 'PASCAL', 'RADIAN', 'SECOND', 'SIEMENS', 'SIEVERT', 'SQUARE_METRE', 'STERADIAN', 'TESLA', 'VOLT', 'WATT', 'WEBER'],
    IfcSanitaryTerminalTypeEnum: ['BATH', 'BIDET', 'CISTERN', 'SHOWER', 'SINK', 'SANITARYFOUNTAIN', 'TOILETPAN', 'URINAL', 'WASHHANDBASIN', 'WCSEAT', 'USERDEFINED', 'NOTDEFINED'],
    IfcSectionTypeEnum: ['UNIFORM', 'TAPERED'],
    IfcSensorTypeEnum: ['COSENSOR', 'CO2SENSOR', 'CONDUCTANCESENSOR', 'CONTACTSENSOR', 'FIRESENSOR', 'FLOWSENSOR', 'FROSTSENSOR', 'GASSENSOR', 'HEATSENSOR', 'HUMIDITYSENSOR', 'IDENTIFIERSENSOR', 'IONCONCENTRATIONSENSOR', 'LEVELSENSOR', 'LIGHTSENSOR', 'MOISTURESENSOR', 'MOVEMENTSENSOR', 'PHSENSOR', 'PRESSURESENSOR', 'RADIATIONSENSOR', 'RADIOACTIVITYSENSOR', 'SMOKESENSOR', 'SOUNDSENSOR', 'TEMPERATURESENSOR', 'WINDSENSOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcSequenceEnum: ['START_START', 'START_FINISH', 'FINISH_START', 'FINISH_FINISH', 'USERDEFINED', 'NOTDEFINED'],
    IfcShadingDeviceTypeEnum: ['JALOUSIE', 'SHUTTER', 'AWNING', 'USERDEFINED', 'NOTDEFINED'],
    IfcSimplePropertyTemplateTypeEnum: ['P_SINGLEVALUE', 'P_ENUMERATEDVALUE', 'P_BOUNDEDVALUE', 'P_LISTVALUE', 'P_TABLEVALUE', 'P_REFERENCEVALUE', 'Q_LENGTH', 'Q_AREA', 'Q_VOLUME', 'Q_COUNT', 'Q_WEIGHT', 'Q_TIME'],
    IfcSlabTypeEnum: ['FLOOR', 'ROOF', 'LANDING', 'BASESLAB', 'USERDEFINED', 'NOTDEFINED'],
    IfcSolarDeviceTypeEnum: ['SOLARCOLLECTOR', 'SOLARPANEL', 'USERDEFINED', 'NOTDEFINED'],
    IfcSpaceHeaterTypeEnum: ['CONVECTOR', 'RADIATOR', 'USERDEFINED', 'NOTDEFINED'],
    IfcSpaceTypeEnum: ['SPACE', 'PARKING', 'GFA', 'INTERNAL', 'EXTERNAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcSpatialZoneTypeEnum: ['CONSTRUCTION', 'FIRESAFETY', 'LIGHTING', 'OCCUPANCY', 'SECURITY', 'THERMAL', 'TRANSPORT', 'VENTILATION', 'USERDEFINED', 'NOTDEFINED'],
    IfcStackTerminalTypeEnum: ['BIRDCAGE', 'COWL', 'RAINWATERHOPPER', 'USERDEFINED', 'NOTDEFINED'],
    IfcStairFlightTypeEnum: ['STRAIGHT', 'WINDER', 'SPIRAL', 'CURVED', 'FREEFORM', 'USERDEFINED', 'NOTDEFINED'],
    IfcStairTypeEnum: ['STRAIGHT_RUN_STAIR', 'TWO_STRAIGHT_RUN_STAIR', 'QUARTER_WINDING_STAIR', 'QUARTER_TURN_STAIR', 'HALF_WINDING_STAIR', 'HALF_TURN_STAIR', 'TWO_QUARTER_WINDING_STAIR', 'TWO_QUARTER_TURN_STAIR', 'THREE_QUARTER_WINDING_STAIR', 'THREE_QUARTER_TURN_STAIR', 'SPIRAL_STAIR', 'DOUBLE_RETURN_STAIR', 'CURVED_RUN_STAIR', 'TWO_CURVED_RUN_STAIR', 'USERDEFINED', 'NOTDEFINED'],
    IfcStateEnum: ['READWRITE', 'READONLY', 'LOCKED', 'READWRITELOCKED', 'READONLYLOCKED'],
    IfcStructuralCurveActivityTypeEnum: ['CONST', 'LINEAR', 'POLYGONAL', 'EQUIDISTANT', 'SINUS', 'PARABOLA', 'DISCRETE', 'USERDEFINED', 'NOTDEFINED'],
    IfcStructuralCurveMemberTypeEnum: ['RIGID_JOINED_MEMBER', 'PIN_JOINED_MEMBER', 'CABLE', 'TENSION_MEMBER', 'COMPRESSION_MEMBER', 'USERDEFINED', 'NOTDEFINED'],
    IfcStructuralSurfaceActivityTypeEnum: ['CONST', 'BILINEAR', 'DISCRETE', 'ISOCONTOUR', 'USERDEFINED', 'NOTDEFINED'],
    IfcStructuralSurfaceMemberTypeEnum: ['BENDING_ELEMENT', 'MEMBRANE_ELEMENT', 'SHELL', 'USERDEFINED', 'NOTDEFINED'],
    IfcSubContractResourceTypeEnum: ['PURCHASE', 'WORK', 'USERDEFINED', 'NOTDEFINED'],
    IfcSurfaceFeatureTypeEnum: ['MARK', 'TAG', 'TREATMENT', 'USERDEFINED', 'NOTDEFINED'],
    IfcSurfaceSide: ['POSITIVE', 'NEGATIVE', 'BOTH'],
    IfcSwitchingDeviceTypeEnum: ['CONTACTOR', 'DIMMERSWITCH', 'EMERGENCYSTOP', 'KEYPAD', 'MOMENTARYSWITCH', 'SELECTORSWITCH', 'STARTER', 'SWITCHDISCONNECTOR', 'TOGGLESWITCH', 'USERDEFINED', 'NOTDEFINED'],
    IfcSystemFurnitureElementTypeEnum: ['PANEL', 'WORKSURFACE', 'USERDEFINED', 'NOTDEFINED'],
    IfcTankTypeEnum: ['BASIN', 'BREAKPRESSURE', 'EXPANSION', 'FEEDANDEXPANSION', 'PRESSUREVESSEL', 'STORAGE', 'VESSEL', 'USERDEFINED', 'NOTDEFINED'],
    IfcTaskDurationEnum: ['ELAPSEDTIME', 'WORKTIME', 'NOTDEFINED'],
    IfcTaskTypeEnum: ['ATTENDANCE', 'CONSTRUCTION', 'DEMOLITION', 'DISMANTLE', 'DISPOSAL', 'INSTALLATION', 'LOGISTIC', 'MAINTENANCE', 'MOVE', 'OPERATION', 'REMOVAL', 'RENOVATION', 'USERDEFINED', 'NOTDEFINED'],
    IfcTendonAnchorTypeEnum: ['COUPLER', 'FIXED_END', 'TENSIONING_END', 'USERDEFINED', 'NOTDEFINED'],
    IfcTendonTypeEnum: ['BAR', 'COATED', 'STRAND', 'WIRE', 'USERDEFINED', 'NOTDEFINED'],
    IfcTextPath: ['LEFT', 'RIGHT', 'UP', 'DOWN'],
    IfcTimeSeriesDataTypeEnum: ['CONTINUOUS', 'DISCRETE', 'DISCRETEBINARY', 'PIECEWISEBINARY', 'PIECEWISECONSTANT', 'PIECEWISECONTINUOUS', 'NOTDEFINED'],
    IfcTransformerTypeEnum: ['CURRENT', 'FREQUENCY', 'INVERTER', 'RECTIFIER', 'VOLTAGE', 'USERDEFINED', 'NOTDEFINED'],
    IfcTransitionCode: ['DISCONTINUOUS', 'CONTINUOUS', 'CONTSAMEGRADIENT', 'CONTSAMEGRADIENTSAMECURVATURE'],
    IfcTransportElementTypeEnum: ['ELEVATOR', 'ESCALATOR', 'MOVINGWALKWAY', 'CRANEWAY', 'LIFTINGGEAR', 'USERDEFINED', 'NOTDEFINED'],
    IfcTrimmingPreference: ['CARTESIAN', 'PARAMETER', 'UNSPECIFIED'],
    IfcTubeBundleTypeEnum: ['FINNED', 'USERDEFINED', 'NOTDEFINED'],
    IfcUnitEnum: ['ABSORBEDDOSEUNIT', 'AMOUNTOFSUBSTANCEUNIT', 'AREAUNIT', 'DOSEEQUIVALENTUNIT', 'ELECTRICCAPACITANCEUNIT', 'ELECTRICCHARGEUNIT', 'ELECTRICCONDUCTANCEUNIT', 'ELECTRICCURRENTUNIT', 'ELECTRICRESISTANCEUNIT', 'ELECTRICVOLTAGEUNIT', 'ENERGYUNIT', 'FORCEUNIT', 'FREQUENCYUNIT', 'ILLUMINANCEUNIT', 'INDUCTANCEUNIT', 'LENGTHUNIT', 'LUMINOUSFLUXUNIT', 'LUMINOUSINTENSITYUNIT', 'MAGNETICFLUXDENSITYUNIT', 'MAGNETICFLUXUNIT', 'MASSUNIT', 'PLANEANGLEUNIT', 'POWERUNIT', 'PRESSUREUNIT', 'RADIOACTIVITYUNIT', 'SOLIDANGLEUNIT', 'THERMODYNAMICTEMPERATUREUNIT', 'TIMEUNIT', 'VOLUMEUNIT', 'USERDEFINED'],
    IfcUnitaryControlElementTypeEnum: ['ALARMPANEL', 'CONTROLPANEL', 'GASDETECTIONPANEL', 'INDICATORPANEL', 'MIMICPANEL', 'HUMIDISTAT', 'THERMOSTAT', 'WEATHERSTATION', 'USERDEFINED', 'NOTDEFINED'],
    IfcUnitaryEquipmentTypeEnum: ['AIRHANDLER', 'AIRCONDITIONINGUNIT', 'DEHUMIDIFIER', 'SPLITSYSTEM', 'ROOFTOPUNIT', 'USERDEFINED', 'NOTDEFINED'],
    IfcValveTypeEnum: ['AIRRELEASE', 'ANTIVACUUM', 'CHANGEOVER', 'CHECK', 'COMMISSIONING', 'DIVERTING', 'DRAWOFFCOCK', 'DOUBLECHECK', 'DOUBLEREGULATING', 'FAUCET', 'FLUSHING', 'GASCOCK', 'GASTAP', 'ISOLATING', 'MIXING', 'PRESSUREREDUCING', 'PRESSURERELIEF', 'REGULATING', 'SAFETYCUTOFF', 'STEAMTRAP', 'STOPCOCK', 'USERDEFINED', 'NOTDEFINED'],
    IfcVibrationIsolatorTypeEnum: ['COMPRESSION', 'SPRING', 'USERDEFINED', 'NOTDEFINED'],
    IfcVoidingFeatureTypeEnum: ['CUTOUT', 'NOTCH', 'HOLE', 'MITER', 'CHAMFER', 'EDGE', 'USERDEFINED', 'NOTDEFINED'],
    IfcWallTypeEnum: ['MOVABLE', 'PARAPET', 'PARTITIONING', 'PLUMBINGWALL', 'SHEAR', 'SOLIDWALL', 'STANDARD', 'POLYGONAL', 'ELEMENTEDWALL', 'USERDEFINED', 'NOTDEFINED'],
    IfcWasteTerminalTypeEnum: ['FLOORTRAP', 'FLOORWASTE', 'GULLYSUMP', 'GULLYTRAP', 'ROOFDRAIN', 'WASTEDISPOSALUNIT', 'WASTETRAP', 'USERDEFINED', 'NOTDEFINED'],
    IfcWindowPanelOperationEnum: ['SIDEHUNGRIGHTHAND', 'SIDEHUNGLEFTHAND', 'TILTANDTURNRIGHTHAND', 'TILTANDTURNLEFTHAND', 'TOPHUNG', 'BOTTOMHUNG', 'PIVOTHORIZONTAL', 'PIVOTVERTICAL', 'SLIDINGHORIZONTAL', 'SLIDINGVERTICAL', 'REMOVABLECASEMENT', 'FIXEDCASEMENT', 'OTHEROPERATION', 'NOTDEFINED'],
    IfcWindowPanelPositionEnum: ['LEFT', 'MIDDLE', 'RIGHT', 'BOTTOM', 'TOP', 'NOTDEFINED'],
    IfcWindowStyleConstructionEnum: ['ALUMINIUM', 'HIGH_GRADE_STEEL', 'STEEL', 'WOOD', 'ALUMINIUM_WOOD', 'PLASTIC', 'OTHER_CONSTRUCTION', 'NOTDEFINED'],
    IfcWindowStyleOperationEnum: ['SINGLE_PANEL', 'DOUBLE_PANEL_VERTICAL', 'DOUBLE_PANEL_HORIZONTAL', 'TRIPLE_PANEL_VERTICAL', 'TRIPLE_PANEL_BOTTOM', 'TRIPLE_PANEL_TOP', 'TRIPLE_PANEL_LEFT', 'TRIPLE_PANEL_RIGHT', 'TRIPLE_PANEL_HORIZONTAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcWindowTypeEnum: ['WINDOW', 'SKYLIGHT', 'LIGHTDOME', 'USERDEFINED', 'NOTDEFINED'],
    IfcWindowTypePartitioningEnum: ['SINGLE_PANEL', 'DOUBLE_PANEL_VERTICAL', 'DOUBLE_PANEL_HORIZONTAL', 'TRIPLE_PANEL_VERTICAL', 'TRIPLE_PANEL_BOTTOM', 'TRIPLE_PANEL_TOP', 'TRIPLE_PANEL_LEFT', 'TRIPLE_PANEL_RIGHT', 'TRIPLE_PANEL_HORIZONTAL', 'USERDEFINED', 'NOTDEFINED'],
    IfcWorkCalendarTypeEnum: ['FIRSTSHIFT', 'SECONDSHIFT', 'THIRDSHIFT', 'USERDEFINED', 'NOTDEFINED'],
    IfcWorkPlanTypeEnum: ['ACTUAL', 'BASELINE', 'PLANNED', 'USERDEFINED', 'NOTDEFINED'],
    IfcWorkScheduleTypeEnum: ['ACTUAL', 'BASELINE', 'PLANNED', 'USERDEFINED', 'NOTDEFINED'],
  },

  selects: {
    IfcActorSelect: ['IfcOrganization', 'IfcPerson', 'IfcPersonAndOrganization'],
    IfcAppliedValueSelect: ['IfcMeasureWithUnit', 'IfcReference', 'IfcValue'],
    IfcAxis2Placement: ['IfcAxis2Placement2D', 'IfcAxis2Placement3D'],
    IfcBendingParameterSelect: ['IfcLengthMeasure', 'IfcPlaneAngleMeasure'],
    IfcBooleanOperand: ['IfcBooleanResult', 'IfcCsgPrimitive3D', 'IfcHalfSpaceSolid', 'IfcSolidModel', 'IfcTessellatedFaceSet'],
    IfcClassificationReferenceSelect: ['IfcClassification', 'IfcClassificationReference'],
    IfcClassificationSelect: ['IfcClassification', 'IfcClassificationReference'],
    IfcColour: ['IfcColourSpecification', 'IfcPreDefinedColour'],
    IfcColourOrFactor: ['IfcColourRgb', 'IfcNormalisedRatioMeasure'],
    IfcCoordinateReferenceSystemSelect: ['IfcCoordinateReferenceSystem', 'IfcGeometricRepresentationContext'],
    IfcCsgSelect: ['IfcBooleanResult', 'IfcCsgPrimitive3D'],
    IfcCurveFontOrScaledCurveFontSelect: ['IfcCurveStyleFontAndScaling', 'IfcCurveStyleFontSelect'],
    IfcCurveOnSurface: ['IfcCompositeCurveOnSurface', 'IfcPcurve', 'IfcSurfaceCurve'],
    IfcCurveOrEdgeCurve: ['IfcBoundedCurve', 'IfcEdgeCurve'],
    IfcCurveStyleFontSelect: ['IfcCurveStyleFont', 'IfcPreDefinedCurveFont'],
    IfcDefinitionSelect: ['IfcObjectDefinition', 'IfcPropertyDefinition'],
    IfcDerivedMeasureValue: ['IfcAbsorbedDoseMeasure', 'IfcAccelerationMeasure', 'IfcAngularVelocityMeasure', 'IfcAreaDensityMeasure', 'IfcCompoundPlaneAngleMeasure', 'IfcCurvatureMeasure', 'IfcDoseEquivalentMeasure', 'IfcDynamicViscosityMeasure', 'IfcElectricCapacitanceMeasure', 'IfcElectricChargeMeasure', 'IfcElectricConductanceMeasure', 'IfcElectricResistanceMeasure', 'IfcElectricVoltageMeasure', 'IfcEnergyMeasure', 'IfcForceMeasure', 'IfcFrequencyMeasure', 'IfcHeatFluxDensityMeasure', 'IfcHeatingValueMeasure', 'IfcIlluminanceMeasure', 'IfcInductanceMeasure', 'IfcIntegerCountRateMeasure', 'IfcIonConcentrationMeasure', 'IfcIsothermalMoistureCapacityMeasure', 'IfcKinematicViscosityMeasure', 'IfcLinearForceMeasure', 'IfcLinearMomentMeasure', 'IfcLinearStiffnessMeasure', 'IfcLinearVelocityMeasure', 'IfcLuminousFluxMeasure', 'IfcLuminousIntensityDistributionMeasure', 'IfcMagneticFluxDensityMeasure', 'IfcMagneticFluxMeasure', 'IfcMassDensityMeasure', 'IfcMassFlowRateMeasure', 'IfcMassPerLengthMeasure', 'IfcModulusOfElasticityMeasure', 'IfcModulusOfLinearSubgradeReactionMeasure', 'IfcModulusOfRotationalSubgradeReactionMeasure', 'IfcModulusOfSubgradeReactionMeasure', 'IfcMoistureDiffusivityMeasure', 'IfcMolecularWeightMeasure', 'IfcMomentOfInertiaMeasure', 'IfcMonetaryMeasure', 'IfcPHMeasure', 'IfcPlanarForceMeasure', 'IfcPowerMeasure', 'IfcPressureMeasure', 'IfcRadioActivityMeasure', 'IfcRotationalFrequencyMeasure', 'IfcRotationalMassMeasure', 'IfcRotationalStiffnessMeasure', 'IfcSectionModulusMeasure', 'IfcSectionalAreaIntegralMeasure', 'IfcShearModulusMeasure', 'IfcSoundPowerLevelMeasure', 'IfcSoundPowerMeasure', 'IfcSoundPressureLevelMeasure', 'IfcSoundPressureMeasure', 'IfcSpecificHeatCapacityMeasure', 'IfcTemperatureGradientMeasure', 'IfcTemperatureRateOfChangeMeasure', 'IfcThermalAdmittanceMeasure', 'IfcThermalConductivityMeasure', 'IfcThermalExpansionCoefficientMeasure', 'IfcThermalResistanceMeasure', 'IfcThermalTransmittanceMeasure', 'IfcTorqueMeasure', 'IfcVaporPermeabilityMeasure', 'IfcVolumetricFlowRateMeasure', 'IfcWarpingConstantMeasure', 'IfcWarpingMomentMeasure'],
    IfcDocumentSelect: ['IfcDocumentInformation', 'IfcDocumentReference'],
    IfcFillStyleSelect: ['IfcColour', 'IfcExternallyDefinedHatchStyle', 'IfcFillAreaStyleHatching', 'IfcFillAreaStyleTiles'],
    IfcGeometricSetSelect: ['IfcCurve', 'IfcPoint', 'IfcSurface'],
    IfcGridPlacementDirectionSelect: ['IfcDirection', 'IfcVirtualGridIntersection'],
    IfcHatchLineDistanceSelect: ['IfcPositiveLengthMeasure', 'IfcVector'],
    IfcLayeredItem: ['IfcRepresentation', 'IfcRepresentationItem'],
    IfcLibrarySelect: ['IfcLibraryInformation', 'IfcLibraryReference'],
    IfcLightDistributionDataSourceSelect: ['IfcExternalReference', 'IfcLightIntensityDistribution'],
    IfcMaterialSelect: ['IfcMaterialDefinition', 'IfcMaterialList', 'IfcMaterialUsageDefinition'],
    IfcMeasureValue: ['IfcAmountOfSubstanceMeasure', 'IfcAreaMeasure', 'IfcComplexNumber', 'IfcContextDependentMeasure', 'IfcCountMeasure', 'IfcDescriptiveMeasure', 'IfcElectricCurrentMeasure', 'IfcLengthMeasure', 'IfcLuminousIntensityMeasure', 'IfcMassMeasure', 'IfcNonNegativeLengthMeasure', 'IfcNormalisedRatioMeasure', 'IfcNumericMeasure', 'IfcParameterValue', 'IfcPlaneAngleMeasure', 'IfcPositiveLengthMeasure', 'IfcPositivePlaneAngleMeasure', 'IfcPositiveRatioMeasure', 'IfcRatioMeasure', 'IfcSolidAngleMeasure', 'IfcThermodynamicTemperatureMeasure', 'IfcTimeMeasure', 'IfcVolumeMeasure'],
    IfcMetricValueSelect: ['IfcAppliedValue', 'IfcMeasureWithUnit', 'IfcReference', 'IfcTable', 'IfcTimeSeries', 'IfcValue'],
    IfcModulusOfRotationalSubgradeReactionSelect: ['IfcBoolean', 'IfcModulusOfRotationalSubgradeReactionMeasure'],
    IfcModulusOfSubgradeReactionSelect: ['IfcBoolean', 'IfcModulusOfSubgradeReactionMeasure'],
    IfcModulusOfTranslationalSubgradeReactionSelect: ['IfcBoolean', 'IfcModulusOfLinearSubgradeReactionMeasure'],
    IfcObjectReferenceSelect: ['IfcAddress', 'IfcAppliedValue', 'IfcExternalReference', 'IfcMaterialDefinition', 'IfcOrganization', 'IfcPerson', 'IfcPersonAndOrganization', 'IfcTable', 'IfcTimeSeries'],
    IfcPointOrVertexPoint: ['IfcPoint', 'IfcVertexPoint'],
    IfcPresentationStyleSelect: ['IfcCurveStyle', 'IfcFillAreaStyle', 'IfcNullStyle', 'IfcSurfaceStyle', 'IfcTextStyle'],
    IfcProcessSelect: ['IfcProcess', 'IfcTypeProcess'],
    IfcProductRepresentationSelect: ['IfcProductDefinitionShape', 'IfcRepresentationMap'],
    IfcProductSelect: ['IfcProduct', 'IfcTypeProduct'],
    IfcPropertySetDefinitionSelect: ['IfcPropertySetDefinition', 'IfcPropertySetDefinitionSet'],
    IfcResourceObjectSelect: ['IfcActorRole', 'IfcAppliedValue', 'IfcApproval', 'IfcConstraint', 'IfcContextDependentUnit', 'IfcConversionBasedUnit', 'IfcExternalInformation', 'IfcExternalReference', 'IfcMaterialDefinition', 'IfcOrganization', 'IfcPerson', 'IfcPersonAndOrganization', 'IfcPhysicalQuantity', 'IfcProfileDef', 'IfcPropertyAbstraction', 'IfcTimeSeries'],
    IfcResourceSelect: ['IfcResource', 'IfcTypeResource'],
    IfcRotationalStiffnessSelect: ['IfcBoolean', 'IfcRotationalStiffnessMeasure'],
    IfcSegmentIndexSelect: ['IfcArcIndex', 'IfcLineIndex'],
    IfcShell: ['IfcClosedShell', 'IfcOpenShell'],
    IfcSimpleValue: ['IfcBinary', 'IfcBoolean', 'IfcDate', 'IfcDateTime', 'IfcDuration', 'IfcIdentifier', 'IfcInteger', 'IfcLabel', 'IfcLogical', 'IfcPositiveInteger', 'IfcReal', 'IfcText', 'IfcTime', 'IfcTimeStamp'],
    IfcSizeSelect: ['IfcDescriptiveMeasure', 'IfcLengthMeasure', 'IfcNormalisedRatioMeasure', 'IfcPositiveLengthMeasure', 'IfcPositiveRatioMeasure', 'IfcRatioMeasure'],
    IfcSolidOrShell: ['IfcClosedShell', 'IfcSolidModel'],
    IfcSpaceBoundarySelect: ['IfcExternalSpatialElement', 'IfcSpace'],
    IfcSpecularHighlightSelect: ['IfcSpecularExponent', 'IfcSpecularRoughness'],
    IfcStructuralActivityAssignmentSelect: ['IfcElement', 'IfcStructuralItem'],
    IfcStyleAssignmentSelect: ['IfcPresentationStyle', 'IfcPresentationStyleAssignment'],
    IfcSurfaceOrFaceSurface: ['IfcFaceBasedSurfaceModel', 'IfcFaceSurface', 'IfcSurface'],
    IfcSurfaceStyleElementSelect: ['IfcExternallyDefinedSurfaceStyle', 'IfcSurfaceStyleLighting', 'IfcSurfaceStyleRefraction', 'IfcSurfaceStyleShading', 'IfcSurfaceStyleWithTextures'],
    IfcTextFontSelect: ['IfcExternallyDefinedTextFont', 'IfcPreDefinedTextFont'],
    IfcTimeOrRatioSelect: ['IfcDuration', 'IfcRatioMeasure'],
    IfcTranslationalStiffnessSelect: ['IfcBoolean', 'IfcLinearStiffnessMeasure'],
    IfcTrimmingSelect: ['IfcCartesianPoint', 'IfcParameterValue'],
    IfcUnit: ['IfcDerivedUnit', 'IfcMonetaryUnit', 'IfcNamedUnit'],
    IfcValue: ['IfcDerivedMeasureValue', 'IfcMeasureValue', 'IfcSimpleValue'],
    IfcVectorOrDirection: ['IfcDirection', 'IfcVector'],
    IfcWarpingStiffnessSelect: ['IfcBoolean', 'IfcWarpingMomentMeasure'],
  },
};

/**
 * Get entity metadata by name (case-insensitive)
 */
export function getEntityMetadata(typeName: string): EntityMetadata | undefined {
  // Normalize to IfcXxx format
  const normalized = normalizeTypeName(typeName);
  return SCHEMA_REGISTRY.entities[normalized];
}

/**
 * Get all attributes for an entity (including inherited)
 */
export function getAllAttributesForEntity(typeName: string): AttributeMetadata[] {
  const metadata = getEntityMetadata(typeName);
  return metadata?.allAttributes || [];
}

/**
 * Get inheritance chain for an entity
 */
export function getInheritanceChainForEntity(typeName: string): string[] {
  const metadata = getEntityMetadata(typeName);
  return metadata?.inheritanceChain || [];
}

/**
 * Check if a type is a known entity
 */
export function isKnownEntity(typeName: string): boolean {
  const normalized = normalizeTypeName(typeName);
  return normalized in SCHEMA_REGISTRY.entities;
}

/**
 * Normalize type name to IfcXxx format
 */
function normalizeTypeName(name: string): string {
  // Already in IfcPascalCase — return as-is
  if (name.startsWith('Ifc') && name.length > 3 && name[3] >= 'A' && name[3] <= 'Z') {
    return name;
  }
  // Convert UPPERCASE STEP names: IFCWALL -> IfcWall, IFCWALLTYPE -> IfcWallType
  const upper = name.toUpperCase();
  if (upper.startsWith('IFC')) {
    const rest = upper.substring(3);
    // Lookup by matching uppercase keys in the registry
    for (const key of Object.keys(SCHEMA_REGISTRY.entities)) {
      if (key.toUpperCase() === 'IFC' + rest) return key;
    }
    // Fallback: best-effort single-word conversion
    return 'Ifc' + rest.charAt(0) + rest.substring(1).toLowerCase();
  }
  return name;
}
