/// <summary>
        /// Initializes a new instance of the <see cref="ApertureConstructionSet" /> class.
        /// </summary>
        /// <param name="interiorConstruction">A WindowConstruction for apertures with an Outdoors boundary condition, False is_operable property, and a Wall face type for their parent face..</param>
        /// <param name="windowConstruction">A WindowConstruction for all apertures with a Surface boundary condition..</param>
        /// <param name="skylightConstruction">A WindowConstruction for apertures with a Outdoors boundary condition, False is_operable property, and a RoofCeiling or Floor face type for their parent face..</param>
        /// <param name="operableConstruction">A WindowConstruction for all apertures with an Outdoors boundary condition and True is_operable property..</param>
        public ApertureConstructionSet
        (
            // Required parameters
            WindowConstruction interiorConstruction = default, WindowConstruction windowConstruction = default, WindowConstruction skylightConstruction = default, WindowConstruction operableConstruction = default // Optional parameters
        ) : base()                                                                                                                                                                                                   // BaseClass
        {
            this.InteriorConstruction = interiorConstruction;
            this.WindowConstruction   = windowConstruction;
            this.SkylightConstruction = skylightConstruction;
            this.OperableConstruction = operableConstruction;

            // Set non-required readonly properties with defaultValue
            this.Type = "ApertureConstructionSet";
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="WindowConstructionShade" /> class.
        /// </summary>
        /// <param name="windowConstruction">A WindowConstruction object that serves as the \&quot;switched off\&quot; version of the construction (aka. the \&quot;bare construction\&quot;). The shade_material and shade_location will be used to modify this starting construction. (required).</param>
        /// <param name="shadeMaterial">Identifier of a An EnergyWindowMaterialShade or an EnergyWindowMaterialBlind that serves as the shading layer for this construction. This can also be an EnergyWindowMaterialGlazing, which will indicate that the WindowConstruction has a dynamically-controlled glass pane like an electrochromic window assembly. (required).</param>
        /// <param name="shadeLocation">Text to indicate where in the window assembly the shade_material is located.  Note that the WindowConstruction must have at least one gas gap to use the \&quot;Between\&quot; option. Also note that, for a WindowConstruction with more than one gas gap, the \&quot;Between\&quot; option defalts to using the inner gap as this is the only option that EnergyPlus supports..</param>
        /// <param name="controlType">Text to indicate how the shading device is controlled, which determines when the shading is “on” or “off.”.</param>
        /// <param name="setpoint">A number that corresponds to the specified control_type. This can be a value in (W/m2), (C) or (W) depending upon the control type.Note that this value cannot be None for any control type except \&quot;AlwaysOn.\&quot;.</param>
        /// <param name="schedule">An optional ScheduleRuleset or ScheduleFixedInterval to be applied on top of the control_type. If None, the control_type will govern all behavior of the construction..</param>
        /// <param name="identifier">Text string for a unique object ID. This identifier remains constant as the object is mutated, copied, and serialized to different formats (eg. dict, idf, osm). This identifier is also used to reference the object across a Model. It must be &lt; 100 characters, use only ASCII characters and exclude (, ; ! \\n \\t). (required).</param>
        /// <param name="displayName">Display name of the object with no character restrictions..</param>
        public WindowConstructionShade
        (
            string identifier, WindowConstruction windowConstruction, AnyOf <EnergyWindowMaterialShade, EnergyWindowMaterialBlind, EnergyWindowMaterialGlazing> shadeMaterial,                                                               // Required parameters
            string displayName = default, ShadeLocation shadeLocation = ShadeLocation.Interior, ControlType controlType = ControlType.AlwaysOn, double setpoint = default, AnyOf <ScheduleRuleset, ScheduleFixedInterval> schedule = default // Optional parameters
        ) : base(identifier: identifier, displayName: displayName)                                                                                                                                                                           // BaseClass
        {
            // to ensure "windowConstruction" is required (not null)
            this.WindowConstruction = windowConstruction ?? throw new ArgumentNullException("windowConstruction is a required property for WindowConstructionShade and cannot be null");
            // to ensure "shadeMaterial" is required (not null)
            this.ShadeMaterial = shadeMaterial ?? throw new ArgumentNullException("shadeMaterial is a required property for WindowConstructionShade and cannot be null");
            this.ShadeLocation = shadeLocation;
            this.ControlType   = controlType;
            this.Setpoint      = setpoint;
            this.Schedule      = schedule;

            // Set non-required readonly properties with defaultValue
            this.Type = "WindowConstructionShade";
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DoorConstructionSet" /> class.
        /// </summary>
        /// <param name="interiorConstruction">An OpaqueConstruction for all opaque doors with a Surface boundary condition..</param>
        /// <param name="exteriorConstruction">An OpaqueConstruction for opaque doors with an Outdoors boundary condition and a Wall face type for their parent face..</param>
        /// <param name="overheadConstruction">An OpaqueConstruction for opaque doors with an Outdoors boundary condition and a RoofCeiling or Floor type for their parent face..</param>
        /// <param name="exteriorGlassConstruction">A WindowConstruction for all glass doors with an Outdoors boundary condition..</param>
        /// <param name="interiorGlassConstruction">A WindowConstruction for all glass doors with a Surface boundary condition..</param>
        public DoorConstructionSet
        (
            // Required parameters
            OpaqueConstruction interiorConstruction = default, OpaqueConstruction exteriorConstruction = default, OpaqueConstruction overheadConstruction = default, WindowConstruction exteriorGlassConstruction = default, WindowConstruction interiorGlassConstruction = default // Optional parameters
        ) : base()                                                                                                                                                                                                                                                                  // BaseClass
        {
            this.InteriorConstruction      = interiorConstruction;
            this.ExteriorConstruction      = exteriorConstruction;
            this.OverheadConstruction      = overheadConstruction;
            this.ExteriorGlassConstruction = exteriorGlassConstruction;
            this.InteriorGlassConstruction = interiorGlassConstruction;

            // Set non-required readonly properties with defaultValue
            this.Type = "DoorConstructionSet";
        }