You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2024/09/26 08:29:14 UTC

(plc4x) branch develop updated: refactor(code-gen/go): cleanup child creation

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new 5fa00f1f5b refactor(code-gen/go): cleanup child creation
5fa00f1f5b is described below

commit 5fa00f1f5ba3a7353ce3d35d53e3cfc0d697471c
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Sep 26 10:29:06 2024 +0200

    refactor(code-gen/go): cleanup child creation
---
 .../templates/go/complex-type-template.go.ftlh     |    2 +-
 .../readwrite/model/CIPEncapsulationPacket.go      |    8 +-
 .../abeth/readwrite/model/DF1RequestCommand.go     |    2 +-
 .../abeth/readwrite/model/DF1RequestMessage.go     |    2 +-
 .../abeth/readwrite/model/DF1ResponseMessage.go    |    2 +-
 .../discovery/readwrite/model/AdsDiscoveryBlock.go |   18 +-
 .../ads/readwrite/model/AdsMultiRequestItem.go     |    6 +-
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |   42 +-
 plc4go/protocols/bacnetip/readwrite/model/APDU.go  |   18 +-
 .../readwrite/model/BACnetApplicationTag.go        |   26 +-
 .../readwrite/model/BACnetCalendarEntry.go         |    6 +-
 .../bacnetip/readwrite/model/BACnetChannelValue.go |   28 +-
 .../bacnetip/readwrite/model/BACnetClientCOV.go    |    4 +-
 .../model/BACnetConfirmedServiceRequest.go         |   64 +-
 ...edServiceRequestAtomicReadFileStreamOrRecord.go |    4 +-
 ...rviceRequestConfirmedTextMessageMessageClass.go |    4 +-
 .../BACnetConfirmedServiceRequestReadRangeRange.go |    6 +-
 .../readwrite/model/BACnetConstructedData.go       | 1316 ++++++++++----------
 .../bacnetip/readwrite/model/BACnetContextTag.go   |   28 +-
 .../bacnetip/readwrite/model/BACnetError.go        |   16 +-
 .../model/BACnetEventLogRecordLogDatum.go          |    6 +-
 .../readwrite/model/BACnetEventParameter.go        |   38 +-
 ...BACnetEventParameterChangeOfValueCivCriteria.go |    4 +-
 .../readwrite/model/BACnetFaultParameter.go        |   16 +-
 ...etFaultParameterFaultExtendedParametersEntry.go |   28 +-
 ...tFaultParameterFaultOutOfRangeMaxNormalValue.go |    8 +-
 ...tFaultParameterFaultOutOfRangeMinNormalValue.go |    8 +-
 .../bacnetip/readwrite/model/BACnetHostAddress.go  |    6 +-
 .../model/BACnetLandingCallStatusCommand.go        |    4 +-
 .../bacnetip/readwrite/model/BACnetLogData.go      |    6 +-
 .../readwrite/model/BACnetLogDataLogDataEntry.go   |   18 +-
 .../readwrite/model/BACnetLogRecordLogDatum.go     |   22 +-
 .../model/BACnetNotificationParameters.go          |   40 +-
 ...ationParametersChangeOfDiscreteValueNewValue.go |   20 +-
 ...tNotificationParametersChangeOfValueNewValue.go |    4 +-
 .../readwrite/model/BACnetOptionalBinaryPV.go      |    4 +-
 .../model/BACnetOptionalCharacterString.go         |    4 +-
 .../bacnetip/readwrite/model/BACnetOptionalREAL.go |    4 +-
 .../readwrite/model/BACnetOptionalUnsigned.go      |    4 +-
 .../readwrite/model/BACnetPriorityValue.go         |   30 +-
 .../readwrite/model/BACnetProcessIdSelection.go    |    4 +-
 .../BACnetPropertyAccessResultAccessResult.go      |    4 +-
 .../readwrite/model/BACnetPropertyStates.go        |  118 +-
 .../bacnetip/readwrite/model/BACnetRecipient.go    |    4 +-
 .../bacnetip/readwrite/model/BACnetScale.go        |    4 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   30 +-
 ...BACnetServiceAckAtomicReadFileStreamOrRecord.go |    4 +-
 .../bacnetip/readwrite/model/BACnetShedLevel.go    |    6 +-
 .../readwrite/model/BACnetSpecialEventPeriod.go    |    4 +-
 .../bacnetip/readwrite/model/BACnetTimeStamp.go    |    6 +-
 .../readwrite/model/BACnetTimerStateChangeValue.go |   34 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   26 +-
 .../BACnetUnconfirmedServiceRequestWhoHasObject.go |    4 +-
 .../bacnetip/readwrite/model/BACnetValueSource.go  |    6 +-
 plc4go/protocols/bacnetip/readwrite/model/BVLC.go  |   26 +-
 plc4go/protocols/bacnetip/readwrite/model/NLM.go   |   44 +-
 .../cbus/readwrite/model/AccessControlData.go      |   16 +-
 .../cbus/readwrite/model/AirConditioningData.go    |   38 +-
 plc4go/protocols/cbus/readwrite/model/CALData.go   |   20 +-
 plc4go/protocols/cbus/readwrite/model/CALReply.go  |    4 +-
 .../protocols/cbus/readwrite/model/CBusCommand.go  |    8 +-
 .../protocols/cbus/readwrite/model/CBusMessage.go  |    4 +-
 .../model/CBusPointToMultiPointCommand.go          |    4 +-
 .../readwrite/model/CBusPointToPointCommand.go     |    4 +-
 .../model/CBusPointToPointToMultiPointCommand.go   |    4 +-
 .../readwrite/model/ClockAndTimekeepingData.go     |    6 +-
 .../protocols/cbus/readwrite/model/EncodedReply.go |    4 +-
 .../cbus/readwrite/model/ErrorReportingData.go     |    2 +-
 .../model/ErrorReportingSystemCategoryType.go      |   12 +-
 .../cbus/readwrite/model/IdentifyReplyCommand.go   |   36 +-
 .../cbus/readwrite/model/LevelInformation.go       |    6 +-
 .../protocols/cbus/readwrite/model/LightingData.go |   10 +-
 .../cbus/readwrite/model/MeasurementData.go        |    2 +-
 .../readwrite/model/MediaTransportControlData.go   |   42 +-
 .../protocols/cbus/readwrite/model/MeteringData.go |   20 +-
 .../protocols/cbus/readwrite/model/MonitoredSAL.go |    4 +-
 .../cbus/readwrite/model/ParameterValue.go         |   22 +-
 plc4go/protocols/cbus/readwrite/model/Reply.go     |    6 +-
 .../cbus/readwrite/model/ReplyOrConfirmation.go    |    6 +-
 plc4go/protocols/cbus/readwrite/model/Request.go   |   14 +-
 plc4go/protocols/cbus/readwrite/model/SALData.go   |   46 +-
 .../protocols/cbus/readwrite/model/SecurityData.go |   96 +-
 .../cbus/readwrite/model/StatusRequest.go          |    6 +-
 .../cbus/readwrite/model/TelephonyData.go          |   24 +-
 .../cbus/readwrite/model/TriggerControlData.go     |   10 +-
 plc4go/protocols/df1/readwrite/model/DF1Command.go |    4 +-
 plc4go/protocols/df1/readwrite/model/DF1Symbol.go  |    6 +-
 plc4go/protocols/eip/readwrite/model/CipService.go |   50 +-
 .../eip/readwrite/model/CommandSpecificDataItem.go |    4 +-
 .../eip/readwrite/model/DataSegmentType.go         |    2 +-
 plc4go/protocols/eip/readwrite/model/EipPacket.go  |   26 +-
 .../eip/readwrite/model/LogicalSegmentType.go      |    6 +-
 .../protocols/eip/readwrite/model/PathSegment.go   |    6 +-
 .../eip/readwrite/model/PortSegmentType.go         |    4 +-
 plc4go/protocols/eip/readwrite/model/TypeId.go     |   10 +-
 .../firmata/readwrite/model/FirmataCommand.go      |   10 +-
 .../firmata/readwrite/model/FirmataMessage.go      |   10 +-
 .../firmata/readwrite/model/SysexCommand.go        |   30 +-
 plc4go/protocols/knxnetip/readwrite/model/Apdu.go  |    4 +-
 .../knxnetip/readwrite/model/ApduControl.go        |    8 +-
 .../protocols/knxnetip/readwrite/model/ApduData.go |   32 +-
 .../knxnetip/readwrite/model/ApduDataExt.go        |   82 +-
 plc4go/protocols/knxnetip/readwrite/model/CEMI.go  |   46 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |    4 +-
 .../knxnetip/readwrite/model/ComObjectTable.go     |    6 +-
 .../model/ConnectionRequestInformation.go          |    4 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |    4 +-
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |    6 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |   32 +-
 .../knxnetip/readwrite/model/LDataFrame.go         |    6 +-
 .../knxnetip/readwrite/model/ServiceId.go          |   14 +-
 .../protocols/modbus/readwrite/model/ModbusADU.go  |    6 +-
 .../protocols/modbus/readwrite/model/ModbusPDU.go  |   78 +-
 .../readwrite/model/ExtensionObjectDefinition.go   |  464 +++----
 .../protocols/opcua/readwrite/model/MessagePDU.go  |   16 +-
 .../opcua/readwrite/model/NodeIdTypeDefinition.go  |   12 +-
 .../opcua/readwrite/model/OpenChannelMessage.go    |    4 +-
 plc4go/protocols/opcua/readwrite/model/Payload.go  |    4 +-
 .../readwrite/model/UserIdentityTokenDefinition.go |    8 +-
 plc4go/protocols/opcua/readwrite/model/Variant.go  |   52 +-
 plc4go/protocols/s7/readwrite/model/COTPPacket.go  |   12 +-
 .../protocols/s7/readwrite/model/COTPParameter.go  |   10 +-
 .../s7/readwrite/model/CycServiceItemType.go       |    4 +-
 plc4go/protocols/s7/readwrite/model/S7Address.go   |    2 +-
 .../s7/readwrite/model/S7DataAlarmMessage.go       |    4 +-
 plc4go/protocols/s7/readwrite/model/S7Message.go   |    8 +-
 plc4go/protocols/s7/readwrite/model/S7Parameter.go |   14 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |    2 +-
 plc4go/protocols/s7/readwrite/model/S7Payload.go   |    8 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   68 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |    2 +-
 131 files changed, 1935 insertions(+), 1935 deletions(-)

diff --git a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
index 8823bf5051..ab21cc3f2e 100644
--- a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
@@ -1121,7 +1121,7 @@ func (m *_${type.name}) parse(ctx context.Context, readBuffer utils.ReadBuffer<#
 						</#if>: // ${case.name}
                     </...@compress>
 
-		if _child, err = (&_${case.name}{}).parse(ctx, readBuffer, m<#if case.allParserArguments.isPresent()>, <#list case.allParserArguments.orElseThrow() as parserArgument><#if <#--TODO: here DF1ResponseMessage throws a payloadLength not present: meaning that some feature is not rightfully implemented as the result should be a error not a missing pointer-->type.getPropertyFieldFromThisOrParentByName(parserArgument.name).isPresent() && type.getPropertyFieldFromThisOrParentByName(parserArgumen [...]
+		if _child, err = new(_${case.name}).parse(ctx, readBuffer, m<#if case.allParserArguments.isPresent()>, <#list case.allParserArguments.orElseThrow() as parserArgument><#if <#--TODO: here DF1ResponseMessage throws a payloadLength not present: meaning that some feature is not rightfully implemented as the result should be a error not a missing pointer-->type.getPropertyFieldFromThisOrParentByName(parserArgument.name).isPresent() && type.getPropertyFieldFromThisOrParentByName(parserArgumen [...]
 			return nil, errors.Wrap(err, "Error parsing sub-type ${case.name} for type-switch of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 		}
 				</#list>
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
index 0d76932e27..4fb5ffcea3 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
@@ -242,19 +242,19 @@ func (m *_CIPEncapsulationPacket) parse(ctx context.Context, readBuffer utils.Re
 	var _child CIPEncapsulationPacket
 	switch {
 	case commandType == 0x0101: // CIPEncapsulationConnectionRequest
-		if _child, err = (&_CIPEncapsulationConnectionRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CIPEncapsulationConnectionRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CIPEncapsulationConnectionRequest for type-switch of CIPEncapsulationPacket")
 		}
 	case commandType == 0x0201: // CIPEncapsulationConnectionResponse
-		if _child, err = (&_CIPEncapsulationConnectionResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CIPEncapsulationConnectionResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CIPEncapsulationConnectionResponse for type-switch of CIPEncapsulationPacket")
 		}
 	case commandType == 0x0107: // CIPEncapsulationReadRequest
-		if _child, err = (&_CIPEncapsulationReadRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CIPEncapsulationReadRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CIPEncapsulationReadRequest for type-switch of CIPEncapsulationPacket")
 		}
 	case commandType == 0x0207: // CIPEncapsulationReadResponse
-		if _child, err = (&_CIPEncapsulationReadResponse{}).parse(ctx, readBuffer, m, packetLen); err != nil {
+		if _child, err = new(_CIPEncapsulationReadResponse).parse(ctx, readBuffer, m, packetLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CIPEncapsulationReadResponse for type-switch of CIPEncapsulationPacket")
 		}
 	default:
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go b/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
index deb385bc28..d2c7b6fc99 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
@@ -144,7 +144,7 @@ func (m *_DF1RequestCommand) parse(ctx context.Context, readBuffer utils.ReadBuf
 	var _child DF1RequestCommand
 	switch {
 	case functionCode == 0xA2: // DF1RequestProtectedTypedLogicalRead
-		if _child, err = (&_DF1RequestProtectedTypedLogicalRead{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1RequestProtectedTypedLogicalRead).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1RequestProtectedTypedLogicalRead for type-switch of DF1RequestCommand")
 		}
 	default:
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
index 9f94ec5884..8c4bfc07cb 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
@@ -229,7 +229,7 @@ func (m *_DF1RequestMessage) parse(ctx context.Context, readBuffer utils.ReadBuf
 	var _child DF1RequestMessage
 	switch {
 	case commandCode == 0x0F: // DF1CommandRequestMessage
-		if _child, err = (&_DF1CommandRequestMessage{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1CommandRequestMessage).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1CommandRequestMessage for type-switch of DF1RequestMessage")
 		}
 	default:
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
index 122445073f..6bb3d091e5 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
@@ -244,7 +244,7 @@ func (m *_DF1ResponseMessage) parse(ctx context.Context, readBuffer utils.ReadBu
 	var _child DF1ResponseMessage
 	switch {
 	case commandCode == 0x4F: // DF1CommandResponseMessageProtectedTypedLogicalRead
-		if _child, err = (&_DF1CommandResponseMessageProtectedTypedLogicalRead{}).parse(ctx, readBuffer, m, payloadLength); err != nil {
+		if _child, err = new(_DF1CommandResponseMessageProtectedTypedLogicalRead).parse(ctx, readBuffer, m, payloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1CommandResponseMessageProtectedTypedLogicalRead for type-switch of DF1ResponseMessage")
 		}
 	default:
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
index f5cd8b8f89..1c9f305da0 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
@@ -144,39 +144,39 @@ func (m *_AdsDiscoveryBlock) parse(ctx context.Context, readBuffer utils.ReadBuf
 	var _child AdsDiscoveryBlock
 	switch {
 	case blockType == AdsDiscoveryBlockType_STATUS: // AdsDiscoveryBlockStatus
-		if _child, err = (&_AdsDiscoveryBlockStatus{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockStatus).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockStatus for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_PASSWORD: // AdsDiscoveryBlockPassword
-		if _child, err = (&_AdsDiscoveryBlockPassword{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockPassword).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockPassword for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_VERSION: // AdsDiscoveryBlockVersion
-		if _child, err = (&_AdsDiscoveryBlockVersion{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockVersion).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockVersion for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_OS_DATA: // AdsDiscoveryBlockOsData
-		if _child, err = (&_AdsDiscoveryBlockOsData{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockOsData).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockOsData for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_HOST_NAME: // AdsDiscoveryBlockHostName
-		if _child, err = (&_AdsDiscoveryBlockHostName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockHostName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockHostName for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_AMS_NET_ID: // AdsDiscoveryBlockAmsNetId
-		if _child, err = (&_AdsDiscoveryBlockAmsNetId{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockAmsNetId).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockAmsNetId for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_ROUTE_NAME: // AdsDiscoveryBlockRouteName
-		if _child, err = (&_AdsDiscoveryBlockRouteName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockRouteName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockRouteName for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_USER_NAME: // AdsDiscoveryBlockUserName
-		if _child, err = (&_AdsDiscoveryBlockUserName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockUserName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockUserName for type-switch of AdsDiscoveryBlock")
 		}
 	case blockType == AdsDiscoveryBlockType_FINGERPRINT: // AdsDiscoveryBlockFingerprint
-		if _child, err = (&_AdsDiscoveryBlockFingerprint{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDiscoveryBlockFingerprint).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDiscoveryBlockFingerprint for type-switch of AdsDiscoveryBlock")
 		}
 	default:
diff --git a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
index 7c16d71719..b1c07a6a01 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
@@ -135,15 +135,15 @@ func (m *_AdsMultiRequestItem) parse(ctx context.Context, readBuffer utils.ReadB
 	var _child AdsMultiRequestItem
 	switch {
 	case indexGroup == uint32(61568): // AdsMultiRequestItemRead
-		if _child, err = (&_AdsMultiRequestItemRead{}).parse(ctx, readBuffer, m, indexGroup); err != nil {
+		if _child, err = new(_AdsMultiRequestItemRead).parse(ctx, readBuffer, m, indexGroup); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsMultiRequestItemRead for type-switch of AdsMultiRequestItem")
 		}
 	case indexGroup == uint32(61569): // AdsMultiRequestItemWrite
-		if _child, err = (&_AdsMultiRequestItemWrite{}).parse(ctx, readBuffer, m, indexGroup); err != nil {
+		if _child, err = new(_AdsMultiRequestItemWrite).parse(ctx, readBuffer, m, indexGroup); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsMultiRequestItemWrite for type-switch of AdsMultiRequestItem")
 		}
 	case indexGroup == uint32(61570): // AdsMultiRequestItemReadWrite
-		if _child, err = (&_AdsMultiRequestItemReadWrite{}).parse(ctx, readBuffer, m, indexGroup); err != nil {
+		if _child, err = new(_AdsMultiRequestItemReadWrite).parse(ctx, readBuffer, m, indexGroup); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsMultiRequestItemReadWrite for type-switch of AdsMultiRequestItem")
 		}
 	default:
diff --git a/plc4go/protocols/ads/readwrite/model/AmsPacket.go b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
index 9287b16c2d..f6d47157e6 100644
--- a/plc4go/protocols/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
@@ -410,87 +410,87 @@ func (m *_AmsPacket) parse(ctx context.Context, readBuffer utils.ReadBuffer) (__
 	var _child AmsPacket
 	switch {
 	case errorCode == 0x00000000 && commandId == CommandId_INVALID && response == bool(false): // AdsInvalidRequest
-		if _child, err = (&_AdsInvalidRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsInvalidRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsInvalidRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_INVALID && response == bool(true): // AdsInvalidResponse
-		if _child, err = (&_AdsInvalidResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsInvalidResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsInvalidResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_DEVICE_INFO && response == bool(false): // AdsReadDeviceInfoRequest
-		if _child, err = (&_AdsReadDeviceInfoRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadDeviceInfoRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadDeviceInfoRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_DEVICE_INFO && response == bool(true): // AdsReadDeviceInfoResponse
-		if _child, err = (&_AdsReadDeviceInfoResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadDeviceInfoResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadDeviceInfoResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ && response == bool(false): // AdsReadRequest
-		if _child, err = (&_AdsReadRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ && response == bool(true): // AdsReadResponse
-		if _child, err = (&_AdsReadResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE && response == bool(false): // AdsWriteRequest
-		if _child, err = (&_AdsWriteRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsWriteRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsWriteRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE && response == bool(true): // AdsWriteResponse
-		if _child, err = (&_AdsWriteResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsWriteResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsWriteResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_STATE && response == bool(false): // AdsReadStateRequest
-		if _child, err = (&_AdsReadStateRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadStateRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadStateRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_STATE && response == bool(true): // AdsReadStateResponse
-		if _child, err = (&_AdsReadStateResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadStateResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadStateResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE_CONTROL && response == bool(false): // AdsWriteControlRequest
-		if _child, err = (&_AdsWriteControlRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsWriteControlRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsWriteControlRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_WRITE_CONTROL && response == bool(true): // AdsWriteControlResponse
-		if _child, err = (&_AdsWriteControlResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsWriteControlResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsWriteControlResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == bool(false): // AdsAddDeviceNotificationRequest
-		if _child, err = (&_AdsAddDeviceNotificationRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsAddDeviceNotificationRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsAddDeviceNotificationRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == bool(true): // AdsAddDeviceNotificationResponse
-		if _child, err = (&_AdsAddDeviceNotificationResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsAddDeviceNotificationResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsAddDeviceNotificationResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == bool(false): // AdsDeleteDeviceNotificationRequest
-		if _child, err = (&_AdsDeleteDeviceNotificationRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDeleteDeviceNotificationRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDeleteDeviceNotificationRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == bool(true): // AdsDeleteDeviceNotificationResponse
-		if _child, err = (&_AdsDeleteDeviceNotificationResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDeleteDeviceNotificationResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDeleteDeviceNotificationResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == bool(false): // AdsDeviceNotificationRequest
-		if _child, err = (&_AdsDeviceNotificationRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDeviceNotificationRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDeviceNotificationRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == bool(true): // AdsDeviceNotificationResponse
-		if _child, err = (&_AdsDeviceNotificationResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsDeviceNotificationResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsDeviceNotificationResponse for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_WRITE && response == bool(false): // AdsReadWriteRequest
-		if _child, err = (&_AdsReadWriteRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadWriteRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadWriteRequest for type-switch of AmsPacket")
 		}
 	case errorCode == 0x00000000 && commandId == CommandId_ADS_READ_WRITE && response == bool(true): // AdsReadWriteResponse
-		if _child, err = (&_AdsReadWriteResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AdsReadWriteResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdsReadWriteResponse for type-switch of AmsPacket")
 		}
 	case true: // ErrorResponse
-		if _child, err = (&_ErrorResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ErrorResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorResponse for type-switch of AmsPacket")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDU.go b/plc4go/protocols/bacnetip/readwrite/model/APDU.go
index 1d3f3e9ca9..3f07fa84e1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDU.go
@@ -149,39 +149,39 @@ func (m *_APDU) parse(ctx context.Context, readBuffer utils.ReadBuffer, apduLeng
 	var _child APDU
 	switch {
 	case apduType == ApduType_CONFIRMED_REQUEST_PDU: // APDUConfirmedRequest
-		if _child, err = (&_APDUConfirmedRequest{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUConfirmedRequest).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUConfirmedRequest for type-switch of APDU")
 		}
 	case apduType == ApduType_UNCONFIRMED_REQUEST_PDU: // APDUUnconfirmedRequest
-		if _child, err = (&_APDUUnconfirmedRequest{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUUnconfirmedRequest).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUUnconfirmedRequest for type-switch of APDU")
 		}
 	case apduType == ApduType_SIMPLE_ACK_PDU: // APDUSimpleAck
-		if _child, err = (&_APDUSimpleAck{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUSimpleAck).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUSimpleAck for type-switch of APDU")
 		}
 	case apduType == ApduType_COMPLEX_ACK_PDU: // APDUComplexAck
-		if _child, err = (&_APDUComplexAck{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUComplexAck).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUComplexAck for type-switch of APDU")
 		}
 	case apduType == ApduType_SEGMENT_ACK_PDU: // APDUSegmentAck
-		if _child, err = (&_APDUSegmentAck{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUSegmentAck).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUSegmentAck for type-switch of APDU")
 		}
 	case apduType == ApduType_ERROR_PDU: // APDUError
-		if _child, err = (&_APDUError{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUError).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUError for type-switch of APDU")
 		}
 	case apduType == ApduType_REJECT_PDU: // APDUReject
-		if _child, err = (&_APDUReject{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUReject).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUReject for type-switch of APDU")
 		}
 	case apduType == ApduType_ABORT_PDU: // APDUAbort
-		if _child, err = (&_APDUAbort{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUAbort).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUAbort for type-switch of APDU")
 		}
 	case 0 == 0: // APDUUnknown
-		if _child, err = (&_APDUUnknown{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_APDUUnknown).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type APDUUnknown for type-switch of APDU")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
index b17f1c3208..46ad54dd58 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
@@ -214,55 +214,55 @@ func (m *_BACnetApplicationTag) parse(ctx context.Context, readBuffer utils.Read
 	var _child BACnetApplicationTag
 	switch {
 	case actualTagNumber == 0x0: // BACnetApplicationTagNull
-		if _child, err = (&_BACnetApplicationTagNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetApplicationTagNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagNull for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x1: // BACnetApplicationTagBoolean
-		if _child, err = (&_BACnetApplicationTagBoolean{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagBoolean).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagBoolean for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x2: // BACnetApplicationTagUnsignedInteger
-		if _child, err = (&_BACnetApplicationTagUnsignedInteger{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagUnsignedInteger).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagUnsignedInteger for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x3: // BACnetApplicationTagSignedInteger
-		if _child, err = (&_BACnetApplicationTagSignedInteger{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagSignedInteger).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagSignedInteger for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x4: // BACnetApplicationTagReal
-		if _child, err = (&_BACnetApplicationTagReal{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetApplicationTagReal).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagReal for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x5: // BACnetApplicationTagDouble
-		if _child, err = (&_BACnetApplicationTagDouble{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetApplicationTagDouble).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagDouble for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x6: // BACnetApplicationTagOctetString
-		if _child, err = (&_BACnetApplicationTagOctetString{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagOctetString).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagOctetString for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x7: // BACnetApplicationTagCharacterString
-		if _child, err = (&_BACnetApplicationTagCharacterString{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagCharacterString).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagCharacterString for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x8: // BACnetApplicationTagBitString
-		if _child, err = (&_BACnetApplicationTagBitString{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagBitString).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagBitString for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0x9: // BACnetApplicationTagEnumerated
-		if _child, err = (&_BACnetApplicationTagEnumerated{}).parse(ctx, readBuffer, m, header); err != nil {
+		if _child, err = new(_BACnetApplicationTagEnumerated).parse(ctx, readBuffer, m, header); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagEnumerated for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0xA: // BACnetApplicationTagDate
-		if _child, err = (&_BACnetApplicationTagDate{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetApplicationTagDate).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagDate for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0xB: // BACnetApplicationTagTime
-		if _child, err = (&_BACnetApplicationTagTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetApplicationTagTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagTime for type-switch of BACnetApplicationTag")
 		}
 	case actualTagNumber == 0xC: // BACnetApplicationTagObjectIdentifier
-		if _child, err = (&_BACnetApplicationTagObjectIdentifier{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetApplicationTagObjectIdentifier).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetApplicationTagObjectIdentifier for type-switch of BACnetApplicationTag")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
index f4ccd54211..6cc9404bd7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
@@ -194,15 +194,15 @@ func (m *_BACnetCalendarEntry) parse(ctx context.Context, readBuffer utils.ReadB
 	var _child BACnetCalendarEntry
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetCalendarEntryDate
-		if _child, err = (&_BACnetCalendarEntryDate{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetCalendarEntryDate).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetCalendarEntryDate for type-switch of BACnetCalendarEntry")
 		}
 	case peekedTagNumber == uint8(1): // BACnetCalendarEntryDateRange
-		if _child, err = (&_BACnetCalendarEntryDateRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetCalendarEntryDateRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetCalendarEntryDateRange for type-switch of BACnetCalendarEntry")
 		}
 	case peekedTagNumber == uint8(2): // BACnetCalendarEntryWeekNDay
-		if _child, err = (&_BACnetCalendarEntryWeekNDay{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetCalendarEntryWeekNDay).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetCalendarEntryWeekNDay for type-switch of BACnetCalendarEntry")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
index 2ae3ac9c6e..800eb12cea 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
@@ -213,59 +213,59 @@ func (m *_BACnetChannelValue) parse(ctx context.Context, readBuffer utils.ReadBu
 	var _child BACnetChannelValue
 	switch {
 	case peekedTagNumber == 0x0 && peekedIsContextTag == bool(false): // BACnetChannelValueNull
-		if _child, err = (&_BACnetChannelValueNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueNull for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x4 && peekedIsContextTag == bool(false): // BACnetChannelValueReal
-		if _child, err = (&_BACnetChannelValueReal{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueReal).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueReal for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x9 && peekedIsContextTag == bool(false): // BACnetChannelValueEnumerated
-		if _child, err = (&_BACnetChannelValueEnumerated{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueEnumerated).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueEnumerated for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x2 && peekedIsContextTag == bool(false): // BACnetChannelValueUnsigned
-		if _child, err = (&_BACnetChannelValueUnsigned{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueUnsigned).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueUnsigned for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x1 && peekedIsContextTag == bool(false): // BACnetChannelValueBoolean
-		if _child, err = (&_BACnetChannelValueBoolean{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueBoolean).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueBoolean for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x3 && peekedIsContextTag == bool(false): // BACnetChannelValueInteger
-		if _child, err = (&_BACnetChannelValueInteger{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueInteger).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueInteger for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x5 && peekedIsContextTag == bool(false): // BACnetChannelValueDouble
-		if _child, err = (&_BACnetChannelValueDouble{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueDouble).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueDouble for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0xB && peekedIsContextTag == bool(false): // BACnetChannelValueTime
-		if _child, err = (&_BACnetChannelValueTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueTime for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x7 && peekedIsContextTag == bool(false): // BACnetChannelValueCharacterString
-		if _child, err = (&_BACnetChannelValueCharacterString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueCharacterString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueCharacterString for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x6 && peekedIsContextTag == bool(false): // BACnetChannelValueOctetString
-		if _child, err = (&_BACnetChannelValueOctetString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueOctetString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueOctetString for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0x8 && peekedIsContextTag == bool(false): // BACnetChannelValueBitString
-		if _child, err = (&_BACnetChannelValueBitString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueBitString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueBitString for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0xA && peekedIsContextTag == bool(false): // BACnetChannelValueDate
-		if _child, err = (&_BACnetChannelValueDate{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueDate).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueDate for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == 0xC && peekedIsContextTag == bool(false): // BACnetChannelValueObjectidentifier
-		if _child, err = (&_BACnetChannelValueObjectidentifier{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueObjectidentifier).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueObjectidentifier for type-switch of BACnetChannelValue")
 		}
 	case peekedTagNumber == uint8(0) && peekedIsContextTag == bool(true): // BACnetChannelValueLightingCommand
-		if _child, err = (&_BACnetChannelValueLightingCommand{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetChannelValueLightingCommand).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetChannelValueLightingCommand for type-switch of BACnetChannelValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
index 7075aa93b5..19bb9d63a8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
@@ -189,11 +189,11 @@ func (m *_BACnetClientCOV) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child BACnetClientCOV
 	switch {
 	case peekedTagNumber == 0x4: // BACnetClientCOVObject
-		if _child, err = (&_BACnetClientCOVObject{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetClientCOVObject).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetClientCOVObject for type-switch of BACnetClientCOV")
 		}
 	case peekedTagNumber == 0x0: // BACnetClientCOVNone
-		if _child, err = (&_BACnetClientCOVNone{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetClientCOVNone).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetClientCOVNone for type-switch of BACnetClientCOV")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index fa88900c7c..da09b91cca 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -176,131 +176,131 @@ func (m *_BACnetConfirmedServiceRequest) parse(ctx context.Context, readBuffer u
 	var _child BACnetConfirmedServiceRequest
 	switch {
 	case serviceChoice == BACnetConfirmedServiceChoice_ACKNOWLEDGE_ALARM: // BACnetConfirmedServiceRequestAcknowledgeAlarm
-		if _child, err = (&_BACnetConfirmedServiceRequestAcknowledgeAlarm{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAcknowledgeAlarm).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAcknowledgeAlarm for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_COV_NOTIFICATION: // BACnetConfirmedServiceRequestConfirmedCOVNotification
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedCOVNotification{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedCOVNotification).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedCOVNotification for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_COV_NOTIFICATION_MULTIPLE: // BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_EVENT_NOTIFICATION: // BACnetConfirmedServiceRequestConfirmedEventNotification
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedEventNotification{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedEventNotification).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedEventNotification for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_ENROLLMENT_SUMMARY: // BACnetConfirmedServiceRequestGetEnrollmentSummary
-		if _child, err = (&_BACnetConfirmedServiceRequestGetEnrollmentSummary{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestGetEnrollmentSummary).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestGetEnrollmentSummary for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_EVENT_INFORMATION: // BACnetConfirmedServiceRequestGetEventInformation
-		if _child, err = (&_BACnetConfirmedServiceRequestGetEventInformation{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestGetEventInformation).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestGetEventInformation for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_LIFE_SAFETY_OPERATION: // BACnetConfirmedServiceRequestLifeSafetyOperation
-		if _child, err = (&_BACnetConfirmedServiceRequestLifeSafetyOperation{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestLifeSafetyOperation).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestLifeSafetyOperation for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV: // BACnetConfirmedServiceRequestSubscribeCOV
-		if _child, err = (&_BACnetConfirmedServiceRequestSubscribeCOV{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestSubscribeCOV).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestSubscribeCOV for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV_PROPERTY: // BACnetConfirmedServiceRequestSubscribeCOVProperty
-		if _child, err = (&_BACnetConfirmedServiceRequestSubscribeCOVProperty{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestSubscribeCOVProperty).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestSubscribeCOVProperty for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV_PROPERTY_MULTIPLE: // BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
-		if _child, err = (&_BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_ATOMIC_READ_FILE: // BACnetConfirmedServiceRequestAtomicReadFile
-		if _child, err = (&_BACnetConfirmedServiceRequestAtomicReadFile{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAtomicReadFile).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAtomicReadFile for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_ATOMIC_WRITE_FILE: // BACnetConfirmedServiceRequestAtomicWriteFile
-		if _child, err = (&_BACnetConfirmedServiceRequestAtomicWriteFile{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAtomicWriteFile).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAtomicWriteFile for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_ADD_LIST_ELEMENT: // BACnetConfirmedServiceRequestAddListElement
-		if _child, err = (&_BACnetConfirmedServiceRequestAddListElement{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAddListElement).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAddListElement for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_REMOVE_LIST_ELEMENT: // BACnetConfirmedServiceRequestRemoveListElement
-		if _child, err = (&_BACnetConfirmedServiceRequestRemoveListElement{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestRemoveListElement).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestRemoveListElement for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CREATE_OBJECT: // BACnetConfirmedServiceRequestCreateObject
-		if _child, err = (&_BACnetConfirmedServiceRequestCreateObject{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestCreateObject).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestCreateObject for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_DELETE_OBJECT: // BACnetConfirmedServiceRequestDeleteObject
-		if _child, err = (&_BACnetConfirmedServiceRequestDeleteObject{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestDeleteObject).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestDeleteObject for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY: // BACnetConfirmedServiceRequestReadProperty
-		if _child, err = (&_BACnetConfirmedServiceRequestReadProperty{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadProperty).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadProperty for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY_MULTIPLE: // BACnetConfirmedServiceRequestReadPropertyMultiple
-		if _child, err = (&_BACnetConfirmedServiceRequestReadPropertyMultiple{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadPropertyMultiple).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadPropertyMultiple for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_RANGE: // BACnetConfirmedServiceRequestReadRange
-		if _child, err = (&_BACnetConfirmedServiceRequestReadRange{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadRange).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadRange for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_WRITE_PROPERTY: // BACnetConfirmedServiceRequestWriteProperty
-		if _child, err = (&_BACnetConfirmedServiceRequestWriteProperty{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestWriteProperty).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestWriteProperty for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_WRITE_PROPERTY_MULTIPLE: // BACnetConfirmedServiceRequestWritePropertyMultiple
-		if _child, err = (&_BACnetConfirmedServiceRequestWritePropertyMultiple{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestWritePropertyMultiple).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestWritePropertyMultiple for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_DEVICE_COMMUNICATION_CONTROL: // BACnetConfirmedServiceRequestDeviceCommunicationControl
-		if _child, err = (&_BACnetConfirmedServiceRequestDeviceCommunicationControl{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestDeviceCommunicationControl).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestDeviceCommunicationControl for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_PRIVATE_TRANSFER: // BACnetConfirmedServiceRequestConfirmedPrivateTransfer
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedPrivateTransfer{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedPrivateTransfer).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedPrivateTransfer for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_TEXT_MESSAGE: // BACnetConfirmedServiceRequestConfirmedTextMessage
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedTextMessage{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedTextMessage).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedTextMessage for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_REINITIALIZE_DEVICE: // BACnetConfirmedServiceRequestReinitializeDevice
-		if _child, err = (&_BACnetConfirmedServiceRequestReinitializeDevice{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReinitializeDevice).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReinitializeDevice for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_OPEN: // BACnetConfirmedServiceRequestVTOpen
-		if _child, err = (&_BACnetConfirmedServiceRequestVTOpen{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestVTOpen).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestVTOpen for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_CLOSE: // BACnetConfirmedServiceRequestVTClose
-		if _child, err = (&_BACnetConfirmedServiceRequestVTClose{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestVTClose).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestVTClose for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_DATA: // BACnetConfirmedServiceRequestVTData
-		if _child, err = (&_BACnetConfirmedServiceRequestVTData{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestVTData).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestVTData for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_AUTHENTICATE: // BACnetConfirmedServiceRequestAuthenticate
-		if _child, err = (&_BACnetConfirmedServiceRequestAuthenticate{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAuthenticate).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAuthenticate for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_REQUEST_KEY: // BACnetConfirmedServiceRequestRequestKey
-		if _child, err = (&_BACnetConfirmedServiceRequestRequestKey{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestRequestKey).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestRequestKey for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY_CONDITIONAL: // BACnetConfirmedServiceRequestReadPropertyConditional
-		if _child, err = (&_BACnetConfirmedServiceRequestReadPropertyConditional{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadPropertyConditional).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadPropertyConditional for type-switch of BACnetConfirmedServiceRequest")
 		}
 	case 0 == 0: // BACnetConfirmedServiceRequestUnknown
-		if _child, err = (&_BACnetConfirmedServiceRequestUnknown{}).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestUnknown).parse(ctx, readBuffer, m, serviceRequestPayloadLength, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestUnknown for type-switch of BACnetConfirmedServiceRequest")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
index 923811037d..bba61d75c1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
@@ -221,11 +221,11 @@ func (m *_BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) parse(ctx c
 	var _child BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
 	switch {
 	case peekedTagNumber == 0x0: // BACnetConfirmedServiceRequestAtomicReadFileStream
-		if _child, err = (&_BACnetConfirmedServiceRequestAtomicReadFileStream{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAtomicReadFileStream).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAtomicReadFileStream for type-switch of BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord")
 		}
 	case peekedTagNumber == 0x1: // BACnetConfirmedServiceRequestAtomicReadFileRecord
-		if _child, err = (&_BACnetConfirmedServiceRequestAtomicReadFileRecord{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestAtomicReadFileRecord).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestAtomicReadFileRecord for type-switch of BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
index bc039c08ca..b2d5843be2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
@@ -226,11 +226,11 @@ func (m *_BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) parse(c
 	var _child BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric for type-switch of BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass")
 		}
 	case peekedTagNumber == uint8(1): // BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter
-		if _child, err = (&_BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter for type-switch of BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
index 7b53197d05..809ab2f4b0 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
@@ -221,15 +221,15 @@ func (m *_BACnetConfirmedServiceRequestReadRangeRange) parse(ctx context.Context
 	var _child BACnetConfirmedServiceRequestReadRangeRange
 	switch {
 	case peekedTagNumber == 0x3: // BACnetConfirmedServiceRequestReadRangeRangeByPosition
-		if _child, err = (&_BACnetConfirmedServiceRequestReadRangeRangeByPosition{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadRangeRangeByPosition).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadRangeRangeByPosition for type-switch of BACnetConfirmedServiceRequestReadRangeRange")
 		}
 	case peekedTagNumber == 0x6: // BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber
-		if _child, err = (&_BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber for type-switch of BACnetConfirmedServiceRequestReadRangeRange")
 		}
 	case peekedTagNumber == 0x7: // BACnetConfirmedServiceRequestReadRangeRangeByTime
-		if _child, err = (&_BACnetConfirmedServiceRequestReadRangeRangeByTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetConfirmedServiceRequestReadRangeRangeByTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConfirmedServiceRequestReadRangeRangeByTime for type-switch of BACnetConfirmedServiceRequestReadRangeRange")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
index 3f5998c349..f1704b6800 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
@@ -233,2635 +233,2635 @@ func (m *_BACnetConstructedData) parse(ctx context.Context, readBuffer utils.Rea
 	var _child BACnetConstructedData
 	switch {
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ABSENTEE_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataAbsenteeLimit
-		if _child, err = (&_BACnetConstructedDataAbsenteeLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAbsenteeLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAbsenteeLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCEPTED_MODES: // BACnetConstructedDataAcceptedModes
-		if _child, err = (&_BACnetConstructedDataAcceptedModes{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAcceptedModes).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAcceptedModes for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_ALARM_EVENTS && peekedTagNumber == uint8(9): // BACnetConstructedDataAccessAlarmEvents
-		if _child, err = (&_BACnetConstructedDataAccessAlarmEvents{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessAlarmEvents).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessAlarmEvents for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_DOORS: // BACnetConstructedDataAccessDoors
-		if _child, err = (&_BACnetConstructedDataAccessDoors{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessDoors).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessDoors for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_EVENT && peekedTagNumber == uint8(9): // BACnetConstructedDataAccessEvent
-		if _child, err = (&_BACnetConstructedDataAccessEvent{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessEvent).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessEvent for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_EVENT_AUTHENTICATION_FACTOR: // BACnetConstructedDataAccessEventAuthenticationFactor
-		if _child, err = (&_BACnetConstructedDataAccessEventAuthenticationFactor{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessEventAuthenticationFactor).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessEventAuthenticationFactor for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_EVENT_CREDENTIAL: // BACnetConstructedDataAccessEventCredential
-		if _child, err = (&_BACnetConstructedDataAccessEventCredential{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessEventCredential).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessEventCredential for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_EVENT_TAG && peekedTagNumber == uint8(2): // BACnetConstructedDataAccessEventTag
-		if _child, err = (&_BACnetConstructedDataAccessEventTag{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessEventTag).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessEventTag for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_EVENT_TIME: // BACnetConstructedDataAccessEventTime
-		if _child, err = (&_BACnetConstructedDataAccessEventTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessEventTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessEventTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCESS_TRANSACTION_EVENTS && peekedTagNumber == uint8(9): // BACnetConstructedDataAccessTransactionEvents
-		if _child, err = (&_BACnetConstructedDataAccessTransactionEvents{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessTransactionEvents).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessTransactionEvents for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCOMPANIMENT: // BACnetConstructedDataAccompaniment
-		if _child, err = (&_BACnetConstructedDataAccompaniment{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccompaniment).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccompaniment for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACCOMPANIMENT_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataAccompanimentTime
-		if _child, err = (&_BACnetConstructedDataAccompanimentTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccompanimentTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccompanimentTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACK_REQUIRED && peekedTagNumber == uint8(9): // BACnetConstructedDataAckRequired
-		if _child, err = (&_BACnetConstructedDataAckRequired{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAckRequired).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAckRequired for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACKED_TRANSITIONS && peekedTagNumber == uint8(9): // BACnetConstructedDataAckedTransitions
-		if _child, err = (&_BACnetConstructedDataAckedTransitions{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAckedTransitions).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAckedTransitions for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LOOP && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTION && peekedTagNumber == uint8(9): // BACnetConstructedDataLoopAction
-		if _child, err = (&_BACnetConstructedDataLoopAction{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoopAction).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoopAction for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_COMMAND && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTION: // BACnetConstructedDataCommandAction
-		if _child, err = (&_BACnetConstructedDataCommandAction{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCommandAction).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCommandAction for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTION: // BACnetConstructedDataAction
-		if _child, err = (&_BACnetConstructedDataAction{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAction).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAction for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTION_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataActionText
-		if _child, err = (&_BACnetConstructedDataActionText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActionText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActionText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTIVATION_TIME: // BACnetConstructedDataActivationTime
-		if _child, err = (&_BACnetConstructedDataActivationTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActivationTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActivationTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTIVE_AUTHENTICATION_POLICY && peekedTagNumber == uint8(2): // BACnetConstructedDataActiveAuthenticationPolicy
-		if _child, err = (&_BACnetConstructedDataActiveAuthenticationPolicy{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActiveAuthenticationPolicy).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActiveAuthenticationPolicy for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS: // BACnetConstructedDataActiveCOVMultipleSubscriptions
-		if _child, err = (&_BACnetConstructedDataActiveCOVMultipleSubscriptions{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActiveCOVMultipleSubscriptions).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActiveCOVMultipleSubscriptions for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTIVE_COV_SUBSCRIPTIONS: // BACnetConstructedDataActiveCOVSubscriptions
-		if _child, err = (&_BACnetConstructedDataActiveCOVSubscriptions{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActiveCOVSubscriptions).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActiveCOVSubscriptions for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTIVE_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataActiveText
-		if _child, err = (&_BACnetConstructedDataActiveText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActiveText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActiveText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTIVE_VT_SESSIONS: // BACnetConstructedDataActiveVTSessions
-		if _child, err = (&_BACnetConstructedDataActiveVTSessions{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActiveVTSessions).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActiveVTSessions for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ACTUAL_SHED_LEVEL: // BACnetConstructedDataActualShedLevel
-		if _child, err = (&_BACnetConstructedDataActualShedLevel{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataActualShedLevel).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataActualShedLevel for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_ADJUST_VALUE && peekedTagNumber == uint8(3): // BACnetConstructedDataAccessZoneAdjustValue
-		if _child, err = (&_BACnetConstructedDataAccessZoneAdjustValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessZoneAdjustValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessZoneAdjustValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_PULSE_CONVERTER && propertyIdentifierArgument == BACnetPropertyIdentifier_ADJUST_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataPulseConverterAdjustValue
-		if _child, err = (&_BACnetConstructedDataPulseConverterAdjustValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPulseConverterAdjustValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPulseConverterAdjustValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ADJUST_VALUE && peekedTagNumber == uint8(3): // BACnetConstructedDataAdjustValue
-		if _child, err = (&_BACnetConstructedDataAdjustValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAdjustValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAdjustValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataAlarmValue
-		if _child, err = (&_BACnetConstructedDataAlarmValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAlarmValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAlarmValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_DOOR && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataAccessDoorAlarmValues
-		if _child, err = (&_BACnetConstructedDataAccessDoorAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessDoorAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessDoorAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataAccessZoneAlarmValues
-		if _child, err = (&_BACnetConstructedDataAccessZoneAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessZoneAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessZoneAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BITSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES && peekedTagNumber == uint8(8): // BACnetConstructedDataBitStringValueAlarmValues
-		if _child, err = (&_BACnetConstructedDataBitStringValueAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBitStringValueAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBitStringValueAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHARACTERSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataCharacterStringValueAlarmValues
-		if _child, err = (&_BACnetConstructedDataCharacterStringValueAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCharacterStringValueAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCharacterStringValueAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_POINT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataLifeSafetyPointAlarmValues
-		if _child, err = (&_BACnetConstructedDataLifeSafetyPointAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyPointAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyPointAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataLifeSafetyZoneAlarmValues
-		if _child, err = (&_BACnetConstructedDataLifeSafetyZoneAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyZoneAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyZoneAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateInputAlarmValues
-		if _child, err = (&_BACnetConstructedDataMultiStateInputAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateInputAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateInputAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateValueAlarmValues
-		if _child, err = (&_BACnetConstructedDataMultiStateValueAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateValueAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateValueAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMER && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataTimerAlarmValues
-		if _child, err = (&_BACnetConstructedDataTimerAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ALARM_VALUES: // BACnetConstructedDataAlarmValues
-		if _child, err = (&_BACnetConstructedDataAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ALIGN_INTERVALS && peekedTagNumber == uint8(1): // BACnetConstructedDataAlignIntervals
-		if _child, err = (&_BACnetConstructedDataAlignIntervals{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAlignIntervals).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAlignIntervals for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_CREDENTIAL && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccessCredentialAll
-		if _child, err = (&_BACnetConstructedDataAccessCredentialAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessCredentialAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessCredentialAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_DOOR && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccessDoorAll
-		if _child, err = (&_BACnetConstructedDataAccessDoorAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessDoorAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessDoorAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_POINT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccessPointAll
-		if _child, err = (&_BACnetConstructedDataAccessPointAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessPointAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessPointAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_RIGHTS && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccessRightsAll
-		if _child, err = (&_BACnetConstructedDataAccessRightsAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessRightsAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessRightsAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_USER && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccessUserAll
-		if _child, err = (&_BACnetConstructedDataAccessUserAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessUserAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessUserAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccessZoneAll
-		if _child, err = (&_BACnetConstructedDataAccessZoneAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessZoneAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessZoneAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAccumulatorAll
-		if _child, err = (&_BACnetConstructedDataAccumulatorAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ALERT_ENROLLMENT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAlertEnrollmentAll
-		if _child, err = (&_BACnetConstructedDataAlertEnrollmentAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAlertEnrollmentAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAlertEnrollmentAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAnalogInputAll
-		if _child, err = (&_BACnetConstructedDataAnalogInputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogInputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogInputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAnalogOutputAll
-		if _child, err = (&_BACnetConstructedDataAnalogOutputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogOutputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogOutputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAnalogValueAll
-		if _child, err = (&_BACnetConstructedDataAnalogValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_AVERAGING && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataAveragingAll
-		if _child, err = (&_BACnetConstructedDataAveragingAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAveragingAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAveragingAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataBinaryInputAll
-		if _child, err = (&_BACnetConstructedDataBinaryInputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryInputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryInputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataBinaryLightingOutputAll
-		if _child, err = (&_BACnetConstructedDataBinaryLightingOutputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryLightingOutputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryLightingOutputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataBinaryOutputAll
-		if _child, err = (&_BACnetConstructedDataBinaryOutputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryOutputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryOutputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataBinaryValueAll
-		if _child, err = (&_BACnetConstructedDataBinaryValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BITSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataBitstringValueAll
-		if _child, err = (&_BACnetConstructedDataBitstringValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBitstringValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBitstringValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CALENDAR && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataCalendarAll
-		if _child, err = (&_BACnetConstructedDataCalendarAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCalendarAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCalendarAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHANNEL && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataChannelAll
-		if _child, err = (&_BACnetConstructedDataChannelAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChannelAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChannelAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHARACTERSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataCharacterstringValueAll
-		if _child, err = (&_BACnetConstructedDataCharacterstringValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCharacterstringValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCharacterstringValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_COMMAND && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataCommandAll
-		if _child, err = (&_BACnetConstructedDataCommandAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCommandAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCommandAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CREDENTIAL_DATA_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataCredentialDataInputAll
-		if _child, err = (&_BACnetConstructedDataCredentialDataInputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentialDataInputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentialDataInputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataDatepatternValueAll
-		if _child, err = (&_BACnetConstructedDataDatepatternValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDatepatternValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDatepatternValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataDateValueAll
-		if _child, err = (&_BACnetConstructedDataDateValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATETIMEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataDatetimepatternValueAll
-		if _child, err = (&_BACnetConstructedDataDatetimepatternValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDatetimepatternValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDatetimepatternValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATETIME_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataDatetimeValueAll
-		if _child, err = (&_BACnetConstructedDataDatetimeValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDatetimeValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDatetimeValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DEVICE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataDeviceAll
-		if _child, err = (&_BACnetConstructedDataDeviceAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeviceAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeviceAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ELEVATOR_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataElevatorGroupAll
-		if _child, err = (&_BACnetConstructedDataElevatorGroupAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataElevatorGroupAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataElevatorGroupAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ESCALATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataEscalatorAll
-		if _child, err = (&_BACnetConstructedDataEscalatorAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEscalatorAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEscalatorAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_EVENT_ENROLLMENT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataEventEnrollmentAll
-		if _child, err = (&_BACnetConstructedDataEventEnrollmentAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventEnrollmentAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventEnrollmentAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_EVENT_LOG && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataEventLogAll
-		if _child, err = (&_BACnetConstructedDataEventLogAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventLogAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventLogAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_FILE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataFileAll
-		if _child, err = (&_BACnetConstructedDataFileAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFileAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFileAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_GLOBAL_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataGlobalGroupAll
-		if _child, err = (&_BACnetConstructedDataGlobalGroupAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGlobalGroupAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGlobalGroupAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataGroupAll
-		if _child, err = (&_BACnetConstructedDataGroupAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGroupAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGroupAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataIntegerValueAll
-		if _child, err = (&_BACnetConstructedDataIntegerValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLargeAnalogValueAll
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_POINT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLifeSafetyPointAll
-		if _child, err = (&_BACnetConstructedDataLifeSafetyPointAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyPointAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyPointAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLifeSafetyZoneAll
-		if _child, err = (&_BACnetConstructedDataLifeSafetyZoneAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyZoneAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyZoneAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLiftAll
-		if _child, err = (&_BACnetConstructedDataLiftAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLiftAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLiftAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLightingOutputAll
-		if _child, err = (&_BACnetConstructedDataLightingOutputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingOutputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingOutputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LOAD_CONTROL && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLoadControlAll
-		if _child, err = (&_BACnetConstructedDataLoadControlAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoadControlAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoadControlAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LOOP && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataLoopAll
-		if _child, err = (&_BACnetConstructedDataLoopAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoopAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoopAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataMultiStateInputAll
-		if _child, err = (&_BACnetConstructedDataMultiStateInputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateInputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateInputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataMultiStateOutputAll
-		if _child, err = (&_BACnetConstructedDataMultiStateOutputAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateOutputAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateOutputAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataMultiStateValueAll
-		if _child, err = (&_BACnetConstructedDataMultiStateValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_NETWORK_PORT && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataNetworkPortAll
-		if _child, err = (&_BACnetConstructedDataNetworkPortAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkPortAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkPortAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_NETWORK_SECURITY && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataNetworkSecurityAll
-		if _child, err = (&_BACnetConstructedDataNetworkSecurityAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkSecurityAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkSecurityAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_NOTIFICATION_CLASS && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataNotificationClassAll
-		if _child, err = (&_BACnetConstructedDataNotificationClassAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNotificationClassAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNotificationClassAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_NOTIFICATION_FORWARDER && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataNotificationForwarderAll
-		if _child, err = (&_BACnetConstructedDataNotificationForwarderAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNotificationForwarderAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNotificationForwarderAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_OCTETSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataOctetstringValueAll
-		if _child, err = (&_BACnetConstructedDataOctetstringValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOctetstringValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOctetstringValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataPositiveIntegerValueAll
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_PROGRAM && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataProgramAll
-		if _child, err = (&_BACnetConstructedDataProgramAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProgramAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProgramAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_PULSE_CONVERTER && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataPulseConverterAll
-		if _child, err = (&_BACnetConstructedDataPulseConverterAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPulseConverterAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPulseConverterAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_SCHEDULE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataScheduleAll
-		if _child, err = (&_BACnetConstructedDataScheduleAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataScheduleAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataScheduleAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_STRUCTURED_VIEW && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataStructuredViewAll
-		if _child, err = (&_BACnetConstructedDataStructuredViewAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStructuredViewAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStructuredViewAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataTimepatternValueAll
-		if _child, err = (&_BACnetConstructedDataTimepatternValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimepatternValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimepatternValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIME_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataTimeValueAll
-		if _child, err = (&_BACnetConstructedDataTimeValueAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeValueAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeValueAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMER && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataTimerAll
-		if _child, err = (&_BACnetConstructedDataTimerAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TREND_LOG && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataTrendLogAll
-		if _child, err = (&_BACnetConstructedDataTrendLogAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrendLogAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrendLogAll for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TREND_LOG_MULTIPLE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataTrendLogMultipleAll
-		if _child, err = (&_BACnetConstructedDataTrendLogMultipleAll{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrendLogMultipleAll).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrendLogMultipleAll for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL_WRITES_SUCCESSFUL && peekedTagNumber == uint8(1): // BACnetConstructedDataAllWritesSuccessful
-		if _child, err = (&_BACnetConstructedDataAllWritesSuccessful{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAllWritesSuccessful).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAllWritesSuccessful for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ALLOW_GROUP_DELAY_INHIBIT && peekedTagNumber == uint8(1): // BACnetConstructedDataAllowGroupDelayInhibit
-		if _child, err = (&_BACnetConstructedDataAllowGroupDelayInhibit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAllowGroupDelayInhibit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAllowGroupDelayInhibit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_APDU_LENGTH && peekedTagNumber == uint8(2): // BACnetConstructedDataAPDULength
-		if _child, err = (&_BACnetConstructedDataAPDULength{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAPDULength).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAPDULength for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_APDU_SEGMENT_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataAPDUSegmentTimeout
-		if _child, err = (&_BACnetConstructedDataAPDUSegmentTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAPDUSegmentTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAPDUSegmentTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_APDU_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataAPDUTimeout
-		if _child, err = (&_BACnetConstructedDataAPDUTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAPDUTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAPDUTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_APPLICATION_SOFTWARE_VERSION && peekedTagNumber == uint8(7): // BACnetConstructedDataApplicationSoftwareVersion
-		if _child, err = (&_BACnetConstructedDataApplicationSoftwareVersion{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataApplicationSoftwareVersion).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataApplicationSoftwareVersion for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ARCHIVE && peekedTagNumber == uint8(1): // BACnetConstructedDataArchive
-		if _child, err = (&_BACnetConstructedDataArchive{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataArchive).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataArchive for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ASSIGNED_ACCESS_RIGHTS: // BACnetConstructedDataAssignedAccessRights
-		if _child, err = (&_BACnetConstructedDataAssignedAccessRights{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAssignedAccessRights).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAssignedAccessRights for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ASSIGNED_LANDING_CALLS: // BACnetConstructedDataAssignedLandingCalls
-		if _child, err = (&_BACnetConstructedDataAssignedLandingCalls{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAssignedLandingCalls).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAssignedLandingCalls for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ATTEMPTED_SAMPLES && peekedTagNumber == uint8(2): // BACnetConstructedDataAttemptedSamples
-		if _child, err = (&_BACnetConstructedDataAttemptedSamples{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAttemptedSamples).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAttemptedSamples for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTHENTICATION_FACTORS: // BACnetConstructedDataAuthenticationFactors
-		if _child, err = (&_BACnetConstructedDataAuthenticationFactors{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAuthenticationFactors).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAuthenticationFactors for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTHENTICATION_POLICY_LIST: // BACnetConstructedDataAuthenticationPolicyList
-		if _child, err = (&_BACnetConstructedDataAuthenticationPolicyList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAuthenticationPolicyList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAuthenticationPolicyList for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTHENTICATION_POLICY_NAMES && peekedTagNumber == uint8(7): // BACnetConstructedDataAuthenticationPolicyNames
-		if _child, err = (&_BACnetConstructedDataAuthenticationPolicyNames{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAuthenticationPolicyNames).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAuthenticationPolicyNames for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTHENTICATION_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataAuthenticationStatus
-		if _child, err = (&_BACnetConstructedDataAuthenticationStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAuthenticationStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAuthenticationStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTHORIZATION_EXEMPTIONS && peekedTagNumber == uint8(9): // BACnetConstructedDataAuthorizationExemptions
-		if _child, err = (&_BACnetConstructedDataAuthorizationExemptions{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAuthorizationExemptions).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAuthorizationExemptions for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTHORIZATION_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataAuthorizationMode
-		if _child, err = (&_BACnetConstructedDataAuthorizationMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAuthorizationMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAuthorizationMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AUTO_SLAVE_DISCOVERY && peekedTagNumber == uint8(1): // BACnetConstructedDataAutoSlaveDiscovery
-		if _child, err = (&_BACnetConstructedDataAutoSlaveDiscovery{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAutoSlaveDiscovery).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAutoSlaveDiscovery for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_AVERAGE_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAverageValue
-		if _child, err = (&_BACnetConstructedDataAverageValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAverageValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAverageValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACKUP_AND_RESTORE_STATE && peekedTagNumber == uint8(9): // BACnetConstructedDataBackupAndRestoreState
-		if _child, err = (&_BACnetConstructedDataBackupAndRestoreState{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBackupAndRestoreState).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBackupAndRestoreState for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACKUP_FAILURE_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataBackupFailureTimeout
-		if _child, err = (&_BACnetConstructedDataBackupFailureTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBackupFailureTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBackupFailureTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACKUP_PREPARATION_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataBackupPreparationTime
-		if _child, err = (&_BACnetConstructedDataBackupPreparationTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBackupPreparationTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBackupPreparationTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IP_GLOBAL_ADDRESS: // BACnetConstructedDataBACnetIPGlobalAddress
-		if _child, err = (&_BACnetConstructedDataBACnetIPGlobalAddress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPGlobalAddress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPGlobalAddress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IP_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataBACnetIPMode
-		if _child, err = (&_BACnetConstructedDataBACnetIPMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IP_MULTICAST_ADDRESS && peekedTagNumber == uint8(6): // BACnetConstructedDataBACnetIPMulticastAddress
-		if _child, err = (&_BACnetConstructedDataBACnetIPMulticastAddress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPMulticastAddress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPMulticastAddress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IP_NAT_TRAVERSAL && peekedTagNumber == uint8(1): // BACnetConstructedDataBACnetIPNATTraversal
-		if _child, err = (&_BACnetConstructedDataBACnetIPNATTraversal{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPNATTraversal).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPNATTraversal for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IP_UDP_PORT && peekedTagNumber == uint8(2): // BACnetConstructedDataBACnetIPUDPPort
-		if _child, err = (&_BACnetConstructedDataBACnetIPUDPPort{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPUDPPort).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPUDPPort for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IPV6_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataBACnetIPv6Mode
-		if _child, err = (&_BACnetConstructedDataBACnetIPv6Mode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPv6Mode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPv6Mode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IPV6_UDP_PORT && peekedTagNumber == uint8(2): // BACnetConstructedDataBACnetIPv6UDPPort
-		if _child, err = (&_BACnetConstructedDataBACnetIPv6UDPPort{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPv6UDPPort).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPv6UDPPort for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BACNET_IPV6_MULTICAST_ADDRESS && peekedTagNumber == uint8(6): // BACnetConstructedDataBACnetIPv6MulticastAddress
-		if _child, err = (&_BACnetConstructedDataBACnetIPv6MulticastAddress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBACnetIPv6MulticastAddress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBACnetIPv6MulticastAddress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BASE_DEVICE_SECURITY_POLICY && peekedTagNumber == uint8(9): // BACnetConstructedDataBaseDeviceSecurityPolicy
-		if _child, err = (&_BACnetConstructedDataBaseDeviceSecurityPolicy{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBaseDeviceSecurityPolicy).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBaseDeviceSecurityPolicy for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BBMD_ACCEPT_FD_REGISTRATIONS && peekedTagNumber == uint8(1): // BACnetConstructedDataBBMDAcceptFDRegistrations
-		if _child, err = (&_BACnetConstructedDataBBMDAcceptFDRegistrations{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBBMDAcceptFDRegistrations).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBBMDAcceptFDRegistrations for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BBMD_BROADCAST_DISTRIBUTION_TABLE: // BACnetConstructedDataBBMDBroadcastDistributionTable
-		if _child, err = (&_BACnetConstructedDataBBMDBroadcastDistributionTable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBBMDBroadcastDistributionTable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBBMDBroadcastDistributionTable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BBMD_FOREIGN_DEVICE_TABLE: // BACnetConstructedDataBBMDForeignDeviceTable
-		if _child, err = (&_BACnetConstructedDataBBMDForeignDeviceTable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBBMDForeignDeviceTable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBBMDForeignDeviceTable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BELONGS_TO: // BACnetConstructedDataBelongsTo
-		if _child, err = (&_BACnetConstructedDataBelongsTo{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBelongsTo).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBelongsTo for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BIAS && peekedTagNumber == uint8(4): // BACnetConstructedDataBias
-		if _child, err = (&_BACnetConstructedDataBias{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBias).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBias for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BIT_MASK && peekedTagNumber == uint8(8): // BACnetConstructedDataBitMask
-		if _child, err = (&_BACnetConstructedDataBitMask{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBitMask).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBitMask for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BIT_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataBitText
-		if _child, err = (&_BACnetConstructedDataBitText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBitText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBitText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BLINK_WARN_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataBlinkWarnEnable
-		if _child, err = (&_BACnetConstructedDataBlinkWarnEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBlinkWarnEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBlinkWarnEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_BUFFER_SIZE && peekedTagNumber == uint8(2): // BACnetConstructedDataBufferSize
-		if _child, err = (&_BACnetConstructedDataBufferSize{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBufferSize).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBufferSize for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_ASSIGNED_DIRECTION && peekedTagNumber == uint8(9): // BACnetConstructedDataCarAssignedDirection
-		if _child, err = (&_BACnetConstructedDataCarAssignedDirection{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarAssignedDirection).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarAssignedDirection for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_DOOR_COMMAND && peekedTagNumber == uint8(9): // BACnetConstructedDataCarDoorCommand
-		if _child, err = (&_BACnetConstructedDataCarDoorCommand{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarDoorCommand).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarDoorCommand for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_DOOR_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataCarDoorStatus
-		if _child, err = (&_BACnetConstructedDataCarDoorStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarDoorStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarDoorStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_DOOR_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataCarDoorText
-		if _child, err = (&_BACnetConstructedDataCarDoorText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarDoorText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarDoorText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_DOOR_ZONE && peekedTagNumber == uint8(1): // BACnetConstructedDataCarDoorZone
-		if _child, err = (&_BACnetConstructedDataCarDoorZone{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarDoorZone).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarDoorZone for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_DRIVE_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataCarDriveStatus
-		if _child, err = (&_BACnetConstructedDataCarDriveStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarDriveStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarDriveStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_LOAD && peekedTagNumber == uint8(4): // BACnetConstructedDataCarLoad
-		if _child, err = (&_BACnetConstructedDataCarLoad{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarLoad).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarLoad for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_LOAD_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataCarLoadUnits
-		if _child, err = (&_BACnetConstructedDataCarLoadUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarLoadUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarLoadUnits for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataCarMode
-		if _child, err = (&_BACnetConstructedDataCarMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_MOVING_DIRECTION && peekedTagNumber == uint8(9): // BACnetConstructedDataCarMovingDirection
-		if _child, err = (&_BACnetConstructedDataCarMovingDirection{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarMovingDirection).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarMovingDirection for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_POSITION && peekedTagNumber == uint8(2): // BACnetConstructedDataCarPosition
-		if _child, err = (&_BACnetConstructedDataCarPosition{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCarPosition).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCarPosition for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CHANGE_OF_STATE_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataChangeOfStateCount
-		if _child, err = (&_BACnetConstructedDataChangeOfStateCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChangeOfStateCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChangeOfStateCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CHANGE_OF_STATE_TIME: // BACnetConstructedDataChangeOfStateTime
-		if _child, err = (&_BACnetConstructedDataChangeOfStateTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChangeOfStateTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChangeOfStateTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CHANGES_PENDING && peekedTagNumber == uint8(1): // BACnetConstructedDataChangesPending
-		if _child, err = (&_BACnetConstructedDataChangesPending{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChangesPending).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChangesPending for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CHANNEL_NUMBER && peekedTagNumber == uint8(2): // BACnetConstructedDataChannelNumber
-		if _child, err = (&_BACnetConstructedDataChannelNumber{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChannelNumber).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChannelNumber for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CLIENT_COV_INCREMENT: // BACnetConstructedDataClientCOVIncrement
-		if _child, err = (&_BACnetConstructedDataClientCOVIncrement{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataClientCOVIncrement).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataClientCOVIncrement for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COMMAND && peekedTagNumber == uint8(9): // BACnetConstructedDataCommand
-		if _child, err = (&_BACnetConstructedDataCommand{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCommand).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCommand for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COMMAND_TIME_ARRAY: // BACnetConstructedDataCommandTimeArray
-		if _child, err = (&_BACnetConstructedDataCommandTimeArray{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCommandTimeArray).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCommandTimeArray for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CONFIGURATION_FILES && peekedTagNumber == uint8(12): // BACnetConstructedDataConfigurationFiles
-		if _child, err = (&_BACnetConstructedDataConfigurationFiles{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataConfigurationFiles).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataConfigurationFiles for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CONTROL_GROUPS && peekedTagNumber == uint8(2): // BACnetConstructedDataControlGroups
-		if _child, err = (&_BACnetConstructedDataControlGroups{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataControlGroups).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataControlGroups for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CONTROLLED_VARIABLE_REFERENCE: // BACnetConstructedDataControlledVariableReference
-		if _child, err = (&_BACnetConstructedDataControlledVariableReference{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataControlledVariableReference).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataControlledVariableReference for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CONTROLLED_VARIABLE_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataControlledVariableUnits
-		if _child, err = (&_BACnetConstructedDataControlledVariableUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataControlledVariableUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataControlledVariableUnits for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CONTROLLED_VARIABLE_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataControlledVariableValue
-		if _child, err = (&_BACnetConstructedDataControlledVariableValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataControlledVariableValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataControlledVariableValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataCount
-		if _child, err = (&_BACnetConstructedDataCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COUNT_BEFORE_CHANGE && peekedTagNumber == uint8(2): // BACnetConstructedDataCountBeforeChange
-		if _child, err = (&_BACnetConstructedDataCountBeforeChange{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCountBeforeChange).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCountBeforeChange for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COUNT_CHANGE_TIME: // BACnetConstructedDataCountChangeTime
-		if _child, err = (&_BACnetConstructedDataCountChangeTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCountChangeTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCountChangeTime for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_COV_INCREMENT && peekedTagNumber == uint8(2): // BACnetConstructedDataIntegerValueCOVIncrement
-		if _child, err = (&_BACnetConstructedDataIntegerValueCOVIncrement{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueCOVIncrement).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueCOVIncrement for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_COV_INCREMENT && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueCOVIncrement
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueCOVIncrement{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueCOVIncrement).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueCOVIncrement for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_COV_INCREMENT && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueCOVIncrement
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueCOVIncrement{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueCOVIncrement).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueCOVIncrement for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COV_INCREMENT && peekedTagNumber == uint8(4): // BACnetConstructedDataCOVIncrement
-		if _child, err = (&_BACnetConstructedDataCOVIncrement{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCOVIncrement).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCOVIncrement for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COV_PERIOD && peekedTagNumber == uint8(2): // BACnetConstructedDataCOVPeriod
-		if _child, err = (&_BACnetConstructedDataCOVPeriod{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCOVPeriod).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCOVPeriod for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COV_RESUBSCRIPTION_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataCOVResubscriptionInterval
-		if _child, err = (&_BACnetConstructedDataCOVResubscriptionInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCOVResubscriptionInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCOVResubscriptionInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COVU_PERIOD && peekedTagNumber == uint8(2): // BACnetConstructedDataCOVUPeriod
-		if _child, err = (&_BACnetConstructedDataCOVUPeriod{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCOVUPeriod).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCOVUPeriod for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_COVU_RECIPIENTS: // BACnetConstructedDataCOVURecipients
-		if _child, err = (&_BACnetConstructedDataCOVURecipients{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCOVURecipients).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCOVURecipients for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CREDENTIAL_DISABLE && peekedTagNumber == uint8(9): // BACnetConstructedDataCredentialDisable
-		if _child, err = (&_BACnetConstructedDataCredentialDisable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentialDisable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentialDisable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CREDENTIAL_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataCredentialStatus
-		if _child, err = (&_BACnetConstructedDataCredentialStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentialStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentialStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CREDENTIALS: // BACnetConstructedDataCredentials
-		if _child, err = (&_BACnetConstructedDataCredentials{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentials).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentials for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CREDENTIALS_IN_ZONE: // BACnetConstructedDataCredentialsInZone
-		if _child, err = (&_BACnetConstructedDataCredentialsInZone{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentialsInZone).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentialsInZone for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_CURRENT_COMMAND_PRIORITY: // BACnetConstructedDataCurrentCommandPriority
-		if _child, err = (&_BACnetConstructedDataCurrentCommandPriority{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCurrentCommandPriority).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCurrentCommandPriority for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DATABASE_REVISION && peekedTagNumber == uint8(2): // BACnetConstructedDataDatabaseRevision
-		if _child, err = (&_BACnetConstructedDataDatabaseRevision{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDatabaseRevision).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDatabaseRevision for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DATE_LIST: // BACnetConstructedDataDateList
-		if _child, err = (&_BACnetConstructedDataDateList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateList for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DAYLIGHT_SAVINGS_STATUS && peekedTagNumber == uint8(1): // BACnetConstructedDataDaylightSavingsStatus
-		if _child, err = (&_BACnetConstructedDataDaylightSavingsStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDaylightSavingsStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDaylightSavingsStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DAYS_REMAINING && peekedTagNumber == uint8(3): // BACnetConstructedDataDaysRemaining
-		if _child, err = (&_BACnetConstructedDataDaysRemaining{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDaysRemaining).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDaysRemaining for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_DEADBAND && peekedTagNumber == uint8(2): // BACnetConstructedDataIntegerValueDeadband
-		if _child, err = (&_BACnetConstructedDataIntegerValueDeadband{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueDeadband).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueDeadband for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_DEADBAND && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueDeadband
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueDeadband{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueDeadband).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueDeadband for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_DEADBAND && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueDeadband
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueDeadband{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueDeadband).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueDeadband for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEADBAND && peekedTagNumber == uint8(4): // BACnetConstructedDataDeadband
-		if _child, err = (&_BACnetConstructedDataDeadband{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeadband).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeadband for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEFAULT_FADE_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataDefaultFadeTime
-		if _child, err = (&_BACnetConstructedDataDefaultFadeTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDefaultFadeTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDefaultFadeTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEFAULT_RAMP_RATE && peekedTagNumber == uint8(4): // BACnetConstructedDataDefaultRampRate
-		if _child, err = (&_BACnetConstructedDataDefaultRampRate{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDefaultRampRate).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDefaultRampRate for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEFAULT_STEP_INCREMENT && peekedTagNumber == uint8(4): // BACnetConstructedDataDefaultStepIncrement
-		if _child, err = (&_BACnetConstructedDataDefaultStepIncrement{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDefaultStepIncrement).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDefaultStepIncrement for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEFAULT_SUBORDINATE_RELATIONSHIP && peekedTagNumber == uint8(9): // BACnetConstructedDataDefaultSubordinateRelationship
-		if _child, err = (&_BACnetConstructedDataDefaultSubordinateRelationship{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDefaultSubordinateRelationship).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDefaultSubordinateRelationship for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEFAULT_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataDefaultTimeout
-		if _child, err = (&_BACnetConstructedDataDefaultTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDefaultTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDefaultTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEPLOYED_PROFILE_LOCATION && peekedTagNumber == uint8(7): // BACnetConstructedDataDeployedProfileLocation
-		if _child, err = (&_BACnetConstructedDataDeployedProfileLocation{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeployedProfileLocation).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeployedProfileLocation for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DERIVATIVE_CONSTANT && peekedTagNumber == uint8(4): // BACnetConstructedDataDerivativeConstant
-		if _child, err = (&_BACnetConstructedDataDerivativeConstant{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDerivativeConstant).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDerivativeConstant for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DERIVATIVE_CONSTANT_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataDerivativeConstantUnits
-		if _child, err = (&_BACnetConstructedDataDerivativeConstantUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDerivativeConstantUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDerivativeConstantUnits for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DESCRIPTION && peekedTagNumber == uint8(7): // BACnetConstructedDataDescription
-		if _child, err = (&_BACnetConstructedDataDescription{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDescription).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDescription for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DESCRIPTION_OF_HALT && peekedTagNumber == uint8(7): // BACnetConstructedDataDescriptionOfHalt
-		if _child, err = (&_BACnetConstructedDataDescriptionOfHalt{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDescriptionOfHalt).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDescriptionOfHalt for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEVICE_ADDRESS_BINDING: // BACnetConstructedDataDeviceAddressBinding
-		if _child, err = (&_BACnetConstructedDataDeviceAddressBinding{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeviceAddressBinding).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeviceAddressBinding for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DEVICE_TYPE && peekedTagNumber == uint8(7): // BACnetConstructedDataDeviceType
-		if _child, err = (&_BACnetConstructedDataDeviceType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeviceType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeviceType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DIRECT_READING && peekedTagNumber == uint8(4): // BACnetConstructedDataDirectReading
-		if _child, err = (&_BACnetConstructedDataDirectReading{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDirectReading).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDirectReading for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DISTRIBUTION_KEY_REVISION && peekedTagNumber == uint8(2): // BACnetConstructedDataDistributionKeyRevision
-		if _child, err = (&_BACnetConstructedDataDistributionKeyRevision{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDistributionKeyRevision).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDistributionKeyRevision for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DO_NOT_HIDE && peekedTagNumber == uint8(1): // BACnetConstructedDataDoNotHide
-		if _child, err = (&_BACnetConstructedDataDoNotHide{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoNotHide).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoNotHide for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_ALARM_STATE && peekedTagNumber == uint8(9): // BACnetConstructedDataDoorAlarmState
-		if _child, err = (&_BACnetConstructedDataDoorAlarmState{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorAlarmState).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorAlarmState for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_EXTENDED_PULSE_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataDoorExtendedPulseTime
-		if _child, err = (&_BACnetConstructedDataDoorExtendedPulseTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorExtendedPulseTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorExtendedPulseTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_MEMBERS: // BACnetConstructedDataDoorMembers
-		if _child, err = (&_BACnetConstructedDataDoorMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorMembers for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_OPEN_TOO_LONG_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataDoorOpenTooLongTime
-		if _child, err = (&_BACnetConstructedDataDoorOpenTooLongTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorOpenTooLongTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorOpenTooLongTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_PULSE_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataDoorPulseTime
-		if _child, err = (&_BACnetConstructedDataDoorPulseTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorPulseTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorPulseTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataDoorStatus
-		if _child, err = (&_BACnetConstructedDataDoorStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DOOR_UNLOCK_DELAY_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataDoorUnlockDelayTime
-		if _child, err = (&_BACnetConstructedDataDoorUnlockDelayTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDoorUnlockDelayTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDoorUnlockDelayTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_DUTY_WINDOW && peekedTagNumber == uint8(2): // BACnetConstructedDataDutyWindow
-		if _child, err = (&_BACnetConstructedDataDutyWindow{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDutyWindow).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDutyWindow for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EFFECTIVE_PERIOD: // BACnetConstructedDataEffectivePeriod
-		if _child, err = (&_BACnetConstructedDataEffectivePeriod{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEffectivePeriod).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEffectivePeriod for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EGRESS_ACTIVE && peekedTagNumber == uint8(1): // BACnetConstructedDataEgressActive
-		if _child, err = (&_BACnetConstructedDataEgressActive{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEgressActive).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEgressActive for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EGRESS_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataEgressTime
-		if _child, err = (&_BACnetConstructedDataEgressTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEgressTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEgressTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ELAPSED_ACTIVE_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataElapsedActiveTime
-		if _child, err = (&_BACnetConstructedDataElapsedActiveTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataElapsedActiveTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataElapsedActiveTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ELEVATOR_GROUP && peekedTagNumber == uint8(12): // BACnetConstructedDataElevatorGroup
-		if _child, err = (&_BACnetConstructedDataElevatorGroup{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataElevatorGroup).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataElevatorGroup for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataEnable
-		if _child, err = (&_BACnetConstructedDataEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ENERGY_METER && peekedTagNumber == uint8(4): // BACnetConstructedDataEnergyMeter
-		if _child, err = (&_BACnetConstructedDataEnergyMeter{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEnergyMeter).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEnergyMeter for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ENERGY_METER_REF: // BACnetConstructedDataEnergyMeterRef
-		if _child, err = (&_BACnetConstructedDataEnergyMeterRef{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEnergyMeterRef).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEnergyMeterRef for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ENTRY_POINTS: // BACnetConstructedDataEntryPoints
-		if _child, err = (&_BACnetConstructedDataEntryPoints{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEntryPoints).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEntryPoints for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ERROR_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataErrorLimit
-		if _child, err = (&_BACnetConstructedDataErrorLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataErrorLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataErrorLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ESCALATOR_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataEscalatorMode
-		if _child, err = (&_BACnetConstructedDataEscalatorMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEscalatorMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEscalatorMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_ALGORITHM_INHIBIT && peekedTagNumber == uint8(1): // BACnetConstructedDataEventAlgorithmInhibit
-		if _child, err = (&_BACnetConstructedDataEventAlgorithmInhibit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventAlgorithmInhibit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventAlgorithmInhibit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_ALGORITHM_INHIBIT_REF: // BACnetConstructedDataEventAlgorithmInhibitRef
-		if _child, err = (&_BACnetConstructedDataEventAlgorithmInhibitRef{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventAlgorithmInhibitRef).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventAlgorithmInhibitRef for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_DETECTION_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataEventDetectionEnable
-		if _child, err = (&_BACnetConstructedDataEventDetectionEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventDetectionEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventDetectionEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_ENABLE && peekedTagNumber == uint8(8): // BACnetConstructedDataEventEnable
-		if _child, err = (&_BACnetConstructedDataEventEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_MESSAGE_TEXTS: // BACnetConstructedDataEventMessageTexts
-		if _child, err = (&_BACnetConstructedDataEventMessageTexts{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventMessageTexts).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventMessageTexts for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_MESSAGE_TEXTS_CONFIG: // BACnetConstructedDataEventMessageTextsConfig
-		if _child, err = (&_BACnetConstructedDataEventMessageTextsConfig{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventMessageTextsConfig).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventMessageTextsConfig for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_PARAMETERS: // BACnetConstructedDataEventParameters
-		if _child, err = (&_BACnetConstructedDataEventParameters{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventParameters).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventParameters for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_STATE && peekedTagNumber == uint8(9): // BACnetConstructedDataEventState
-		if _child, err = (&_BACnetConstructedDataEventState{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventState).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventState for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_TIME_STAMPS: // BACnetConstructedDataEventTimeStamps
-		if _child, err = (&_BACnetConstructedDataEventTimeStamps{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventTimeStamps).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventTimeStamps for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataEventType
-		if _child, err = (&_BACnetConstructedDataEventType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EXCEPTION_SCHEDULE: // BACnetConstructedDataExceptionSchedule
-		if _child, err = (&_BACnetConstructedDataExceptionSchedule{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataExceptionSchedule).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataExceptionSchedule for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EXECUTION_DELAY && peekedTagNumber == uint8(2): // BACnetConstructedDataExecutionDelay
-		if _child, err = (&_BACnetConstructedDataExecutionDelay{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataExecutionDelay).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataExecutionDelay for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EXIT_POINTS: // BACnetConstructedDataExitPoints
-		if _child, err = (&_BACnetConstructedDataExitPoints{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataExitPoints).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataExitPoints for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EXPECTED_SHED_LEVEL: // BACnetConstructedDataExpectedShedLevel
-		if _child, err = (&_BACnetConstructedDataExpectedShedLevel{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataExpectedShedLevel).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataExpectedShedLevel for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EXPIRATION_TIME: // BACnetConstructedDataExpirationTime
-		if _child, err = (&_BACnetConstructedDataExpirationTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataExpirationTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataExpirationTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_EXTENDED_TIME_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataExtendedTimeEnable
-		if _child, err = (&_BACnetConstructedDataExtendedTimeEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataExtendedTimeEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataExtendedTimeEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAILED_ATTEMPT_EVENTS: // BACnetConstructedDataFailedAttemptEvents
-		if _child, err = (&_BACnetConstructedDataFailedAttemptEvents{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFailedAttemptEvents).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFailedAttemptEvents for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAILED_ATTEMPTS && peekedTagNumber == uint8(2): // BACnetConstructedDataFailedAttempts
-		if _child, err = (&_BACnetConstructedDataFailedAttempts{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFailedAttempts).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFailedAttempts for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAILED_ATTEMPTS_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataFailedAttemptsTime
-		if _child, err = (&_BACnetConstructedDataFailedAttemptsTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFailedAttemptsTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFailedAttemptsTime for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataAccumulatorFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataAccumulatorFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogInputFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataAnalogInputFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogInputFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogInputFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogValueFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataAnalogValueFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogValueFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogValueFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataIntegerValueFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_HIGH_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataFaultHighLimit
-		if _child, err = (&_BACnetConstructedDataFaultHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFaultHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFaultHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataAccumulatorFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataAccumulatorFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogInputFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataAnalogInputFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogInputFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogInputFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogValueFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataAnalogValueFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogValueFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogValueFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataIntegerValueFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_LOW_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataFaultLowLimit
-		if _child, err = (&_BACnetConstructedDataFaultLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFaultLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFaultLowLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_PARAMETERS: // BACnetConstructedDataFaultParameters
-		if _child, err = (&_BACnetConstructedDataFaultParameters{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFaultParameters).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFaultParameters for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ESCALATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_SIGNALS: // BACnetConstructedDataEscalatorFaultSignals
-		if _child, err = (&_BACnetConstructedDataEscalatorFaultSignals{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEscalatorFaultSignals).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEscalatorFaultSignals for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFT && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_SIGNALS: // BACnetConstructedDataLiftFaultSignals
-		if _child, err = (&_BACnetConstructedDataLiftFaultSignals{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLiftFaultSignals).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLiftFaultSignals for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_SIGNALS: // BACnetConstructedDataFaultSignals
-		if _child, err = (&_BACnetConstructedDataFaultSignals{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFaultSignals).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFaultSignals for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataFaultType
-		if _child, err = (&_BACnetConstructedDataFaultType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFaultType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFaultType for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_DOOR && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES: // BACnetConstructedDataAccessDoorFaultValues
-		if _child, err = (&_BACnetConstructedDataAccessDoorFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessDoorFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessDoorFaultValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHARACTERSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES: // BACnetConstructedDataCharacterStringValueFaultValues
-		if _child, err = (&_BACnetConstructedDataCharacterStringValueFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCharacterStringValueFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCharacterStringValueFaultValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_POINT && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES: // BACnetConstructedDataLifeSafetyPointFaultValues
-		if _child, err = (&_BACnetConstructedDataLifeSafetyPointFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyPointFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyPointFaultValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES: // BACnetConstructedDataLifeSafetyZoneFaultValues
-		if _child, err = (&_BACnetConstructedDataLifeSafetyZoneFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyZoneFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyZoneFaultValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateInputFaultValues
-		if _child, err = (&_BACnetConstructedDataMultiStateInputFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateInputFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateInputFaultValues for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateValueFaultValues
-		if _child, err = (&_BACnetConstructedDataMultiStateValueFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateValueFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateValueFaultValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES: // BACnetConstructedDataFaultValues
-		if _child, err = (&_BACnetConstructedDataFaultValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFaultValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFaultValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FD_BBMD_ADDRESS: // BACnetConstructedDataFDBBMDAddress
-		if _child, err = (&_BACnetConstructedDataFDBBMDAddress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFDBBMDAddress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFDBBMDAddress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FD_SUBSCRIPTION_LIFETIME && peekedTagNumber == uint8(2): // BACnetConstructedDataFDSubscriptionLifetime
-		if _child, err = (&_BACnetConstructedDataFDSubscriptionLifetime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFDSubscriptionLifetime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFDSubscriptionLifetime for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FEEDBACK_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryLightingOutputFeedbackValue
-		if _child, err = (&_BACnetConstructedDataBinaryLightingOutputFeedbackValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryLightingOutputFeedbackValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryLightingOutputFeedbackValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FEEDBACK_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryOutputFeedbackValue
-		if _child, err = (&_BACnetConstructedDataBinaryOutputFeedbackValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryOutputFeedbackValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryOutputFeedbackValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FEEDBACK_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataLightingOutputFeedbackValue
-		if _child, err = (&_BACnetConstructedDataLightingOutputFeedbackValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingOutputFeedbackValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingOutputFeedbackValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_FEEDBACK_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateOutputFeedbackValue
-		if _child, err = (&_BACnetConstructedDataMultiStateOutputFeedbackValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateOutputFeedbackValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateOutputFeedbackValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FILE_ACCESS_METHOD && peekedTagNumber == uint8(9): // BACnetConstructedDataFileAccessMethod
-		if _child, err = (&_BACnetConstructedDataFileAccessMethod{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFileAccessMethod).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFileAccessMethod for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FILE_SIZE && peekedTagNumber == uint8(2): // BACnetConstructedDataFileSize
-		if _child, err = (&_BACnetConstructedDataFileSize{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFileSize).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFileSize for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FILE_TYPE && peekedTagNumber == uint8(7): // BACnetConstructedDataFileType
-		if _child, err = (&_BACnetConstructedDataFileType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFileType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFileType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FIRMWARE_REVISION && peekedTagNumber == uint8(7): // BACnetConstructedDataFirmwareRevision
-		if _child, err = (&_BACnetConstructedDataFirmwareRevision{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFirmwareRevision).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFirmwareRevision for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FLOOR_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataFloorText
-		if _child, err = (&_BACnetConstructedDataFloorText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFloorText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFloorText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_FULL_DUTY_BASELINE && peekedTagNumber == uint8(4): // BACnetConstructedDataFullDutyBaseline
-		if _child, err = (&_BACnetConstructedDataFullDutyBaseline{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFullDutyBaseline).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFullDutyBaseline for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_GLOBAL_IDENTIFIER && peekedTagNumber == uint8(2): // BACnetConstructedDataGlobalIdentifier
-		if _child, err = (&_BACnetConstructedDataGlobalIdentifier{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGlobalIdentifier).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGlobalIdentifier for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_GROUP_ID && peekedTagNumber == uint8(2): // BACnetConstructedDataGroupID
-		if _child, err = (&_BACnetConstructedDataGroupID{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGroupID).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGroupID for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_GROUP_MEMBER_NAMES && peekedTagNumber == uint8(7): // BACnetConstructedDataGroupMemberNames
-		if _child, err = (&_BACnetConstructedDataGroupMemberNames{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGroupMemberNames).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGroupMemberNames for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_GLOBAL_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_GROUP_MEMBERS: // BACnetConstructedDataGlobalGroupGroupMembers
-		if _child, err = (&_BACnetConstructedDataGlobalGroupGroupMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGlobalGroupGroupMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGlobalGroupGroupMembers for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ELEVATOR_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_GROUP_MEMBERS && peekedTagNumber == uint8(12): // BACnetConstructedDataElevatorGroupGroupMembers
-		if _child, err = (&_BACnetConstructedDataElevatorGroupGroupMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataElevatorGroupGroupMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataElevatorGroupGroupMembers for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_GROUP_MEMBERS && peekedTagNumber == uint8(12): // BACnetConstructedDataGroupMembers
-		if _child, err = (&_BACnetConstructedDataGroupMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGroupMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGroupMembers for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_GROUP_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataGroupMode
-		if _child, err = (&_BACnetConstructedDataGroupMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGroupMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGroupMode for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_HIGH_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataAccumulatorHighLimit
-		if _child, err = (&_BACnetConstructedDataAccumulatorHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_HIGH_LIMIT && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueHighLimit
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_HIGH_LIMIT && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueHighLimit
-		if _child, err = (&_BACnetConstructedDataIntegerValueHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueHighLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_HIGH_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueHighLimit
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueHighLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_HIGH_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataHighLimit
-		if _child, err = (&_BACnetConstructedDataHighLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataHighLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataHighLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_HIGHER_DECK && peekedTagNumber == uint8(12): // BACnetConstructedDataHigherDeck
-		if _child, err = (&_BACnetConstructedDataHigherDeck{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataHigherDeck).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataHigherDeck for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IN_PROCESS && peekedTagNumber == uint8(1): // BACnetConstructedDataInProcess
-		if _child, err = (&_BACnetConstructedDataInProcess{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInProcess).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInProcess for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IN_PROGRESS && peekedTagNumber == uint8(9): // BACnetConstructedDataInProgress
-		if _child, err = (&_BACnetConstructedDataInProgress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInProgress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInProgress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INACTIVE_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataInactiveText
-		if _child, err = (&_BACnetConstructedDataInactiveText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInactiveText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInactiveText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INITIAL_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataInitialTimeout
-		if _child, err = (&_BACnetConstructedDataInitialTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInitialTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInitialTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INPUT_REFERENCE: // BACnetConstructedDataInputReference
-		if _child, err = (&_BACnetConstructedDataInputReference{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInputReference).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInputReference for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INSTALLATION_ID && peekedTagNumber == uint8(2): // BACnetConstructedDataInstallationID
-		if _child, err = (&_BACnetConstructedDataInstallationID{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInstallationID).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInstallationID for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INSTANCE_OF && peekedTagNumber == uint8(7): // BACnetConstructedDataInstanceOf
-		if _child, err = (&_BACnetConstructedDataInstanceOf{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInstanceOf).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInstanceOf for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INSTANTANEOUS_POWER && peekedTagNumber == uint8(4): // BACnetConstructedDataInstantaneousPower
-		if _child, err = (&_BACnetConstructedDataInstantaneousPower{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataInstantaneousPower).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataInstantaneousPower for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INTEGRAL_CONSTANT && peekedTagNumber == uint8(4): // BACnetConstructedDataIntegralConstant
-		if _child, err = (&_BACnetConstructedDataIntegralConstant{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegralConstant).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegralConstant for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INTEGRAL_CONSTANT_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataIntegralConstantUnits
-		if _child, err = (&_BACnetConstructedDataIntegralConstantUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegralConstantUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegralConstantUnits for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERFACE_VALUE: // BACnetConstructedDataAnalogInputInterfaceValue
-		if _child, err = (&_BACnetConstructedDataAnalogInputInterfaceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogInputInterfaceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogInputInterfaceValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERFACE_VALUE: // BACnetConstructedDataAnalogOutputInterfaceValue
-		if _child, err = (&_BACnetConstructedDataAnalogOutputInterfaceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogOutputInterfaceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogOutputInterfaceValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERFACE_VALUE: // BACnetConstructedDataBinaryInputInterfaceValue
-		if _child, err = (&_BACnetConstructedDataBinaryInputInterfaceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryInputInterfaceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryInputInterfaceValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERFACE_VALUE: // BACnetConstructedDataBinaryOutputInterfaceValue
-		if _child, err = (&_BACnetConstructedDataBinaryOutputInterfaceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryOutputInterfaceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryOutputInterfaceValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERFACE_VALUE: // BACnetConstructedDataMultiStateInputInterfaceValue
-		if _child, err = (&_BACnetConstructedDataMultiStateInputInterfaceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateInputInterfaceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateInputInterfaceValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERFACE_VALUE: // BACnetConstructedDataMultiStateOutputInterfaceValue
-		if _child, err = (&_BACnetConstructedDataMultiStateOutputInterfaceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateOutputInterfaceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateOutputInterfaceValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_INTERVAL_OFFSET && peekedTagNumber == uint8(2): // BACnetConstructedDataIntervalOffset
-		if _child, err = (&_BACnetConstructedDataIntervalOffset{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntervalOffset).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntervalOffset for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_ADDRESS && peekedTagNumber == uint8(6): // BACnetConstructedDataIPAddress
-		if _child, err = (&_BACnetConstructedDataIPAddress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPAddress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPAddress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_DEFAULT_GATEWAY && peekedTagNumber == uint8(6): // BACnetConstructedDataIPDefaultGateway
-		if _child, err = (&_BACnetConstructedDataIPDefaultGateway{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPDefaultGateway).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPDefaultGateway for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_DHCP_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataIPDHCPEnable
-		if _child, err = (&_BACnetConstructedDataIPDHCPEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPDHCPEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPDHCPEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_DHCP_LEASE_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataIPDHCPLeaseTime
-		if _child, err = (&_BACnetConstructedDataIPDHCPLeaseTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPDHCPLeaseTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPDHCPLeaseTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_DHCP_LEASE_TIME_REMAINING && peekedTagNumber == uint8(2): // BACnetConstructedDataIPDHCPLeaseTimeRemaining
-		if _child, err = (&_BACnetConstructedDataIPDHCPLeaseTimeRemaining{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPDHCPLeaseTimeRemaining).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPDHCPLeaseTimeRemaining for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_DHCP_SERVER && peekedTagNumber == uint8(6): // BACnetConstructedDataIPDHCPServer
-		if _child, err = (&_BACnetConstructedDataIPDHCPServer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPDHCPServer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPDHCPServer for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_DNS_SERVER && peekedTagNumber == uint8(6): // BACnetConstructedDataIPDNSServer
-		if _child, err = (&_BACnetConstructedDataIPDNSServer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPDNSServer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPDNSServer for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IP_SUBNET_MASK && peekedTagNumber == uint8(6): // BACnetConstructedDataIPSubnetMask
-		if _child, err = (&_BACnetConstructedDataIPSubnetMask{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPSubnetMask).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPSubnetMask for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_ADDRESS && peekedTagNumber == uint8(6): // BACnetConstructedDataIPv6Address
-		if _child, err = (&_BACnetConstructedDataIPv6Address{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6Address).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6Address for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_AUTO_ADDRESSING_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataIPv6AutoAddressingEnable
-		if _child, err = (&_BACnetConstructedDataIPv6AutoAddressingEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6AutoAddressingEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6AutoAddressingEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_DEFAULT_GATEWAY && peekedTagNumber == uint8(6): // BACnetConstructedDataIPv6DefaultGateway
-		if _child, err = (&_BACnetConstructedDataIPv6DefaultGateway{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6DefaultGateway).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6DefaultGateway for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_DHCP_LEASE_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataIPv6DHCPLeaseTime
-		if _child, err = (&_BACnetConstructedDataIPv6DHCPLeaseTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6DHCPLeaseTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6DHCPLeaseTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_DHCP_LEASE_TIME_REMAINING && peekedTagNumber == uint8(2): // BACnetConstructedDataIPv6DHCPLeaseTimeRemaining
-		if _child, err = (&_BACnetConstructedDataIPv6DHCPLeaseTimeRemaining{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6DHCPLeaseTimeRemaining).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6DHCPLeaseTimeRemaining for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_DHCP_SERVER && peekedTagNumber == uint8(6): // BACnetConstructedDataIPv6DHCPServer
-		if _child, err = (&_BACnetConstructedDataIPv6DHCPServer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6DHCPServer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6DHCPServer for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_DNS_SERVER && peekedTagNumber == uint8(6): // BACnetConstructedDataIPv6DNSServer
-		if _child, err = (&_BACnetConstructedDataIPv6DNSServer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6DNSServer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6DNSServer for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_PREFIX_LENGTH && peekedTagNumber == uint8(2): // BACnetConstructedDataIPv6PrefixLength
-		if _child, err = (&_BACnetConstructedDataIPv6PrefixLength{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6PrefixLength).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6PrefixLength for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IPV6_ZONE_INDEX && peekedTagNumber == uint8(7): // BACnetConstructedDataIPv6ZoneIndex
-		if _child, err = (&_BACnetConstructedDataIPv6ZoneIndex{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIPv6ZoneIndex).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIPv6ZoneIndex for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_IS_UTC && peekedTagNumber == uint8(1): // BACnetConstructedDataIsUTC
-		if _child, err = (&_BACnetConstructedDataIsUTC{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIsUTC).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIsUTC for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_KEY_SETS: // BACnetConstructedDataKeySets
-		if _child, err = (&_BACnetConstructedDataKeySets{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataKeySets).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataKeySets for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LANDING_CALL_CONTROL: // BACnetConstructedDataLandingCallControl
-		if _child, err = (&_BACnetConstructedDataLandingCallControl{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLandingCallControl).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLandingCallControl for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LANDING_CALLS: // BACnetConstructedDataLandingCalls
-		if _child, err = (&_BACnetConstructedDataLandingCalls{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLandingCalls).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLandingCalls for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LANDING_DOOR_STATUS: // BACnetConstructedDataLandingDoorStatus
-		if _child, err = (&_BACnetConstructedDataLandingDoorStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLandingDoorStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLandingDoorStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_ACCESS_EVENT && peekedTagNumber == uint8(9): // BACnetConstructedDataLastAccessEvent
-		if _child, err = (&_BACnetConstructedDataLastAccessEvent{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastAccessEvent).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastAccessEvent for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_ACCESS_POINT: // BACnetConstructedDataLastAccessPoint
-		if _child, err = (&_BACnetConstructedDataLastAccessPoint{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastAccessPoint).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastAccessPoint for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_COMMAND_TIME: // BACnetConstructedDataLastCommandTime
-		if _child, err = (&_BACnetConstructedDataLastCommandTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastCommandTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastCommandTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_CREDENTIAL_ADDED: // BACnetConstructedDataLastCredentialAdded
-		if _child, err = (&_BACnetConstructedDataLastCredentialAdded{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastCredentialAdded).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastCredentialAdded for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_CREDENTIAL_ADDED_TIME: // BACnetConstructedDataLastCredentialAddedTime
-		if _child, err = (&_BACnetConstructedDataLastCredentialAddedTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastCredentialAddedTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastCredentialAddedTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_CREDENTIAL_REMOVED: // BACnetConstructedDataLastCredentialRemoved
-		if _child, err = (&_BACnetConstructedDataLastCredentialRemoved{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastCredentialRemoved).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastCredentialRemoved for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_CREDENTIAL_REMOVED_TIME: // BACnetConstructedDataLastCredentialRemovedTime
-		if _child, err = (&_BACnetConstructedDataLastCredentialRemovedTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastCredentialRemovedTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastCredentialRemovedTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_KEY_SERVER: // BACnetConstructedDataLastKeyServer
-		if _child, err = (&_BACnetConstructedDataLastKeyServer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastKeyServer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastKeyServer for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_NOTIFY_RECORD && peekedTagNumber == uint8(2): // BACnetConstructedDataLastNotifyRecord
-		if _child, err = (&_BACnetConstructedDataLastNotifyRecord{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastNotifyRecord).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastNotifyRecord for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_PRIORITY && peekedTagNumber == uint8(2): // BACnetConstructedDataLastPriority
-		if _child, err = (&_BACnetConstructedDataLastPriority{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastPriority).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastPriority for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_RESTART_REASON && peekedTagNumber == uint8(9): // BACnetConstructedDataLastRestartReason
-		if _child, err = (&_BACnetConstructedDataLastRestartReason{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastRestartReason).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastRestartReason for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_RESTORE_TIME: // BACnetConstructedDataLastRestoreTime
-		if _child, err = (&_BACnetConstructedDataLastRestoreTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastRestoreTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastRestoreTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_STATE_CHANGE && peekedTagNumber == uint8(9): // BACnetConstructedDataLastStateChange
-		if _child, err = (&_BACnetConstructedDataLastStateChange{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastStateChange).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastStateChange for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LAST_USE_TIME: // BACnetConstructedDataLastUseTime
-		if _child, err = (&_BACnetConstructedDataLastUseTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLastUseTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLastUseTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIFE_SAFETY_ALARM_VALUES && peekedTagNumber == uint8(9): // BACnetConstructedDataLifeSafetyAlarmValues
-		if _child, err = (&_BACnetConstructedDataLifeSafetyAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIGHTING_COMMAND: // BACnetConstructedDataLightingCommand
-		if _child, err = (&_BACnetConstructedDataLightingCommand{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingCommand).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingCommand for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIGHTING_COMMAND_DEFAULT_PRIORITY && peekedTagNumber == uint8(2): // BACnetConstructedDataLightingCommandDefaultPriority
-		if _child, err = (&_BACnetConstructedDataLightingCommandDefaultPriority{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingCommandDefaultPriority).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingCommandDefaultPriority for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIMIT_ENABLE && peekedTagNumber == uint8(8): // BACnetConstructedDataLimitEnable
-		if _child, err = (&_BACnetConstructedDataLimitEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLimitEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLimitEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIMIT_MONITORING_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataLimitMonitoringInterval
-		if _child, err = (&_BACnetConstructedDataLimitMonitoringInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLimitMonitoringInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLimitMonitoringInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LINK_SPEED && peekedTagNumber == uint8(4): // BACnetConstructedDataLinkSpeed
-		if _child, err = (&_BACnetConstructedDataLinkSpeed{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLinkSpeed).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLinkSpeed for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LINK_SPEED_AUTONEGOTIATE && peekedTagNumber == uint8(1): // BACnetConstructedDataLinkSpeedAutonegotiate
-		if _child, err = (&_BACnetConstructedDataLinkSpeedAutonegotiate{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLinkSpeedAutonegotiate).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLinkSpeedAutonegotiate for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LINK_SPEEDS && peekedTagNumber == uint8(4): // BACnetConstructedDataLinkSpeeds
-		if _child, err = (&_BACnetConstructedDataLinkSpeeds{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLinkSpeeds).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLinkSpeeds for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIST_OF_GROUP_MEMBERS: // BACnetConstructedDataListOfGroupMembers
-		if _child, err = (&_BACnetConstructedDataListOfGroupMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataListOfGroupMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataListOfGroupMembers for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHANNEL && propertyIdentifierArgument == BACnetPropertyIdentifier_LIST_OF_OBJECT_PROPERTY_REFERENCES: // BACnetConstructedDataChannelListOfObjectPropertyReferences
-		if _child, err = (&_BACnetConstructedDataChannelListOfObjectPropertyReferences{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChannelListOfObjectPropertyReferences).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChannelListOfObjectPropertyReferences for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LIST_OF_OBJECT_PROPERTY_REFERENCES: // BACnetConstructedDataListOfObjectPropertyReferences
-		if _child, err = (&_BACnetConstructedDataListOfObjectPropertyReferences{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataListOfObjectPropertyReferences).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataListOfObjectPropertyReferences for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCAL_DATE && peekedTagNumber == uint8(10): // BACnetConstructedDataLocalDate
-		if _child, err = (&_BACnetConstructedDataLocalDate{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLocalDate).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLocalDate for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCAL_FORWARDING_ONLY && peekedTagNumber == uint8(1): // BACnetConstructedDataLocalForwardingOnly
-		if _child, err = (&_BACnetConstructedDataLocalForwardingOnly{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLocalForwardingOnly).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLocalForwardingOnly for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCAL_TIME && peekedTagNumber == uint8(11): // BACnetConstructedDataLocalTime
-		if _child, err = (&_BACnetConstructedDataLocalTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLocalTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLocalTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCATION && peekedTagNumber == uint8(7): // BACnetConstructedDataLocation
-		if _child, err = (&_BACnetConstructedDataLocation{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLocation).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLocation for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCK_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataLockStatus
-		if _child, err = (&_BACnetConstructedDataLockStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLockStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLockStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCKOUT && peekedTagNumber == uint8(1): // BACnetConstructedDataLockout
-		if _child, err = (&_BACnetConstructedDataLockout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLockout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLockout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOCKOUT_RELINQUISH_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataLockoutRelinquishTime
-		if _child, err = (&_BACnetConstructedDataLockoutRelinquishTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLockoutRelinquishTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLockoutRelinquishTime for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_EVENT_LOG && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_BUFFER: // BACnetConstructedDataEventLogLogBuffer
-		if _child, err = (&_BACnetConstructedDataEventLogLogBuffer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataEventLogLogBuffer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataEventLogLogBuffer for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TREND_LOG && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_BUFFER: // BACnetConstructedDataTrendLogLogBuffer
-		if _child, err = (&_BACnetConstructedDataTrendLogLogBuffer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrendLogLogBuffer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrendLogLogBuffer for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TREND_LOG_MULTIPLE && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_BUFFER: // BACnetConstructedDataTrendLogMultipleLogBuffer
-		if _child, err = (&_BACnetConstructedDataTrendLogMultipleLogBuffer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrendLogMultipleLogBuffer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrendLogMultipleLogBuffer for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_BUFFER: // BACnetConstructedDataLogBuffer
-		if _child, err = (&_BACnetConstructedDataLogBuffer{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLogBuffer).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLogBuffer for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TREND_LOG && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_DEVICE_OBJECT_PROPERTY: // BACnetConstructedDataTrendLogLogDeviceObjectProperty
-		if _child, err = (&_BACnetConstructedDataTrendLogLogDeviceObjectProperty{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrendLogLogDeviceObjectProperty).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrendLogLogDeviceObjectProperty for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TREND_LOG_MULTIPLE && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_DEVICE_OBJECT_PROPERTY: // BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty
-		if _child, err = (&_BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_DEVICE_OBJECT_PROPERTY: // BACnetConstructedDataLogDeviceObjectProperty
-		if _child, err = (&_BACnetConstructedDataLogDeviceObjectProperty{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLogDeviceObjectProperty).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLogDeviceObjectProperty for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOG_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataLogInterval
-		if _child, err = (&_BACnetConstructedDataLogInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLogInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLogInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOGGING_OBJECT && peekedTagNumber == uint8(12): // BACnetConstructedDataLoggingObject
-		if _child, err = (&_BACnetConstructedDataLoggingObject{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoggingObject).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoggingObject for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOGGING_RECORD: // BACnetConstructedDataLoggingRecord
-		if _child, err = (&_BACnetConstructedDataLoggingRecord{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoggingRecord).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoggingRecord for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOGGING_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataLoggingType
-		if _child, err = (&_BACnetConstructedDataLoggingType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoggingType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoggingType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOW_DIFF_LIMIT: // BACnetConstructedDataLowDiffLimit
-		if _child, err = (&_BACnetConstructedDataLowDiffLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLowDiffLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLowDiffLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_LOW_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataAccumulatorLowLimit
-		if _child, err = (&_BACnetConstructedDataAccumulatorLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_LOW_LIMIT && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueLowLimit
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_LOW_LIMIT && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueLowLimit
-		if _child, err = (&_BACnetConstructedDataIntegerValueLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueLowLimit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_LOW_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueLowLimit
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueLowLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOW_LIMIT && peekedTagNumber == uint8(4): // BACnetConstructedDataLowLimit
-		if _child, err = (&_BACnetConstructedDataLowLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLowLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLowLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_LOWER_DECK && peekedTagNumber == uint8(12): // BACnetConstructedDataLowerDeck
-		if _child, err = (&_BACnetConstructedDataLowerDeck{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLowerDeck).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLowerDeck for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAC_ADDRESS && peekedTagNumber == uint8(6): // BACnetConstructedDataMACAddress
-		if _child, err = (&_BACnetConstructedDataMACAddress{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMACAddress).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMACAddress for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MACHINE_ROOM_ID && peekedTagNumber == uint8(12): // BACnetConstructedDataMachineRoomID
-		if _child, err = (&_BACnetConstructedDataMachineRoomID{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMachineRoomID).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMachineRoomID for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAINTENANCE_REQUIRED && peekedTagNumber == uint8(1): // BACnetConstructedDataLifeSafetyZoneMaintenanceRequired
-		if _child, err = (&_BACnetConstructedDataLifeSafetyZoneMaintenanceRequired{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyZoneMaintenanceRequired).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyZoneMaintenanceRequired for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAINTENANCE_REQUIRED && peekedTagNumber == uint8(9): // BACnetConstructedDataMaintenanceRequired
-		if _child, err = (&_BACnetConstructedDataMaintenanceRequired{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaintenanceRequired).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaintenanceRequired for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAKING_CAR_CALL: // BACnetConstructedDataMakingCarCall
-		if _child, err = (&_BACnetConstructedDataMakingCarCall{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMakingCarCall).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMakingCarCall for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MANIPULATED_VARIABLE_REFERENCE: // BACnetConstructedDataManipulatedVariableReference
-		if _child, err = (&_BACnetConstructedDataManipulatedVariableReference{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataManipulatedVariableReference).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataManipulatedVariableReference for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MANUAL_SLAVE_ADDRESS_BINDING: // BACnetConstructedDataManualSlaveAddressBinding
-		if _child, err = (&_BACnetConstructedDataManualSlaveAddressBinding{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataManualSlaveAddressBinding).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataManualSlaveAddressBinding for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MASKED_ALARM_VALUES && peekedTagNumber == uint8(9): // BACnetConstructedDataMaskedAlarmValues
-		if _child, err = (&_BACnetConstructedDataMaskedAlarmValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaskedAlarmValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaskedAlarmValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_ACTUAL_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataMaxActualValue
-		if _child, err = (&_BACnetConstructedDataMaxActualValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxActualValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxActualValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_APDU_LENGTH_ACCEPTED && peekedTagNumber == uint8(2): // BACnetConstructedDataMaxAPDULengthAccepted
-		if _child, err = (&_BACnetConstructedDataMaxAPDULengthAccepted{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxAPDULengthAccepted).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxAPDULengthAccepted for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_FAILED_ATTEMPTS && peekedTagNumber == uint8(2): // BACnetConstructedDataMaxFailedAttempts
-		if _child, err = (&_BACnetConstructedDataMaxFailedAttempts{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxFailedAttempts).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxFailedAttempts for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DEVICE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_INFO_FRAMES && peekedTagNumber == uint8(2): // BACnetConstructedDataDeviceMaxInfoFrames
-		if _child, err = (&_BACnetConstructedDataDeviceMaxInfoFrames{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeviceMaxInfoFrames).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeviceMaxInfoFrames for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_NETWORK_PORT && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_INFO_FRAMES && peekedTagNumber == uint8(2): // BACnetConstructedDataNetworkPortMaxInfoFrames
-		if _child, err = (&_BACnetConstructedDataNetworkPortMaxInfoFrames{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkPortMaxInfoFrames).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkPortMaxInfoFrames for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_INFO_FRAMES && peekedTagNumber == uint8(2): // BACnetConstructedDataMaxInfoFrames
-		if _child, err = (&_BACnetConstructedDataMaxInfoFrames{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxInfoFrames).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxInfoFrames for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DEVICE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_MASTER && peekedTagNumber == uint8(2): // BACnetConstructedDataDeviceMaxMaster
-		if _child, err = (&_BACnetConstructedDataDeviceMaxMaster{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDeviceMaxMaster).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDeviceMaxMaster for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_NETWORK_PORT && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_MASTER && peekedTagNumber == uint8(2): // BACnetConstructedDataNetworkPortMaxMaster
-		if _child, err = (&_BACnetConstructedDataNetworkPortMaxMaster{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkPortMaxMaster).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkPortMaxMaster for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_MASTER && peekedTagNumber == uint8(2): // BACnetConstructedDataMaxMaster
-		if _child, err = (&_BACnetConstructedDataMaxMaster{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxMaster).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxMaster for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataAccumulatorMaxPresValue
-		if _child, err = (&_BACnetConstructedDataAccumulatorMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogInputMaxPresValue
-		if _child, err = (&_BACnetConstructedDataAnalogInputMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogInputMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogInputMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogOutputMaxPresValue
-		if _child, err = (&_BACnetConstructedDataAnalogOutputMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogOutputMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogOutputMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogValueMaxPresValue
-		if _child, err = (&_BACnetConstructedDataAnalogValueMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogValueMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogValueMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueMaxPresValue
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueMaxPresValue
-		if _child, err = (&_BACnetConstructedDataIntegerValueMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueMaxPresValue
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMER && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataTimerMaxPresValue
-		if _child, err = (&_BACnetConstructedDataTimerMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_PRES_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataMaxPresValue
-		if _child, err = (&_BACnetConstructedDataMaxPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxPresValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAX_SEGMENTS_ACCEPTED && peekedTagNumber == uint8(2): // BACnetConstructedDataMaxSegmentsAccepted
-		if _child, err = (&_BACnetConstructedDataMaxSegmentsAccepted{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaxSegmentsAccepted).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaxSegmentsAccepted for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAXIMUM_OUTPUT && peekedTagNumber == uint8(4): // BACnetConstructedDataMaximumOutput
-		if _child, err = (&_BACnetConstructedDataMaximumOutput{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaximumOutput).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaximumOutput for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAXIMUM_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataMaximumValue
-		if _child, err = (&_BACnetConstructedDataMaximumValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaximumValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaximumValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MAXIMUM_VALUE_TIMESTAMP: // BACnetConstructedDataMaximumValueTimestamp
-		if _child, err = (&_BACnetConstructedDataMaximumValueTimestamp{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMaximumValueTimestamp).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMaximumValueTimestamp for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MEMBER_OF: // BACnetConstructedDataMemberOf
-		if _child, err = (&_BACnetConstructedDataMemberOf{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMemberOf).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMemberOf for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MEMBER_STATUS_FLAGS && peekedTagNumber == uint8(8): // BACnetConstructedDataMemberStatusFlags
-		if _child, err = (&_BACnetConstructedDataMemberStatusFlags{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMemberStatusFlags).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMemberStatusFlags for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MEMBERS: // BACnetConstructedDataMembers
-		if _child, err = (&_BACnetConstructedDataMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMembers for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_ACTUAL_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataMinActualValue
-		if _child, err = (&_BACnetConstructedDataMinActualValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinActualValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinActualValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCUMULATOR && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_PRES_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataAccumulatorMinPresValue
-		if _child, err = (&_BACnetConstructedDataAccumulatorMinPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccumulatorMinPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccumulatorMinPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_PRES_VALUE && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueMinPresValue
-		if _child, err = (&_BACnetConstructedDataIntegerValueMinPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueMinPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueMinPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_PRES_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueMinPresValue
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueMinPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueMinPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueMinPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_PRES_VALUE && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueMinPresValue
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueMinPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueMinPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueMinPresValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMER && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_PRES_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataTimerMinPresValue
-		if _child, err = (&_BACnetConstructedDataTimerMinPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerMinPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerMinPresValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MIN_PRES_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataMinPresValue
-		if _child, err = (&_BACnetConstructedDataMinPresValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinPresValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinPresValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MINIMUM_OFF_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataMinimumOffTime
-		if _child, err = (&_BACnetConstructedDataMinimumOffTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinimumOffTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinimumOffTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MINIMUM_ON_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataMinimumOnTime
-		if _child, err = (&_BACnetConstructedDataMinimumOnTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinimumOnTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinimumOnTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MINIMUM_OUTPUT && peekedTagNumber == uint8(4): // BACnetConstructedDataMinimumOutput
-		if _child, err = (&_BACnetConstructedDataMinimumOutput{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinimumOutput).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinimumOutput for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MINIMUM_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataMinimumValue
-		if _child, err = (&_BACnetConstructedDataMinimumValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinimumValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinimumValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MINIMUM_VALUE_TIMESTAMP: // BACnetConstructedDataMinimumValueTimestamp
-		if _child, err = (&_BACnetConstructedDataMinimumValueTimestamp{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMinimumValueTimestamp).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMinimumValueTimestamp for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MODE && peekedTagNumber == uint8(9): // BACnetConstructedDataMode
-		if _child, err = (&_BACnetConstructedDataMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MODEL_NAME && peekedTagNumber == uint8(7): // BACnetConstructedDataModelName
-		if _child, err = (&_BACnetConstructedDataModelName{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataModelName).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataModelName for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MODIFICATION_DATE: // BACnetConstructedDataModificationDate
-		if _child, err = (&_BACnetConstructedDataModificationDate{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataModificationDate).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataModificationDate for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_MUSTER_POINT && peekedTagNumber == uint8(1): // BACnetConstructedDataMusterPoint
-		if _child, err = (&_BACnetConstructedDataMusterPoint{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMusterPoint).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMusterPoint for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NEGATIVE_ACCESS_RULES: // BACnetConstructedDataNegativeAccessRules
-		if _child, err = (&_BACnetConstructedDataNegativeAccessRules{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNegativeAccessRules).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNegativeAccessRules for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NETWORK_ACCESS_SECURITY_POLICIES: // BACnetConstructedDataNetworkAccessSecurityPolicies
-		if _child, err = (&_BACnetConstructedDataNetworkAccessSecurityPolicies{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkAccessSecurityPolicies).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkAccessSecurityPolicies for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NETWORK_INTERFACE_NAME && peekedTagNumber == uint8(7): // BACnetConstructedDataNetworkInterfaceName
-		if _child, err = (&_BACnetConstructedDataNetworkInterfaceName{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkInterfaceName).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkInterfaceName for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NETWORK_NUMBER && peekedTagNumber == uint8(2): // BACnetConstructedDataNetworkNumber
-		if _child, err = (&_BACnetConstructedDataNetworkNumber{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkNumber).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkNumber for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NETWORK_NUMBER_QUALITY && peekedTagNumber == uint8(9): // BACnetConstructedDataNetworkNumberQuality
-		if _child, err = (&_BACnetConstructedDataNetworkNumberQuality{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkNumberQuality).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkNumberQuality for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NETWORK_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataNetworkType
-		if _child, err = (&_BACnetConstructedDataNetworkType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNetworkType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNetworkType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NEXT_STOPPING_FLOOR && peekedTagNumber == uint8(2): // BACnetConstructedDataNextStoppingFloor
-		if _child, err = (&_BACnetConstructedDataNextStoppingFloor{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNextStoppingFloor).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNextStoppingFloor for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NODE_SUBTYPE && peekedTagNumber == uint8(7): // BACnetConstructedDataNodeSubtype
-		if _child, err = (&_BACnetConstructedDataNodeSubtype{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNodeSubtype).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNodeSubtype for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NODE_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataNodeType
-		if _child, err = (&_BACnetConstructedDataNodeType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNodeType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNodeType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NOTIFICATION_CLASS && peekedTagNumber == uint8(2): // BACnetConstructedDataNotificationClass
-		if _child, err = (&_BACnetConstructedDataNotificationClass{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNotificationClass).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNotificationClass for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NOTIFICATION_THRESHOLD && peekedTagNumber == uint8(2): // BACnetConstructedDataNotificationThreshold
-		if _child, err = (&_BACnetConstructedDataNotificationThreshold{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNotificationThreshold).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNotificationThreshold for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NOTIFY_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataNotifyType
-		if _child, err = (&_BACnetConstructedDataNotifyType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNotifyType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNotifyType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NUMBER_OF_APDU_RETRIES && peekedTagNumber == uint8(2): // BACnetConstructedDataNumberOfAPDURetries
-		if _child, err = (&_BACnetConstructedDataNumberOfAPDURetries{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNumberOfAPDURetries).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNumberOfAPDURetries for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NUMBER_OF_AUTHENTICATION_POLICIES && peekedTagNumber == uint8(2): // BACnetConstructedDataNumberOfAuthenticationPolicies
-		if _child, err = (&_BACnetConstructedDataNumberOfAuthenticationPolicies{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNumberOfAuthenticationPolicies).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNumberOfAuthenticationPolicies for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_NUMBER_OF_STATES && peekedTagNumber == uint8(2): // BACnetConstructedDataNumberOfStates
-		if _child, err = (&_BACnetConstructedDataNumberOfStates{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataNumberOfStates).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataNumberOfStates for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OBJECT_IDENTIFIER && peekedTagNumber == uint8(12): // BACnetConstructedDataObjectIdentifier
-		if _child, err = (&_BACnetConstructedDataObjectIdentifier{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataObjectIdentifier).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataObjectIdentifier for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OBJECT_LIST: // BACnetConstructedDataObjectList
-		if _child, err = (&_BACnetConstructedDataObjectList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataObjectList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataObjectList for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OBJECT_NAME && peekedTagNumber == uint8(7): // BACnetConstructedDataObjectName
-		if _child, err = (&_BACnetConstructedDataObjectName{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataObjectName).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataObjectName for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OBJECT_PROPERTY_REFERENCE: // BACnetConstructedDataObjectPropertyReference
-		if _child, err = (&_BACnetConstructedDataObjectPropertyReference{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataObjectPropertyReference).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataObjectPropertyReference for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OBJECT_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataObjectType
-		if _child, err = (&_BACnetConstructedDataObjectType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataObjectType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataObjectType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataOccupancyCount
-		if _child, err = (&_BACnetConstructedDataOccupancyCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_COUNT_ADJUST && peekedTagNumber == uint8(1): // BACnetConstructedDataOccupancyCountAdjust
-		if _child, err = (&_BACnetConstructedDataOccupancyCountAdjust{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyCountAdjust).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyCountAdjust for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_COUNT_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataOccupancyCountEnable
-		if _child, err = (&_BACnetConstructedDataOccupancyCountEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyCountEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyCountEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_LOWER_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataOccupancyLowerLimit
-		if _child, err = (&_BACnetConstructedDataOccupancyLowerLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyLowerLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyLowerLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_LOWER_LIMIT_ENFORCED && peekedTagNumber == uint8(1): // BACnetConstructedDataOccupancyLowerLimitEnforced
-		if _child, err = (&_BACnetConstructedDataOccupancyLowerLimitEnforced{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyLowerLimitEnforced).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyLowerLimitEnforced for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_STATE && peekedTagNumber == uint8(9): // BACnetConstructedDataOccupancyState
-		if _child, err = (&_BACnetConstructedDataOccupancyState{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyState).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyState for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_UPPER_LIMIT && peekedTagNumber == uint8(2): // BACnetConstructedDataOccupancyUpperLimit
-		if _child, err = (&_BACnetConstructedDataOccupancyUpperLimit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyUpperLimit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyUpperLimit for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OCCUPANCY_UPPER_LIMIT_ENFORCED && peekedTagNumber == uint8(1): // BACnetConstructedDataOccupancyUpperLimitEnforced
-		if _child, err = (&_BACnetConstructedDataOccupancyUpperLimitEnforced{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOccupancyUpperLimitEnforced).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOccupancyUpperLimitEnforced for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OPERATION_DIRECTION && peekedTagNumber == uint8(9): // BACnetConstructedDataOperationDirection
-		if _child, err = (&_BACnetConstructedDataOperationDirection{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOperationDirection).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOperationDirection for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OPERATION_EXPECTED && peekedTagNumber == uint8(9): // BACnetConstructedDataOperationExpected
-		if _child, err = (&_BACnetConstructedDataOperationExpected{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOperationExpected).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOperationExpected for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OPTIONAL: // BACnetConstructedDataOptional
-		if _child, err = (&_BACnetConstructedDataOptional{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOptional).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOptional for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OUT_OF_SERVICE && peekedTagNumber == uint8(1): // BACnetConstructedDataOutOfService
-		if _child, err = (&_BACnetConstructedDataOutOfService{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOutOfService).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOutOfService for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_OUTPUT_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataOutputUnits
-		if _child, err = (&_BACnetConstructedDataOutputUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOutputUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOutputUnits for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PACKET_REORDER_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataPacketReorderTime
-		if _child, err = (&_BACnetConstructedDataPacketReorderTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPacketReorderTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPacketReorderTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PASSBACK_MODE: // BACnetConstructedDataPassbackMode
-		if _child, err = (&_BACnetConstructedDataPassbackMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPassbackMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPassbackMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PASSBACK_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataPassbackTimeout
-		if _child, err = (&_BACnetConstructedDataPassbackTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPassbackTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPassbackTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PASSENGER_ALARM && peekedTagNumber == uint8(1): // BACnetConstructedDataPassengerAlarm
-		if _child, err = (&_BACnetConstructedDataPassengerAlarm{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPassengerAlarm).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPassengerAlarm for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_POLARITY && peekedTagNumber == uint8(9): // BACnetConstructedDataPolarity
-		if _child, err = (&_BACnetConstructedDataPolarity{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPolarity).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPolarity for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PORT_FILTER: // BACnetConstructedDataPortFilter
-		if _child, err = (&_BACnetConstructedDataPortFilter{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPortFilter).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPortFilter for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_POSITIVE_ACCESS_RULES: // BACnetConstructedDataPositiveAccessRules
-		if _child, err = (&_BACnetConstructedDataPositiveAccessRules{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveAccessRules).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveAccessRules for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_POWER && peekedTagNumber == uint8(4): // BACnetConstructedDataPower
-		if _child, err = (&_BACnetConstructedDataPower{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPower).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPower for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_POWER_MODE && peekedTagNumber == uint8(1): // BACnetConstructedDataPowerMode
-		if _child, err = (&_BACnetConstructedDataPowerMode{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPowerMode).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPowerMode for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESCALE: // BACnetConstructedDataPrescale
-		if _child, err = (&_BACnetConstructedDataPrescale{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPrescale).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPrescale for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_DOOR && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataAccessDoorPresentValue
-		if _child, err = (&_BACnetConstructedDataAccessDoorPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessDoorPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessDoorPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ALERT_ENROLLMENT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(12): // BACnetConstructedDataAlertEnrollmentPresentValue
-		if _child, err = (&_BACnetConstructedDataAlertEnrollmentPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAlertEnrollmentPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAlertEnrollmentPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogInputPresentValue
-		if _child, err = (&_BACnetConstructedDataAnalogInputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogInputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogInputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogOutputPresentValue
-		if _child, err = (&_BACnetConstructedDataAnalogOutputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogOutputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogOutputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogValuePresentValue
-		if _child, err = (&_BACnetConstructedDataAnalogValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryInputPresentValue
-		if _child, err = (&_BACnetConstructedDataBinaryInputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryInputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryInputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryOutputPresentValue
-		if _child, err = (&_BACnetConstructedDataBinaryOutputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryOutputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryOutputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryValuePresentValue
-		if _child, err = (&_BACnetConstructedDataBinaryValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryLightingOutputPresentValue
-		if _child, err = (&_BACnetConstructedDataBinaryLightingOutputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryLightingOutputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryLightingOutputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BITSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(8): // BACnetConstructedDataBitStringValuePresentValue
-		if _child, err = (&_BACnetConstructedDataBitStringValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBitStringValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBitStringValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CALENDAR && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(1): // BACnetConstructedDataCalendarPresentValue
-		if _child, err = (&_BACnetConstructedDataCalendarPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCalendarPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCalendarPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHANNEL && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE: // BACnetConstructedDataChannelPresentValue
-		if _child, err = (&_BACnetConstructedDataChannelPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataChannelPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataChannelPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHARACTERSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(7): // BACnetConstructedDataCharacterStringValuePresentValue
-		if _child, err = (&_BACnetConstructedDataCharacterStringValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCharacterStringValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCharacterStringValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CREDENTIAL_DATA_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE: // BACnetConstructedDataCredentialDataInputPresentValue
-		if _child, err = (&_BACnetConstructedDataCredentialDataInputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentialDataInputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentialDataInputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(10): // BACnetConstructedDataDateValuePresentValue
-		if _child, err = (&_BACnetConstructedDataDateValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(10): // BACnetConstructedDataDatePatternValuePresentValue
-		if _child, err = (&_BACnetConstructedDataDatePatternValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDatePatternValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDatePatternValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATETIME_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(11): // BACnetConstructedDataDateTimeValuePresentValue
-		if _child, err = (&_BACnetConstructedDataDateTimeValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateTimeValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateTimeValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATETIMEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(11): // BACnetConstructedDataDateTimePatternValuePresentValue
-		if _child, err = (&_BACnetConstructedDataDateTimePatternValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateTimePatternValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateTimePatternValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValuePresentValue
-		if _child, err = (&_BACnetConstructedDataIntegerValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValuePresentValue
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataLightingOutputPresentValue
-		if _child, err = (&_BACnetConstructedDataLightingOutputPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingOutputPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingOutputPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_POINT && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataLifeSafetyPointPresentValue
-		if _child, err = (&_BACnetConstructedDataLifeSafetyPointPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyPointPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyPointPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIFE_SAFETY_ZONE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataLifeSafetyZonePresentValue
-		if _child, err = (&_BACnetConstructedDataLifeSafetyZonePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLifeSafetyZonePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLifeSafetyZonePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LOAD_CONTROL && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataLoadControlPresentValue
-		if _child, err = (&_BACnetConstructedDataLoadControlPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoadControlPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoadControlPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LOOP && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataLoopPresentValue
-		if _child, err = (&_BACnetConstructedDataLoopPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLoopPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLoopPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_PULSE_CONVERTER && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataPulseConverterPresentValue
-		if _child, err = (&_BACnetConstructedDataPulseConverterPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPulseConverterPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPulseConverterPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE: // BACnetConstructedDataGroupPresentValue
-		if _child, err = (&_BACnetConstructedDataGroupPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGroupPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGroupPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_GLOBAL_GROUP && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE: // BACnetConstructedDataGlobalGroupPresentValue
-		if _child, err = (&_BACnetConstructedDataGlobalGroupPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataGlobalGroupPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataGlobalGroupPresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_OCTETSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(6): // BACnetConstructedDataOctetStringValuePresentValue
-		if _child, err = (&_BACnetConstructedDataOctetStringValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOctetStringValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOctetStringValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_SCHEDULE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE: // BACnetConstructedDataSchedulePresentValue
-		if _child, err = (&_BACnetConstructedDataSchedulePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSchedulePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSchedulePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIME_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(11): // BACnetConstructedDataTimeValuePresentValue
-		if _child, err = (&_BACnetConstructedDataTimeValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(11): // BACnetConstructedDataTimePatternValuePresentValue
-		if _child, err = (&_BACnetConstructedDataTimePatternValuePresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimePatternValuePresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimePatternValuePresentValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PRESENT_VALUE && peekedTagNumber == uint8(2): // BACnetConstructedDataPresentValue
-		if _child, err = (&_BACnetConstructedDataPresentValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPresentValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPresentValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PRIORITY: // BACnetConstructedDataPriority
-		if _child, err = (&_BACnetConstructedDataPriority{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPriority).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPriority for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PRIORITY_ARRAY: // BACnetConstructedDataPriorityArray
-		if _child, err = (&_BACnetConstructedDataPriorityArray{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPriorityArray).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPriorityArray for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PRIORITY_FOR_WRITING && peekedTagNumber == uint8(2): // BACnetConstructedDataPriorityForWriting
-		if _child, err = (&_BACnetConstructedDataPriorityForWriting{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPriorityForWriting).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPriorityForWriting for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROCESS_IDENTIFIER && peekedTagNumber == uint8(2): // BACnetConstructedDataProcessIdentifier
-		if _child, err = (&_BACnetConstructedDataProcessIdentifier{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProcessIdentifier).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProcessIdentifier for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROCESS_IDENTIFIER_FILTER: // BACnetConstructedDataProcessIdentifierFilter
-		if _child, err = (&_BACnetConstructedDataProcessIdentifierFilter{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProcessIdentifierFilter).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProcessIdentifierFilter for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROFILE_LOCATION && peekedTagNumber == uint8(7): // BACnetConstructedDataProfileLocation
-		if _child, err = (&_BACnetConstructedDataProfileLocation{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProfileLocation).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProfileLocation for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROFILE_NAME && peekedTagNumber == uint8(7): // BACnetConstructedDataProfileName
-		if _child, err = (&_BACnetConstructedDataProfileName{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProfileName).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProfileName for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROGRAM_CHANGE && peekedTagNumber == uint8(9): // BACnetConstructedDataProgramChange
-		if _child, err = (&_BACnetConstructedDataProgramChange{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProgramChange).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProgramChange for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROGRAM_LOCATION && peekedTagNumber == uint8(7): // BACnetConstructedDataProgramLocation
-		if _child, err = (&_BACnetConstructedDataProgramLocation{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProgramLocation).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProgramLocation for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROGRAM_STATE && peekedTagNumber == uint8(9): // BACnetConstructedDataProgramState
-		if _child, err = (&_BACnetConstructedDataProgramState{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProgramState).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProgramState for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROPERTY_LIST && peekedTagNumber == uint8(9): // BACnetConstructedDataPropertyList
-		if _child, err = (&_BACnetConstructedDataPropertyList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPropertyList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPropertyList for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROPORTIONAL_CONSTANT && peekedTagNumber == uint8(4): // BACnetConstructedDataProportionalConstant
-		if _child, err = (&_BACnetConstructedDataProportionalConstant{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProportionalConstant).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProportionalConstant for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROPORTIONAL_CONSTANT_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataProportionalConstantUnits
-		if _child, err = (&_BACnetConstructedDataProportionalConstantUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProportionalConstantUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProportionalConstantUnits for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROTOCOL_LEVEL && peekedTagNumber == uint8(9): // BACnetConstructedDataProtocolLevel
-		if _child, err = (&_BACnetConstructedDataProtocolLevel{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProtocolLevel).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProtocolLevel for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROTOCOL_OBJECT_TYPES_SUPPORTED && peekedTagNumber == uint8(8): // BACnetConstructedDataProtocolObjectTypesSupported
-		if _child, err = (&_BACnetConstructedDataProtocolObjectTypesSupported{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProtocolObjectTypesSupported).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProtocolObjectTypesSupported for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROTOCOL_REVISION && peekedTagNumber == uint8(2): // BACnetConstructedDataProtocolRevision
-		if _child, err = (&_BACnetConstructedDataProtocolRevision{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProtocolRevision).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProtocolRevision for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROTOCOL_SERVICES_SUPPORTED && peekedTagNumber == uint8(8): // BACnetConstructedDataProtocolServicesSupported
-		if _child, err = (&_BACnetConstructedDataProtocolServicesSupported{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProtocolServicesSupported).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProtocolServicesSupported for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PROTOCOL_VERSION && peekedTagNumber == uint8(2): // BACnetConstructedDataProtocolVersion
-		if _child, err = (&_BACnetConstructedDataProtocolVersion{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataProtocolVersion).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataProtocolVersion for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_PULSE_RATE && peekedTagNumber == uint8(2): // BACnetConstructedDataPulseRate
-		if _child, err = (&_BACnetConstructedDataPulseRate{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPulseRate).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPulseRate for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_READ_ONLY && peekedTagNumber == uint8(1): // BACnetConstructedDataReadOnly
-		if _child, err = (&_BACnetConstructedDataReadOnly{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataReadOnly).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataReadOnly for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REASON_FOR_DISABLE && peekedTagNumber == uint8(9): // BACnetConstructedDataReasonForDisable
-		if _child, err = (&_BACnetConstructedDataReasonForDisable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataReasonForDisable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataReasonForDisable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REASON_FOR_HALT && peekedTagNumber == uint8(9): // BACnetConstructedDataReasonForHalt
-		if _child, err = (&_BACnetConstructedDataReasonForHalt{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataReasonForHalt).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataReasonForHalt for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RECIPIENT_LIST: // BACnetConstructedDataRecipientList
-		if _child, err = (&_BACnetConstructedDataRecipientList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRecipientList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRecipientList for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_FILE && propertyIdentifierArgument == BACnetPropertyIdentifier_RECORD_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataFileRecordCount
-		if _child, err = (&_BACnetConstructedDataFileRecordCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataFileRecordCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataFileRecordCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RECORD_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataRecordCount
-		if _child, err = (&_BACnetConstructedDataRecordCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRecordCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRecordCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RECORDS_SINCE_NOTIFICATION && peekedTagNumber == uint8(2): // BACnetConstructedDataRecordsSinceNotification
-		if _child, err = (&_BACnetConstructedDataRecordsSinceNotification{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRecordsSinceNotification).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRecordsSinceNotification for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REFERENCE_PORT && peekedTagNumber == uint8(2): // BACnetConstructedDataReferencePort
-		if _child, err = (&_BACnetConstructedDataReferencePort{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataReferencePort).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataReferencePort for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REGISTERED_CAR_CALL: // BACnetConstructedDataRegisteredCarCall
-		if _child, err = (&_BACnetConstructedDataRegisteredCarCall{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRegisteredCarCall).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRegisteredCarCall for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RELIABILITY && peekedTagNumber == uint8(9): // BACnetConstructedDataReliability
-		if _child, err = (&_BACnetConstructedDataReliability{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataReliability).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataReliability for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RELIABILITY_EVALUATION_INHIBIT && peekedTagNumber == uint8(1): // BACnetConstructedDataReliabilityEvaluationInhibit
-		if _child, err = (&_BACnetConstructedDataReliabilityEvaluationInhibit{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataReliabilityEvaluationInhibit).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataReliabilityEvaluationInhibit for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ACCESS_DOOR && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(9): // BACnetConstructedDataAccessDoorRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataAccessDoorRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAccessDoorRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAccessDoorRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogOutputRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataAnalogOutputRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogOutputRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogOutputRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(4): // BACnetConstructedDataAnalogValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataAnalogValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataAnalogValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataAnalogValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryOutputRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataBinaryOutputRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryOutputRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryOutputRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataBinaryValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BINARY_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(9): // BACnetConstructedDataBinaryLightingOutputRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataBinaryLightingOutputRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBinaryLightingOutputRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBinaryLightingOutputRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_BITSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(8): // BACnetConstructedDataBitStringValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataBitStringValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataBitStringValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataBitStringValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CHARACTERSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(7): // BACnetConstructedDataCharacterStringValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataCharacterStringValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCharacterStringValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCharacterStringValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(10): // BACnetConstructedDataDateValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataDateValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(10): // BACnetConstructedDataDatePatternValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataDatePatternValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDatePatternValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDatePatternValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATETIME_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT: // BACnetConstructedDataDateTimeValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataDateTimeValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateTimeValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateTimeValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_DATETIMEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT: // BACnetConstructedDataDateTimePatternValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataDateTimePatternValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataDateTimePatternValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataDateTimePatternValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(4): // BACnetConstructedDataLightingOutputRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataLightingOutputRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingOutputRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingOutputRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMEPATTERN_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(11): // BACnetConstructedDataTimePatternValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataTimePatternValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimePatternValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimePatternValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIME_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(11): // BACnetConstructedDataTimeValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataTimeValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataIntegerValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_OCTETSTRING_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(6): // BACnetConstructedDataOctetStringValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataOctetStringValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataOctetStringValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataOctetStringValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateOutputRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataMultiStateOutputRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateOutputRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateOutputRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_MULTI_STATE_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(2): // BACnetConstructedDataMultiStateValueRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataMultiStateValueRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataMultiStateValueRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataMultiStateValueRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RELINQUISH_DEFAULT && peekedTagNumber == uint8(2): // BACnetConstructedDataRelinquishDefault
-		if _child, err = (&_BACnetConstructedDataRelinquishDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRelinquishDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRelinquishDefault for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REPRESENTS: // BACnetConstructedDataRepresents
-		if _child, err = (&_BACnetConstructedDataRepresents{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRepresents).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRepresents for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REQUESTED_SHED_LEVEL: // BACnetConstructedDataRequestedShedLevel
-		if _child, err = (&_BACnetConstructedDataRequestedShedLevel{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRequestedShedLevel).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRequestedShedLevel for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REQUESTED_UPDATE_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataRequestedUpdateInterval
-		if _child, err = (&_BACnetConstructedDataRequestedUpdateInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRequestedUpdateInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRequestedUpdateInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_REQUIRED: // BACnetConstructedDataRequired
-		if _child, err = (&_BACnetConstructedDataRequired{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRequired).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRequired for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LARGE_ANALOG_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RESOLUTION && peekedTagNumber == uint8(5): // BACnetConstructedDataLargeAnalogValueResolution
-		if _child, err = (&_BACnetConstructedDataLargeAnalogValueResolution{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLargeAnalogValueResolution).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLargeAnalogValueResolution for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RESOLUTION && peekedTagNumber == uint8(3): // BACnetConstructedDataIntegerValueResolution
-		if _child, err = (&_BACnetConstructedDataIntegerValueResolution{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataIntegerValueResolution).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataIntegerValueResolution for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_POSITIVE_INTEGER_VALUE && propertyIdentifierArgument == BACnetPropertyIdentifier_RESOLUTION && peekedTagNumber == uint8(2): // BACnetConstructedDataPositiveIntegerValueResolution
-		if _child, err = (&_BACnetConstructedDataPositiveIntegerValueResolution{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataPositiveIntegerValueResolution).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataPositiveIntegerValueResolution for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_TIMER && propertyIdentifierArgument == BACnetPropertyIdentifier_RESOLUTION && peekedTagNumber == uint8(2): // BACnetConstructedDataTimerResolution
-		if _child, err = (&_BACnetConstructedDataTimerResolution{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerResolution).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerResolution for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RESOLUTION && peekedTagNumber == uint8(4): // BACnetConstructedDataResolution
-		if _child, err = (&_BACnetConstructedDataResolution{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataResolution).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataResolution for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RESTART_NOTIFICATION_RECIPIENTS: // BACnetConstructedDataRestartNotificationRecipients
-		if _child, err = (&_BACnetConstructedDataRestartNotificationRecipients{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRestartNotificationRecipients).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRestartNotificationRecipients for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RESTORE_COMPLETION_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataRestoreCompletionTime
-		if _child, err = (&_BACnetConstructedDataRestoreCompletionTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRestoreCompletionTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRestoreCompletionTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_RESTORE_PREPARATION_TIME && peekedTagNumber == uint8(2): // BACnetConstructedDataRestorePreparationTime
-		if _child, err = (&_BACnetConstructedDataRestorePreparationTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRestorePreparationTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRestorePreparationTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ROUTING_TABLE: // BACnetConstructedDataRoutingTable
-		if _child, err = (&_BACnetConstructedDataRoutingTable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataRoutingTable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataRoutingTable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SCALE: // BACnetConstructedDataScale
-		if _child, err = (&_BACnetConstructedDataScale{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataScale).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataScale for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SCALE_FACTOR && peekedTagNumber == uint8(4): // BACnetConstructedDataScaleFactor
-		if _child, err = (&_BACnetConstructedDataScaleFactor{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataScaleFactor).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataScaleFactor for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SCHEDULE_DEFAULT: // BACnetConstructedDataScheduleDefault
-		if _child, err = (&_BACnetConstructedDataScheduleDefault{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataScheduleDefault).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataScheduleDefault for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SECURED_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataSecuredStatus
-		if _child, err = (&_BACnetConstructedDataSecuredStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSecuredStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSecuredStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SECURITY_PDU_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataSecurityPDUTimeout
-		if _child, err = (&_BACnetConstructedDataSecurityPDUTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSecurityPDUTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSecurityPDUTimeout for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SECURITY_TIME_WINDOW && peekedTagNumber == uint8(2): // BACnetConstructedDataSecurityTimeWindow
-		if _child, err = (&_BACnetConstructedDataSecurityTimeWindow{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSecurityTimeWindow).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSecurityTimeWindow for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SEGMENTATION_SUPPORTED && peekedTagNumber == uint8(9): // BACnetConstructedDataSegmentationSupported
-		if _child, err = (&_BACnetConstructedDataSegmentationSupported{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSegmentationSupported).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSegmentationSupported for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SERIAL_NUMBER && peekedTagNumber == uint8(7): // BACnetConstructedDataSerialNumber
-		if _child, err = (&_BACnetConstructedDataSerialNumber{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSerialNumber).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSerialNumber for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SETPOINT && peekedTagNumber == uint8(4): // BACnetConstructedDataSetpoint
-		if _child, err = (&_BACnetConstructedDataSetpoint{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSetpoint).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSetpoint for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SETPOINT_REFERENCE: // BACnetConstructedDataSetpointReference
-		if _child, err = (&_BACnetConstructedDataSetpointReference{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSetpointReference).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSetpointReference for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SETTING && peekedTagNumber == uint8(2): // BACnetConstructedDataSetting
-		if _child, err = (&_BACnetConstructedDataSetting{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSetting).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSetting for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SHED_DURATION && peekedTagNumber == uint8(2): // BACnetConstructedDataShedDuration
-		if _child, err = (&_BACnetConstructedDataShedDuration{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataShedDuration).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataShedDuration for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SHED_LEVEL_DESCRIPTIONS && peekedTagNumber == uint8(7): // BACnetConstructedDataShedLevelDescriptions
-		if _child, err = (&_BACnetConstructedDataShedLevelDescriptions{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataShedLevelDescriptions).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataShedLevelDescriptions for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SHED_LEVELS && peekedTagNumber == uint8(2): // BACnetConstructedDataShedLevels
-		if _child, err = (&_BACnetConstructedDataShedLevels{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataShedLevels).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataShedLevels for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SILENCED && peekedTagNumber == uint8(9): // BACnetConstructedDataSilenced
-		if _child, err = (&_BACnetConstructedDataSilenced{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSilenced).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSilenced for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SLAVE_ADDRESS_BINDING: // BACnetConstructedDataSlaveAddressBinding
-		if _child, err = (&_BACnetConstructedDataSlaveAddressBinding{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSlaveAddressBinding).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSlaveAddressBinding for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SLAVE_PROXY_ENABLE && peekedTagNumber == uint8(1): // BACnetConstructedDataSlaveProxyEnable
-		if _child, err = (&_BACnetConstructedDataSlaveProxyEnable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSlaveProxyEnable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSlaveProxyEnable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_START_TIME: // BACnetConstructedDataStartTime
-		if _child, err = (&_BACnetConstructedDataStartTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStartTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStartTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STATE_CHANGE_VALUES: // BACnetConstructedDataStateChangeValues
-		if _child, err = (&_BACnetConstructedDataStateChangeValues{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStateChangeValues).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStateChangeValues for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STATE_DESCRIPTION && peekedTagNumber == uint8(7): // BACnetConstructedDataStateDescription
-		if _child, err = (&_BACnetConstructedDataStateDescription{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStateDescription).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStateDescription for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STATE_TEXT && peekedTagNumber == uint8(7): // BACnetConstructedDataStateText
-		if _child, err = (&_BACnetConstructedDataStateText{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStateText).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStateText for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STATUS_FLAGS && peekedTagNumber == uint8(8): // BACnetConstructedDataStatusFlags
-		if _child, err = (&_BACnetConstructedDataStatusFlags{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStatusFlags).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStatusFlags for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STOP_TIME: // BACnetConstructedDataStopTime
-		if _child, err = (&_BACnetConstructedDataStopTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStopTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStopTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STOP_WHEN_FULL && peekedTagNumber == uint8(1): // BACnetConstructedDataStopWhenFull
-		if _child, err = (&_BACnetConstructedDataStopWhenFull{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStopWhenFull).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStopWhenFull for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STRIKE_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataStrikeCount
-		if _child, err = (&_BACnetConstructedDataStrikeCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStrikeCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStrikeCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_STRUCTURED_OBJECT_LIST: // BACnetConstructedDataStructuredObjectList
-		if _child, err = (&_BACnetConstructedDataStructuredObjectList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataStructuredObjectList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataStructuredObjectList for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBORDINATE_ANNOTATIONS: // BACnetConstructedDataSubordinateAnnotations
-		if _child, err = (&_BACnetConstructedDataSubordinateAnnotations{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSubordinateAnnotations).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSubordinateAnnotations for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBORDINATE_LIST: // BACnetConstructedDataSubordinateList
-		if _child, err = (&_BACnetConstructedDataSubordinateList{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSubordinateList).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSubordinateList for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBORDINATE_NODE_TYPES && peekedTagNumber == uint8(9): // BACnetConstructedDataSubordinateNodeTypes
-		if _child, err = (&_BACnetConstructedDataSubordinateNodeTypes{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSubordinateNodeTypes).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSubordinateNodeTypes for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBORDINATE_RELATIONSHIPS && peekedTagNumber == uint8(9): // BACnetConstructedDataSubordinateRelationships
-		if _child, err = (&_BACnetConstructedDataSubordinateRelationships{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSubordinateRelationships).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSubordinateRelationships for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBORDINATE_TAGS: // BACnetConstructedDataSubordinateTags
-		if _child, err = (&_BACnetConstructedDataSubordinateTags{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSubordinateTags).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSubordinateTags for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBSCRIBED_RECIPIENTS: // BACnetConstructedDataSubscribedRecipients
-		if _child, err = (&_BACnetConstructedDataSubscribedRecipients{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSubscribedRecipients).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSubscribedRecipients for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUPPORTED_FORMAT_CLASSES: // BACnetConstructedDataSupportedFormatClasses
-		if _child, err = (&_BACnetConstructedDataSupportedFormatClasses{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSupportedFormatClasses).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSupportedFormatClasses for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUPPORTED_FORMATS: // BACnetConstructedDataSupportedFormats
-		if _child, err = (&_BACnetConstructedDataSupportedFormats{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSupportedFormats).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSupportedFormats for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SUPPORTED_SECURITY_ALGORITHMS: // BACnetConstructedDataSupportedSecurityAlgorithms
-		if _child, err = (&_BACnetConstructedDataSupportedSecurityAlgorithms{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSupportedSecurityAlgorithms).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSupportedSecurityAlgorithms for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_SYSTEM_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataSystemStatus
-		if _child, err = (&_BACnetConstructedDataSystemStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataSystemStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataSystemStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TAGS: // BACnetConstructedDataTags
-		if _child, err = (&_BACnetConstructedDataTags{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTags).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTags for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_THREAT_AUTHORITY: // BACnetConstructedDataThreatAuthority
-		if _child, err = (&_BACnetConstructedDataThreatAuthority{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataThreatAuthority).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataThreatAuthority for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_THREAT_LEVEL: // BACnetConstructedDataThreatLevel
-		if _child, err = (&_BACnetConstructedDataThreatLevel{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataThreatLevel).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataThreatLevel for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_DELAY && peekedTagNumber == uint8(2): // BACnetConstructedDataTimeDelay
-		if _child, err = (&_BACnetConstructedDataTimeDelay{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeDelay).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeDelay for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_DELAY_NORMAL && peekedTagNumber == uint8(2): // BACnetConstructedDataTimeDelayNormal
-		if _child, err = (&_BACnetConstructedDataTimeDelayNormal{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeDelayNormal).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeDelayNormal for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_OF_ACTIVE_TIME_RESET: // BACnetConstructedDataTimeOfActiveTimeReset
-		if _child, err = (&_BACnetConstructedDataTimeOfActiveTimeReset{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeOfActiveTimeReset).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeOfActiveTimeReset for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_OF_DEVICE_RESTART: // BACnetConstructedDataTimeOfDeviceRestart
-		if _child, err = (&_BACnetConstructedDataTimeOfDeviceRestart{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeOfDeviceRestart).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeOfDeviceRestart for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_OF_STATE_COUNT_RESET: // BACnetConstructedDataTimeOfStateCountReset
-		if _child, err = (&_BACnetConstructedDataTimeOfStateCountReset{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeOfStateCountReset).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeOfStateCountReset for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_OF_STRIKE_COUNT_RESET: // BACnetConstructedDataTimeOfStrikeCountReset
-		if _child, err = (&_BACnetConstructedDataTimeOfStrikeCountReset{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeOfStrikeCountReset).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeOfStrikeCountReset for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_SYNCHRONIZATION_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataTimeSynchronizationInterval
-		if _child, err = (&_BACnetConstructedDataTimeSynchronizationInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeSynchronizationInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeSynchronizationInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIME_SYNCHRONIZATION_RECIPIENTS: // BACnetConstructedDataTimeSynchronizationRecipients
-		if _child, err = (&_BACnetConstructedDataTimeSynchronizationRecipients{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimeSynchronizationRecipients).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimeSynchronizationRecipients for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIMER_RUNNING && peekedTagNumber == uint8(1): // BACnetConstructedDataTimerRunning
-		if _child, err = (&_BACnetConstructedDataTimerRunning{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerRunning).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerRunning for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TIMER_STATE && peekedTagNumber == uint8(9): // BACnetConstructedDataTimerState
-		if _child, err = (&_BACnetConstructedDataTimerState{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTimerState).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTimerState for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TOTAL_RECORD_COUNT && peekedTagNumber == uint8(2): // BACnetConstructedDataTotalRecordCount
-		if _child, err = (&_BACnetConstructedDataTotalRecordCount{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTotalRecordCount).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTotalRecordCount for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TRACE_FLAG && peekedTagNumber == uint8(1): // BACnetConstructedDataTraceFlag
-		if _child, err = (&_BACnetConstructedDataTraceFlag{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTraceFlag).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTraceFlag for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_TRACKING_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataLightingOutputTrackingValue
-		if _child, err = (&_BACnetConstructedDataLightingOutputTrackingValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingOutputTrackingValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingOutputTrackingValue for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_LIGHTING_OUTPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_TRACKING_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataLightingOutputTrackingValue
-		if _child, err = (&_BACnetConstructedDataLightingOutputTrackingValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataLightingOutputTrackingValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataLightingOutputTrackingValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TRACKING_VALUE && peekedTagNumber == uint8(9): // BACnetConstructedDataTrackingValue
-		if _child, err = (&_BACnetConstructedDataTrackingValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrackingValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrackingValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TRANSACTION_NOTIFICATION_CLASS && peekedTagNumber == uint8(2): // BACnetConstructedDataTransactionNotificationClass
-		if _child, err = (&_BACnetConstructedDataTransactionNotificationClass{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTransactionNotificationClass).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTransactionNotificationClass for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TRANSITION && peekedTagNumber == uint8(9): // BACnetConstructedDataTransition
-		if _child, err = (&_BACnetConstructedDataTransition{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTransition).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTransition for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_TRIGGER && peekedTagNumber == uint8(1): // BACnetConstructedDataTrigger
-		if _child, err = (&_BACnetConstructedDataTrigger{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataTrigger).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataTrigger for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_UNITS && peekedTagNumber == uint8(9): // BACnetConstructedDataUnits
-		if _child, err = (&_BACnetConstructedDataUnits{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUnits).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUnits for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_UPDATE_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataUpdateInterval
-		if _child, err = (&_BACnetConstructedDataUpdateInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUpdateInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUpdateInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_UPDATE_KEY_SET_TIMEOUT && peekedTagNumber == uint8(2): // BACnetConstructedDataUpdateKeySetTimeout
-		if _child, err = (&_BACnetConstructedDataUpdateKeySetTimeout{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUpdateKeySetTimeout).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUpdateKeySetTimeout for type-switch of BACnetConstructedData")
 		}
 	case objectTypeArgument == BACnetObjectType_CREDENTIAL_DATA_INPUT && propertyIdentifierArgument == BACnetPropertyIdentifier_UPDATE_TIME: // BACnetConstructedDataCredentialDataInputUpdateTime
-		if _child, err = (&_BACnetConstructedDataCredentialDataInputUpdateTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataCredentialDataInputUpdateTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataCredentialDataInputUpdateTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_UPDATE_TIME: // BACnetConstructedDataUpdateTime
-		if _child, err = (&_BACnetConstructedDataUpdateTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUpdateTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUpdateTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_USER_EXTERNAL_IDENTIFIER && peekedTagNumber == uint8(7): // BACnetConstructedDataUserExternalIdentifier
-		if _child, err = (&_BACnetConstructedDataUserExternalIdentifier{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUserExternalIdentifier).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUserExternalIdentifier for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_USER_INFORMATION_REFERENCE && peekedTagNumber == uint8(7): // BACnetConstructedDataUserInformationReference
-		if _child, err = (&_BACnetConstructedDataUserInformationReference{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUserInformationReference).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUserInformationReference for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_USER_NAME && peekedTagNumber == uint8(7): // BACnetConstructedDataUserName
-		if _child, err = (&_BACnetConstructedDataUserName{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUserName).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUserName for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_USER_TYPE && peekedTagNumber == uint8(9): // BACnetConstructedDataUserType
-		if _child, err = (&_BACnetConstructedDataUserType{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUserType).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUserType for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_USES_REMAINING && peekedTagNumber == uint8(3): // BACnetConstructedDataUsesRemaining
-		if _child, err = (&_BACnetConstructedDataUsesRemaining{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUsesRemaining).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUsesRemaining for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_UTC_OFFSET && peekedTagNumber == uint8(3): // BACnetConstructedDataUTCOffset
-		if _child, err = (&_BACnetConstructedDataUTCOffset{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUTCOffset).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUTCOffset for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_UTC_TIME_SYNCHRONIZATION_RECIPIENTS: // BACnetConstructedDataUTCTimeSynchronizationRecipients
-		if _child, err = (&_BACnetConstructedDataUTCTimeSynchronizationRecipients{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUTCTimeSynchronizationRecipients).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUTCTimeSynchronizationRecipients for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VALID_SAMPLES && peekedTagNumber == uint8(2): // BACnetConstructedDataValidSamples
-		if _child, err = (&_BACnetConstructedDataValidSamples{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataValidSamples).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataValidSamples for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VALUE_BEFORE_CHANGE && peekedTagNumber == uint8(2): // BACnetConstructedDataValueBeforeChange
-		if _child, err = (&_BACnetConstructedDataValueBeforeChange{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataValueBeforeChange).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataValueBeforeChange for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VALUE_CHANGE_TIME: // BACnetConstructedDataValueChangeTime
-		if _child, err = (&_BACnetConstructedDataValueChangeTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataValueChangeTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataValueChangeTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VALUE_SET && peekedTagNumber == uint8(2): // BACnetConstructedDataValueSet
-		if _child, err = (&_BACnetConstructedDataValueSet{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataValueSet).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataValueSet for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VALUE_SOURCE: // BACnetConstructedDataValueSource
-		if _child, err = (&_BACnetConstructedDataValueSource{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataValueSource).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataValueSource for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VALUE_SOURCE_ARRAY: // BACnetConstructedDataValueSourceArray
-		if _child, err = (&_BACnetConstructedDataValueSourceArray{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataValueSourceArray).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataValueSourceArray for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VARIANCE_VALUE && peekedTagNumber == uint8(4): // BACnetConstructedDataVarianceValue
-		if _child, err = (&_BACnetConstructedDataVarianceValue{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataVarianceValue).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataVarianceValue for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VENDOR_IDENTIFIER && peekedTagNumber == uint8(2): // BACnetConstructedDataVendorIdentifier
-		if _child, err = (&_BACnetConstructedDataVendorIdentifier{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataVendorIdentifier).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataVendorIdentifier for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VENDOR_NAME && peekedTagNumber == uint8(7): // BACnetConstructedDataVendorName
-		if _child, err = (&_BACnetConstructedDataVendorName{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataVendorName).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataVendorName for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VERIFICATION_TIME && peekedTagNumber == uint8(3): // BACnetConstructedDataVerificationTime
-		if _child, err = (&_BACnetConstructedDataVerificationTime{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataVerificationTime).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataVerificationTime for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VIRTUAL_MAC_ADDRESS_TABLE: // BACnetConstructedDataVirtualMACAddressTable
-		if _child, err = (&_BACnetConstructedDataVirtualMACAddressTable{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataVirtualMACAddressTable).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataVirtualMACAddressTable for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_VT_CLASSES_SUPPORTED && peekedTagNumber == uint8(9): // BACnetConstructedDataVTClassesSupported
-		if _child, err = (&_BACnetConstructedDataVTClassesSupported{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataVTClassesSupported).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataVTClassesSupported for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_WEEKLY_SCHEDULE: // BACnetConstructedDataWeeklySchedule
-		if _child, err = (&_BACnetConstructedDataWeeklySchedule{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataWeeklySchedule).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataWeeklySchedule for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_WINDOW_INTERVAL && peekedTagNumber == uint8(2): // BACnetConstructedDataWindowInterval
-		if _child, err = (&_BACnetConstructedDataWindowInterval{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataWindowInterval).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataWindowInterval for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_WINDOW_SAMPLES && peekedTagNumber == uint8(2): // BACnetConstructedDataWindowSamples
-		if _child, err = (&_BACnetConstructedDataWindowSamples{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataWindowSamples).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataWindowSamples for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_WRITE_STATUS && peekedTagNumber == uint8(9): // BACnetConstructedDataWriteStatus
-		if _child, err = (&_BACnetConstructedDataWriteStatus{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataWriteStatus).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataWriteStatus for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ZONE_FROM: // BACnetConstructedDataZoneFrom
-		if _child, err = (&_BACnetConstructedDataZoneFrom{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataZoneFrom).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataZoneFrom for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ZONE_MEMBERS: // BACnetConstructedDataZoneMembers
-		if _child, err = (&_BACnetConstructedDataZoneMembers{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataZoneMembers).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataZoneMembers for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0 && propertyIdentifierArgument == BACnetPropertyIdentifier_ZONE_TO: // BACnetConstructedDataZoneTo
-		if _child, err = (&_BACnetConstructedDataZoneTo{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataZoneTo).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataZoneTo for type-switch of BACnetConstructedData")
 		}
 	case 0 == 0: // BACnetConstructedDataUnspecified
-		if _child, err = (&_BACnetConstructedDataUnspecified{}).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetConstructedDataUnspecified).parse(ctx, readBuffer, m, tagNumber, objectTypeArgument, propertyIdentifierArgument, arrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetConstructedDataUnspecified for type-switch of BACnetConstructedData")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go
index 1c9cd262be..5a8ce9d51a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go
@@ -229,59 +229,59 @@ func (m *_BACnetContextTag) parse(ctx context.Context, readBuffer utils.ReadBuff
 	var _child BACnetContextTag
 	switch {
 	case dataType == BACnetDataType_NULL: // BACnetContextTagNull
-		if _child, err = (&_BACnetContextTagNull{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagNull).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagNull for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_BOOLEAN: // BACnetContextTagBoolean
-		if _child, err = (&_BACnetContextTagBoolean{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagBoolean).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagBoolean for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_UNSIGNED_INTEGER: // BACnetContextTagUnsignedInteger
-		if _child, err = (&_BACnetContextTagUnsignedInteger{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagUnsignedInteger).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagUnsignedInteger for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_SIGNED_INTEGER: // BACnetContextTagSignedInteger
-		if _child, err = (&_BACnetContextTagSignedInteger{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagSignedInteger).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagSignedInteger for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_REAL: // BACnetContextTagReal
-		if _child, err = (&_BACnetContextTagReal{}).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagReal).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagReal for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_DOUBLE: // BACnetContextTagDouble
-		if _child, err = (&_BACnetContextTagDouble{}).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagDouble).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagDouble for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_OCTET_STRING: // BACnetContextTagOctetString
-		if _child, err = (&_BACnetContextTagOctetString{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagOctetString).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagOctetString for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_CHARACTER_STRING: // BACnetContextTagCharacterString
-		if _child, err = (&_BACnetContextTagCharacterString{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagCharacterString).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagCharacterString for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_BIT_STRING: // BACnetContextTagBitString
-		if _child, err = (&_BACnetContextTagBitString{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagBitString).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagBitString for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_ENUMERATED: // BACnetContextTagEnumerated
-		if _child, err = (&_BACnetContextTagEnumerated{}).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagEnumerated).parse(ctx, readBuffer, m, header, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagEnumerated for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_DATE: // BACnetContextTagDate
-		if _child, err = (&_BACnetContextTagDate{}).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagDate).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagDate for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_TIME: // BACnetContextTagTime
-		if _child, err = (&_BACnetContextTagTime{}).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagTime).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagTime for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_BACNET_OBJECT_IDENTIFIER: // BACnetContextTagObjectIdentifier
-		if _child, err = (&_BACnetContextTagObjectIdentifier{}).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagObjectIdentifier).parse(ctx, readBuffer, m, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagObjectIdentifier for type-switch of BACnetContextTag")
 		}
 	case dataType == BACnetDataType_UNKNOWN: // BACnetContextTagUnknown
-		if _child, err = (&_BACnetContextTagUnknown{}).parse(ctx, readBuffer, m, actualLength, tagNumberArgument, dataType); err != nil {
+		if _child, err = new(_BACnetContextTagUnknown).parse(ctx, readBuffer, m, actualLength, tagNumberArgument, dataType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetContextTagUnknown for type-switch of BACnetContextTag")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go
index 1686f6eede..c5134bf7d9 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go
@@ -135,35 +135,35 @@ func (m *_BACnetError) parse(ctx context.Context, readBuffer utils.ReadBuffer, e
 	var _child BACnetError
 	switch {
 	case errorChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV_PROPERTY_MULTIPLE: // SubscribeCOVPropertyMultipleError
-		if _child, err = (&_SubscribeCOVPropertyMultipleError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_SubscribeCOVPropertyMultipleError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SubscribeCOVPropertyMultipleError for type-switch of BACnetError")
 		}
 	case errorChoice == BACnetConfirmedServiceChoice_ADD_LIST_ELEMENT: // ChangeListAddError
-		if _child, err = (&_ChangeListAddError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_ChangeListAddError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ChangeListAddError for type-switch of BACnetError")
 		}
 	case errorChoice == BACnetConfirmedServiceChoice_REMOVE_LIST_ELEMENT: // ChangeListRemoveError
-		if _child, err = (&_ChangeListRemoveError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_ChangeListRemoveError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ChangeListRemoveError for type-switch of BACnetError")
 		}
 	case errorChoice == BACnetConfirmedServiceChoice_CREATE_OBJECT: // CreateObjectError
-		if _child, err = (&_CreateObjectError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_CreateObjectError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateObjectError for type-switch of BACnetError")
 		}
 	case errorChoice == BACnetConfirmedServiceChoice_WRITE_PROPERTY_MULTIPLE: // WritePropertyMultipleError
-		if _child, err = (&_WritePropertyMultipleError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_WritePropertyMultipleError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type WritePropertyMultipleError for type-switch of BACnetError")
 		}
 	case errorChoice == BACnetConfirmedServiceChoice_CONFIRMED_PRIVATE_TRANSFER: // ConfirmedPrivateTransferError
-		if _child, err = (&_ConfirmedPrivateTransferError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_ConfirmedPrivateTransferError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConfirmedPrivateTransferError for type-switch of BACnetError")
 		}
 	case errorChoice == BACnetConfirmedServiceChoice_VT_CLOSE: // VTCloseError
-		if _child, err = (&_VTCloseError{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_VTCloseError).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type VTCloseError for type-switch of BACnetError")
 		}
 	case 0 == 0: // BACnetErrorGeneral
-		if _child, err = (&_BACnetErrorGeneral{}).parse(ctx, readBuffer, m, errorChoice); err != nil {
+		if _child, err = new(_BACnetErrorGeneral).parse(ctx, readBuffer, m, errorChoice); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetErrorGeneral for type-switch of BACnetError")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
index 1314058a06..aa9582ba09 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
@@ -226,15 +226,15 @@ func (m *_BACnetEventLogRecordLogDatum) parse(ctx context.Context, readBuffer ut
 	var _child BACnetEventLogRecordLogDatum
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetEventLogRecordLogDatumLogStatus
-		if _child, err = (&_BACnetEventLogRecordLogDatumLogStatus{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetEventLogRecordLogDatumLogStatus).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventLogRecordLogDatumLogStatus for type-switch of BACnetEventLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(1): // BACnetEventLogRecordLogDatumNotification
-		if _child, err = (&_BACnetEventLogRecordLogDatumNotification{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetEventLogRecordLogDatumNotification).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventLogRecordLogDatumNotification for type-switch of BACnetEventLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(2): // BACnetEventLogRecordLogDatumTimeChange
-		if _child, err = (&_BACnetEventLogRecordLogDatumTimeChange{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetEventLogRecordLogDatumTimeChange).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventLogRecordLogDatumTimeChange for type-switch of BACnetEventLogRecordLogDatum")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
index 4cc132877e..0cdfdd9ffd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
@@ -189,79 +189,79 @@ func (m *_BACnetEventParameter) parse(ctx context.Context, readBuffer utils.Read
 	var _child BACnetEventParameter
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetEventParameterChangeOfBitstring
-		if _child, err = (&_BACnetEventParameterChangeOfBitstring{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfBitstring).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfBitstring for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(1): // BACnetEventParameterChangeOfState
-		if _child, err = (&_BACnetEventParameterChangeOfState{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfState).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfState for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(2): // BACnetEventParameterChangeOfValue
-		if _child, err = (&_BACnetEventParameterChangeOfValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfValue for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(3): // BACnetEventParameterCommandFailure
-		if _child, err = (&_BACnetEventParameterCommandFailure{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterCommandFailure).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterCommandFailure for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(4): // BACnetEventParameterFloatingLimit
-		if _child, err = (&_BACnetEventParameterFloatingLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterFloatingLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterFloatingLimit for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(5): // BACnetEventParameterOutOfRange
-		if _child, err = (&_BACnetEventParameterOutOfRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterOutOfRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterOutOfRange for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(8): // BACnetEventParameterChangeOfLifeSavety
-		if _child, err = (&_BACnetEventParameterChangeOfLifeSavety{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfLifeSavety).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfLifeSavety for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(9): // BACnetEventParameterExtended
-		if _child, err = (&_BACnetEventParameterExtended{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterExtended).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterExtended for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(10): // BACnetEventParameterBufferReady
-		if _child, err = (&_BACnetEventParameterBufferReady{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterBufferReady).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterBufferReady for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(11): // BACnetEventParameterUnsignedRange
-		if _child, err = (&_BACnetEventParameterUnsignedRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterUnsignedRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterUnsignedRange for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(13): // BACnetEventParameterAccessEvent
-		if _child, err = (&_BACnetEventParameterAccessEvent{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterAccessEvent).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterAccessEvent for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(14): // BACnetEventParameterDoubleOutOfRange
-		if _child, err = (&_BACnetEventParameterDoubleOutOfRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterDoubleOutOfRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterDoubleOutOfRange for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(15): // BACnetEventParameterSignedOutOfRange
-		if _child, err = (&_BACnetEventParameterSignedOutOfRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterSignedOutOfRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterSignedOutOfRange for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(16): // BACnetEventParameterUnsignedOutOfRange
-		if _child, err = (&_BACnetEventParameterUnsignedOutOfRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterUnsignedOutOfRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterUnsignedOutOfRange for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(17): // BACnetEventParameterChangeOfCharacterString
-		if _child, err = (&_BACnetEventParameterChangeOfCharacterString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfCharacterString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfCharacterString for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(18): // BACnetEventParameterChangeOfStatusFlags
-		if _child, err = (&_BACnetEventParameterChangeOfStatusFlags{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfStatusFlags).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfStatusFlags for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(20): // BACnetEventParameterNone
-		if _child, err = (&_BACnetEventParameterNone{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterNone).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterNone for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(21): // BACnetEventParameterChangeOfDiscreteValue
-		if _child, err = (&_BACnetEventParameterChangeOfDiscreteValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfDiscreteValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfDiscreteValue for type-switch of BACnetEventParameter")
 		}
 	case peekedTagNumber == uint8(22): // BACnetEventParameterChangeOfTimer
-		if _child, err = (&_BACnetEventParameterChangeOfTimer{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfTimer).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfTimer for type-switch of BACnetEventParameter")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
index 24e5037db7..6d1758eba5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
@@ -226,11 +226,11 @@ func (m *_BACnetEventParameterChangeOfValueCivCriteria) parse(ctx context.Contex
 	var _child BACnetEventParameterChangeOfValueCivCriteria
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetEventParameterChangeOfValueCivCriteriaBitmask
-		if _child, err = (&_BACnetEventParameterChangeOfValueCivCriteriaBitmask{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfValueCivCriteriaBitmask).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfValueCivCriteriaBitmask for type-switch of BACnetEventParameterChangeOfValueCivCriteria")
 		}
 	case peekedTagNumber == uint8(1): // BACnetEventParameterChangeOfValueCivCriteriaReferencedPropertyIncrement
-		if _child, err = (&_BACnetEventParameterChangeOfValueCivCriteriaReferencedPropertyIncrement{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetEventParameterChangeOfValueCivCriteriaReferencedPropertyIncrement).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetEventParameterChangeOfValueCivCriteriaReferencedPropertyIncrement for type-switch of BACnetEventParameterChangeOfValueCivCriteria")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
index 6edf6c6e45..610a59cf3e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
@@ -189,35 +189,35 @@ func (m *_BACnetFaultParameter) parse(ctx context.Context, readBuffer utils.Read
 	var _child BACnetFaultParameter
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetFaultParameterNone
-		if _child, err = (&_BACnetFaultParameterNone{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterNone).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterNone for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(1): // BACnetFaultParameterFaultCharacterString
-		if _child, err = (&_BACnetFaultParameterFaultCharacterString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultCharacterString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultCharacterString for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(2): // BACnetFaultParameterFaultExtended
-		if _child, err = (&_BACnetFaultParameterFaultExtended{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtended).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtended for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(3): // BACnetFaultParameterFaultLifeSafety
-		if _child, err = (&_BACnetFaultParameterFaultLifeSafety{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultLifeSafety).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultLifeSafety for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(4): // BACnetFaultParameterFaultState
-		if _child, err = (&_BACnetFaultParameterFaultState{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultState).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultState for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(5): // BACnetFaultParameterFaultStatusFlags
-		if _child, err = (&_BACnetFaultParameterFaultStatusFlags{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultStatusFlags).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultStatusFlags for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(6): // BACnetFaultParameterFaultOutOfRange
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRange{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRange).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRange for type-switch of BACnetFaultParameter")
 		}
 	case peekedTagNumber == uint8(7): // BACnetFaultParameterFaultListed
-		if _child, err = (&_BACnetFaultParameterFaultListed{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultListed).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultListed for type-switch of BACnetFaultParameter")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
index 205ca51cdc..0a7b9a5a92 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
@@ -213,59 +213,59 @@ func (m *_BACnetFaultParameterFaultExtendedParametersEntry) parse(ctx context.Co
 	var _child BACnetFaultParameterFaultExtendedParametersEntry
 	switch {
 	case peekedTagNumber == 0x0 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryNull
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryNull for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x4 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryReal
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryReal{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryReal).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryReal for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x2 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryUnsigned
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryUnsigned{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryUnsigned).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryUnsigned for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x1 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryBoolean
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryBoolean{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryBoolean).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryBoolean for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x3 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryInteger
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryInteger{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryInteger).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryInteger for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x5 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryDouble
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryDouble{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryDouble).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryDouble for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x6 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryOctetString
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryOctetString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryOctetString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryOctetString for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x7 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryCharacterString
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryCharacterString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryCharacterString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryCharacterString for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x8 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryBitString
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryBitString{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryBitString).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryBitString for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0x9 && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryEnumerated
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryEnumerated{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryEnumerated).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryEnumerated for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0xA && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryDate
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryDate{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryDate).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryDate for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0xB && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryTime
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryTime for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == 0xC && peekedIsContextTag == bool(false): // BACnetFaultParameterFaultExtendedParametersEntryObjectidentifier
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryObjectidentifier{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryObjectidentifier).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryObjectidentifier for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	case peekedTagNumber == uint8(0) && peekedIsContextTag == bool(true): // BACnetFaultParameterFaultExtendedParametersEntryReference
-		if _child, err = (&_BACnetFaultParameterFaultExtendedParametersEntryReference{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultExtendedParametersEntryReference).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultExtendedParametersEntryReference for type-switch of BACnetFaultParameterFaultExtendedParametersEntry")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
index 40f79d3444..aac5cf4654 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
@@ -231,19 +231,19 @@ func (m *_BACnetFaultParameterFaultOutOfRangeMaxNormalValue) parse(ctx context.C
 	var _child BACnetFaultParameterFaultOutOfRangeMaxNormalValue
 	switch {
 	case peekedTagNumber == 0x4: // BACnetFaultParameterFaultOutOfRangeMaxNormalValueReal
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMaxNormalValueReal{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMaxNormalValueReal).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMaxNormalValueReal for type-switch of BACnetFaultParameterFaultOutOfRangeMaxNormalValue")
 		}
 	case peekedTagNumber == 0x2: // BACnetFaultParameterFaultOutOfRangeMaxNormalValueUnsigned
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMaxNormalValueUnsigned{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMaxNormalValueUnsigned).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMaxNormalValueUnsigned for type-switch of BACnetFaultParameterFaultOutOfRangeMaxNormalValue")
 		}
 	case peekedTagNumber == 0x5: // BACnetFaultParameterFaultOutOfRangeMaxNormalValueDouble
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMaxNormalValueDouble{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMaxNormalValueDouble).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMaxNormalValueDouble for type-switch of BACnetFaultParameterFaultOutOfRangeMaxNormalValue")
 		}
 	case peekedTagNumber == 0x3: // BACnetFaultParameterFaultOutOfRangeMaxNormalValueInteger
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMaxNormalValueInteger{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMaxNormalValueInteger).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMaxNormalValueInteger for type-switch of BACnetFaultParameterFaultOutOfRangeMaxNormalValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
index 315c1a7f69..9e0b866f06 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
@@ -231,19 +231,19 @@ func (m *_BACnetFaultParameterFaultOutOfRangeMinNormalValue) parse(ctx context.C
 	var _child BACnetFaultParameterFaultOutOfRangeMinNormalValue
 	switch {
 	case peekedTagNumber == 0x4: // BACnetFaultParameterFaultOutOfRangeMinNormalValueReal
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMinNormalValueReal{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMinNormalValueReal).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMinNormalValueReal for type-switch of BACnetFaultParameterFaultOutOfRangeMinNormalValue")
 		}
 	case peekedTagNumber == 0x2: // BACnetFaultParameterFaultOutOfRangeMinNormalValueUnsigned
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMinNormalValueUnsigned{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMinNormalValueUnsigned).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMinNormalValueUnsigned for type-switch of BACnetFaultParameterFaultOutOfRangeMinNormalValue")
 		}
 	case peekedTagNumber == 0x5: // BACnetFaultParameterFaultOutOfRangeMinNormalValueDouble
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMinNormalValueDouble{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMinNormalValueDouble).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMinNormalValueDouble for type-switch of BACnetFaultParameterFaultOutOfRangeMinNormalValue")
 		}
 	case peekedTagNumber == 0x3: // BACnetFaultParameterFaultOutOfRangeMinNormalValueInteger
-		if _child, err = (&_BACnetFaultParameterFaultOutOfRangeMinNormalValueInteger{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetFaultParameterFaultOutOfRangeMinNormalValueInteger).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetFaultParameterFaultOutOfRangeMinNormalValueInteger for type-switch of BACnetFaultParameterFaultOutOfRangeMinNormalValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
index 2a5ab353dc..4eed9c06fb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
@@ -189,15 +189,15 @@ func (m *_BACnetHostAddress) parse(ctx context.Context, readBuffer utils.ReadBuf
 	var _child BACnetHostAddress
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetHostAddressNull
-		if _child, err = (&_BACnetHostAddressNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetHostAddressNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetHostAddressNull for type-switch of BACnetHostAddress")
 		}
 	case peekedTagNumber == uint8(1): // BACnetHostAddressIpAddress
-		if _child, err = (&_BACnetHostAddressIpAddress{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetHostAddressIpAddress).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetHostAddressIpAddress for type-switch of BACnetHostAddress")
 		}
 	case peekedTagNumber == uint8(2): // BACnetHostAddressName
-		if _child, err = (&_BACnetHostAddressName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetHostAddressName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetHostAddressName for type-switch of BACnetHostAddress")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
index fddacfbed0..fa5dacdf51 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
@@ -189,11 +189,11 @@ func (m *_BACnetLandingCallStatusCommand) parse(ctx context.Context, readBuffer
 	var _child BACnetLandingCallStatusCommand
 	switch {
 	case peekedTagNumber == uint8(1): // BACnetLandingCallStatusCommandDirection
-		if _child, err = (&_BACnetLandingCallStatusCommandDirection{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLandingCallStatusCommandDirection).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLandingCallStatusCommandDirection for type-switch of BACnetLandingCallStatusCommand")
 		}
 	case peekedTagNumber == uint8(2): // BACnetLandingCallStatusCommandDestination
-		if _child, err = (&_BACnetLandingCallStatusCommandDestination{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLandingCallStatusCommandDestination).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLandingCallStatusCommandDestination for type-switch of BACnetLandingCallStatusCommand")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
index f9b549705b..21d451d364 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
@@ -226,15 +226,15 @@ func (m *_BACnetLogData) parse(ctx context.Context, readBuffer utils.ReadBuffer,
 	var _child BACnetLogData
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetLogDataLogStatus
-		if _child, err = (&_BACnetLogDataLogStatus{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogDataLogStatus).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogStatus for type-switch of BACnetLogData")
 		}
 	case peekedTagNumber == uint8(1): // BACnetLogDataLogData
-		if _child, err = (&_BACnetLogDataLogData{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogDataLogData).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogData for type-switch of BACnetLogData")
 		}
 	case peekedTagNumber == uint8(2): // BACnetLogDataLogDataTimeChange
-		if _child, err = (&_BACnetLogDataLogDataTimeChange{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataTimeChange).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataTimeChange for type-switch of BACnetLogData")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
index c54a129ee3..d935f7d57d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
@@ -189,39 +189,39 @@ func (m *_BACnetLogDataLogDataEntry) parse(ctx context.Context, readBuffer utils
 	var _child BACnetLogDataLogDataEntry
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetLogDataLogDataEntryBooleanValue
-		if _child, err = (&_BACnetLogDataLogDataEntryBooleanValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryBooleanValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryBooleanValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(1): // BACnetLogDataLogDataEntryRealValue
-		if _child, err = (&_BACnetLogDataLogDataEntryRealValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryRealValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryRealValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(2): // BACnetLogDataLogDataEntryEnumeratedValue
-		if _child, err = (&_BACnetLogDataLogDataEntryEnumeratedValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryEnumeratedValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryEnumeratedValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(3): // BACnetLogDataLogDataEntryUnsignedValue
-		if _child, err = (&_BACnetLogDataLogDataEntryUnsignedValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryUnsignedValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryUnsignedValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(4): // BACnetLogDataLogDataEntryIntegerValue
-		if _child, err = (&_BACnetLogDataLogDataEntryIntegerValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryIntegerValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryIntegerValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(5): // BACnetLogDataLogDataEntryBitStringValue
-		if _child, err = (&_BACnetLogDataLogDataEntryBitStringValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryBitStringValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryBitStringValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(6): // BACnetLogDataLogDataEntryNullValue
-		if _child, err = (&_BACnetLogDataLogDataEntryNullValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryNullValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryNullValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(7): // BACnetLogDataLogDataEntryFailure
-		if _child, err = (&_BACnetLogDataLogDataEntryFailure{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryFailure).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryFailure for type-switch of BACnetLogDataLogDataEntry")
 		}
 	case peekedTagNumber == uint8(8): // BACnetLogDataLogDataEntryAnyValue
-		if _child, err = (&_BACnetLogDataLogDataEntryAnyValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetLogDataLogDataEntryAnyValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogDataLogDataEntryAnyValue for type-switch of BACnetLogDataLogDataEntry")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
index 74fc80dd1c..2fe33c5867 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
@@ -226,47 +226,47 @@ func (m *_BACnetLogRecordLogDatum) parse(ctx context.Context, readBuffer utils.R
 	var _child BACnetLogRecordLogDatum
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetLogRecordLogDatumLogStatus
-		if _child, err = (&_BACnetLogRecordLogDatumLogStatus{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumLogStatus).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumLogStatus for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(1): // BACnetLogRecordLogDatumBooleanValue
-		if _child, err = (&_BACnetLogRecordLogDatumBooleanValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumBooleanValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumBooleanValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(2): // BACnetLogRecordLogDatumRealValue
-		if _child, err = (&_BACnetLogRecordLogDatumRealValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumRealValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumRealValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(3): // BACnetLogRecordLogDatumEnumeratedValue
-		if _child, err = (&_BACnetLogRecordLogDatumEnumeratedValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumEnumeratedValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumEnumeratedValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(4): // BACnetLogRecordLogDatumUnsignedValue
-		if _child, err = (&_BACnetLogRecordLogDatumUnsignedValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumUnsignedValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumUnsignedValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(5): // BACnetLogRecordLogDatumIntegerValue
-		if _child, err = (&_BACnetLogRecordLogDatumIntegerValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumIntegerValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumIntegerValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(6): // BACnetLogRecordLogDatumBitStringValue
-		if _child, err = (&_BACnetLogRecordLogDatumBitStringValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumBitStringValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumBitStringValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(7): // BACnetLogRecordLogDatumNullValue
-		if _child, err = (&_BACnetLogRecordLogDatumNullValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumNullValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumNullValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(8): // BACnetLogRecordLogDatumFailure
-		if _child, err = (&_BACnetLogRecordLogDatumFailure{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumFailure).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumFailure for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(9): // BACnetLogRecordLogDatumTimeChange
-		if _child, err = (&_BACnetLogRecordLogDatumTimeChange{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumTimeChange).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumTimeChange for type-switch of BACnetLogRecordLogDatum")
 		}
 	case peekedTagNumber == uint8(10): // BACnetLogRecordLogDatumAnyValue
-		if _child, err = (&_BACnetLogRecordLogDatumAnyValue{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetLogRecordLogDatumAnyValue).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetLogRecordLogDatumAnyValue for type-switch of BACnetLogRecordLogDatum")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
index 17a2ab43da..233440f2cd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
@@ -229,83 +229,83 @@ func (m *_BACnetNotificationParameters) parse(ctx context.Context, readBuffer ut
 	var _child BACnetNotificationParameters
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetNotificationParametersChangeOfBitString
-		if _child, err = (&_BACnetNotificationParametersChangeOfBitString{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfBitString).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfBitString for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(1): // BACnetNotificationParametersChangeOfState
-		if _child, err = (&_BACnetNotificationParametersChangeOfState{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfState).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfState for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(2): // BACnetNotificationParametersChangeOfValue
-		if _child, err = (&_BACnetNotificationParametersChangeOfValue{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfValue).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfValue for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(3): // BACnetNotificationParametersCommandFailure
-		if _child, err = (&_BACnetNotificationParametersCommandFailure{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersCommandFailure).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersCommandFailure for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(4): // BACnetNotificationParametersFloatingLimit
-		if _child, err = (&_BACnetNotificationParametersFloatingLimit{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersFloatingLimit).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersFloatingLimit for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(5): // BACnetNotificationParametersOutOfRange
-		if _child, err = (&_BACnetNotificationParametersOutOfRange{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersOutOfRange).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersOutOfRange for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(6): // BACnetNotificationParametersComplexEventType
-		if _child, err = (&_BACnetNotificationParametersComplexEventType{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersComplexEventType).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersComplexEventType for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(8): // BACnetNotificationParametersChangeOfLifeSafety
-		if _child, err = (&_BACnetNotificationParametersChangeOfLifeSafety{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfLifeSafety).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfLifeSafety for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(9): // BACnetNotificationParametersExtended
-		if _child, err = (&_BACnetNotificationParametersExtended{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersExtended).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersExtended for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(10): // BACnetNotificationParametersBufferReady
-		if _child, err = (&_BACnetNotificationParametersBufferReady{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersBufferReady).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersBufferReady for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(11): // BACnetNotificationParametersUnsignedRange
-		if _child, err = (&_BACnetNotificationParametersUnsignedRange{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersUnsignedRange).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersUnsignedRange for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(13): // BACnetNotificationParametersAccessEvent
-		if _child, err = (&_BACnetNotificationParametersAccessEvent{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersAccessEvent).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersAccessEvent for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(14): // BACnetNotificationParametersDoubleOutOfRange
-		if _child, err = (&_BACnetNotificationParametersDoubleOutOfRange{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersDoubleOutOfRange).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersDoubleOutOfRange for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(15): // BACnetNotificationParametersSignedOutOfRange
-		if _child, err = (&_BACnetNotificationParametersSignedOutOfRange{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersSignedOutOfRange).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersSignedOutOfRange for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(16): // BACnetNotificationParametersUnsignedOutOfRange
-		if _child, err = (&_BACnetNotificationParametersUnsignedOutOfRange{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersUnsignedOutOfRange).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersUnsignedOutOfRange for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(17): // BACnetNotificationParametersChangeOfCharacterString
-		if _child, err = (&_BACnetNotificationParametersChangeOfCharacterString{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfCharacterString).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfCharacterString for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(18): // BACnetNotificationParametersChangeOfStatusFlags
-		if _child, err = (&_BACnetNotificationParametersChangeOfStatusFlags{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfStatusFlags).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfStatusFlags for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(19): // BACnetNotificationParametersChangeOfReliability
-		if _child, err = (&_BACnetNotificationParametersChangeOfReliability{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfReliability).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfReliability for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(21): // BACnetNotificationParametersChangeOfDiscreteValue
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValue{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValue).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValue for type-switch of BACnetNotificationParameters")
 		}
 	case peekedTagNumber == uint8(22): // BACnetNotificationParametersChangeOfTimer
-		if _child, err = (&_BACnetNotificationParametersChangeOfTimer{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfTimer).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfTimer for type-switch of BACnetNotificationParameters")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
index a1f2f888c5..eb9301fb9f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
@@ -250,43 +250,43 @@ func (m *_BACnetNotificationParametersChangeOfDiscreteValueNewValue) parse(ctx c
 	var _child BACnetNotificationParametersChangeOfDiscreteValueNewValue
 	switch {
 	case peekedTagNumber == 0x1 && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueBoolean
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueBoolean{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueBoolean).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueBoolean for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0x2 && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueUnsigned
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueUnsigned{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueUnsigned).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueUnsigned for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0x3 && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueInteger
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueInteger{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueInteger).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueInteger for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0x9 && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueEnumerated
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueEnumerated{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueEnumerated).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueEnumerated for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0x7 && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueCharacterString
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueCharacterString{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueCharacterString).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueCharacterString for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0x6 && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetString
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetString{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetString).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetString for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0xA && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetDate
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetDate{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetDate).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetDate for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0xB && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetTime
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetTime{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetTime).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueOctetTime for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == 0xC && peekedIsContextTag == bool(false): // BACnetNotificationParametersChangeOfDiscreteValueNewValueObjectidentifier
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueObjectidentifier{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueObjectidentifier).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueObjectidentifier for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	case peekedTagNumber == uint8(0) && peekedIsContextTag == bool(true): // BACnetNotificationParametersChangeOfDiscreteValueNewValueDatetime
-		if _child, err = (&_BACnetNotificationParametersChangeOfDiscreteValueNewValueDatetime{}).parse(ctx, readBuffer, m, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfDiscreteValueNewValueDatetime).parse(ctx, readBuffer, m, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfDiscreteValueNewValueDatetime for type-switch of BACnetNotificationParametersChangeOfDiscreteValueNewValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
index 1989a73a1c..c135eaa798 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
@@ -226,11 +226,11 @@ func (m *_BACnetNotificationParametersChangeOfValueNewValue) parse(ctx context.C
 	var _child BACnetNotificationParametersChangeOfValueNewValue
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetNotificationParametersChangeOfValueNewValueChangedBits
-		if _child, err = (&_BACnetNotificationParametersChangeOfValueNewValueChangedBits{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfValueNewValueChangedBits).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfValueNewValueChangedBits for type-switch of BACnetNotificationParametersChangeOfValueNewValue")
 		}
 	case peekedTagNumber == uint8(1): // BACnetNotificationParametersChangeOfValueNewValueChangedValue
-		if _child, err = (&_BACnetNotificationParametersChangeOfValueNewValueChangedValue{}).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber); err != nil {
+		if _child, err = new(_BACnetNotificationParametersChangeOfValueNewValueChangedValue).parse(ctx, readBuffer, m, peekedTagNumber, tagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetNotificationParametersChangeOfValueNewValueChangedValue for type-switch of BACnetNotificationParametersChangeOfValueNewValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
index 2fec8b1426..8501e9bf9d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
@@ -189,11 +189,11 @@ func (m *_BACnetOptionalBinaryPV) parse(ctx context.Context, readBuffer utils.Re
 	var _child BACnetOptionalBinaryPV
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetOptionalBinaryPVNull
-		if _child, err = (&_BACnetOptionalBinaryPVNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalBinaryPVNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalBinaryPVNull for type-switch of BACnetOptionalBinaryPV")
 		}
 	case 0 == 0: // BACnetOptionalBinaryPVValue
-		if _child, err = (&_BACnetOptionalBinaryPVValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalBinaryPVValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalBinaryPVValue for type-switch of BACnetOptionalBinaryPV")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
index 2a180ac9d4..ee6fba4b31 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
@@ -189,11 +189,11 @@ func (m *_BACnetOptionalCharacterString) parse(ctx context.Context, readBuffer u
 	var _child BACnetOptionalCharacterString
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetOptionalCharacterStringNull
-		if _child, err = (&_BACnetOptionalCharacterStringNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalCharacterStringNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalCharacterStringNull for type-switch of BACnetOptionalCharacterString")
 		}
 	case 0 == 0: // BACnetOptionalCharacterStringValue
-		if _child, err = (&_BACnetOptionalCharacterStringValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalCharacterStringValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalCharacterStringValue for type-switch of BACnetOptionalCharacterString")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
index 46d1707d7e..90f3d9f249 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
@@ -189,11 +189,11 @@ func (m *_BACnetOptionalREAL) parse(ctx context.Context, readBuffer utils.ReadBu
 	var _child BACnetOptionalREAL
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetOptionalREALNull
-		if _child, err = (&_BACnetOptionalREALNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalREALNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalREALNull for type-switch of BACnetOptionalREAL")
 		}
 	case 0 == 0: // BACnetOptionalREALValue
-		if _child, err = (&_BACnetOptionalREALValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalREALValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalREALValue for type-switch of BACnetOptionalREAL")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
index 0b036f8127..01933e7293 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
@@ -189,11 +189,11 @@ func (m *_BACnetOptionalUnsigned) parse(ctx context.Context, readBuffer utils.Re
 	var _child BACnetOptionalUnsigned
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetOptionalUnsignedNull
-		if _child, err = (&_BACnetOptionalUnsignedNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalUnsignedNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalUnsignedNull for type-switch of BACnetOptionalUnsigned")
 		}
 	case 0 == 0: // BACnetOptionalUnsignedValue
-		if _child, err = (&_BACnetOptionalUnsignedValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetOptionalUnsignedValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetOptionalUnsignedValue for type-switch of BACnetOptionalUnsigned")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
index f4964de20b..7caa8eda22 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
@@ -218,63 +218,63 @@ func (m *_BACnetPriorityValue) parse(ctx context.Context, readBuffer utils.ReadB
 	var _child BACnetPriorityValue
 	switch {
 	case peekedTagNumber == 0x0 && peekedIsContextTag == bool(false): // BACnetPriorityValueNull
-		if _child, err = (&_BACnetPriorityValueNull{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueNull).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueNull for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x4 && peekedIsContextTag == bool(false): // BACnetPriorityValueReal
-		if _child, err = (&_BACnetPriorityValueReal{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueReal).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueReal for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x9 && peekedIsContextTag == bool(false): // BACnetPriorityValueEnumerated
-		if _child, err = (&_BACnetPriorityValueEnumerated{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueEnumerated).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueEnumerated for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x2 && peekedIsContextTag == bool(false): // BACnetPriorityValueUnsigned
-		if _child, err = (&_BACnetPriorityValueUnsigned{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueUnsigned).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueUnsigned for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x1 && peekedIsContextTag == bool(false): // BACnetPriorityValueBoolean
-		if _child, err = (&_BACnetPriorityValueBoolean{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueBoolean).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueBoolean for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x3 && peekedIsContextTag == bool(false): // BACnetPriorityValueInteger
-		if _child, err = (&_BACnetPriorityValueInteger{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueInteger).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueInteger for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x5 && peekedIsContextTag == bool(false): // BACnetPriorityValueDouble
-		if _child, err = (&_BACnetPriorityValueDouble{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueDouble).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueDouble for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0xB && peekedIsContextTag == bool(false): // BACnetPriorityValueTime
-		if _child, err = (&_BACnetPriorityValueTime{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueTime).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueTime for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x7 && peekedIsContextTag == bool(false): // BACnetPriorityValueCharacterString
-		if _child, err = (&_BACnetPriorityValueCharacterString{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueCharacterString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueCharacterString for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x6 && peekedIsContextTag == bool(false): // BACnetPriorityValueOctetString
-		if _child, err = (&_BACnetPriorityValueOctetString{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueOctetString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueOctetString for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0x8 && peekedIsContextTag == bool(false): // BACnetPriorityValueBitString
-		if _child, err = (&_BACnetPriorityValueBitString{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueBitString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueBitString for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0xA && peekedIsContextTag == bool(false): // BACnetPriorityValueDate
-		if _child, err = (&_BACnetPriorityValueDate{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueDate).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueDate for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == 0xC && peekedIsContextTag == bool(false): // BACnetPriorityValueObjectidentifier
-		if _child, err = (&_BACnetPriorityValueObjectidentifier{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueObjectidentifier).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueObjectidentifier for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == uint8(0) && peekedIsContextTag == bool(true): // BACnetPriorityValueConstructedValue
-		if _child, err = (&_BACnetPriorityValueConstructedValue{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueConstructedValue).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueConstructedValue for type-switch of BACnetPriorityValue")
 		}
 	case peekedTagNumber == uint8(1) && peekedIsContextTag == bool(true): // BACnetPriorityValueDateTime
-		if _child, err = (&_BACnetPriorityValueDateTime{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetPriorityValueDateTime).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueDateTime for type-switch of BACnetPriorityValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
index 8ee5c9a645..22856d3410 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
@@ -189,11 +189,11 @@ func (m *_BACnetProcessIdSelection) parse(ctx context.Context, readBuffer utils.
 	var _child BACnetProcessIdSelection
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetProcessIdSelectionNull
-		if _child, err = (&_BACnetProcessIdSelectionNull{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetProcessIdSelectionNull).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetProcessIdSelectionNull for type-switch of BACnetProcessIdSelection")
 		}
 	case 0 == 0: // BACnetProcessIdSelectionValue
-		if _child, err = (&_BACnetProcessIdSelectionValue{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetProcessIdSelectionValue).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetProcessIdSelectionValue for type-switch of BACnetProcessIdSelection")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
index 0a3a6b4972..dd8785f9ce 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
@@ -200,11 +200,11 @@ func (m *_BACnetPropertyAccessResultAccessResult) parse(ctx context.Context, rea
 	var _child BACnetPropertyAccessResultAccessResult
 	switch {
 	case peekedTagNumber == uint8(4): // BACnetPropertyAccessResultAccessResultPropertyValue
-		if _child, err = (&_BACnetPropertyAccessResultAccessResultPropertyValue{}).parse(ctx, readBuffer, m, objectTypeArgument, propertyIdentifierArgument, propertyArrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetPropertyAccessResultAccessResultPropertyValue).parse(ctx, readBuffer, m, objectTypeArgument, propertyIdentifierArgument, propertyArrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyAccessResultAccessResultPropertyValue for type-switch of BACnetPropertyAccessResultAccessResult")
 		}
 	case peekedTagNumber == uint8(5): // BACnetPropertyAccessResultAccessResultPropertyAccessError
-		if _child, err = (&_BACnetPropertyAccessResultAccessResultPropertyAccessError{}).parse(ctx, readBuffer, m, objectTypeArgument, propertyIdentifierArgument, propertyArrayIndexArgument); err != nil {
+		if _child, err = new(_BACnetPropertyAccessResultAccessResultPropertyAccessError).parse(ctx, readBuffer, m, objectTypeArgument, propertyIdentifierArgument, propertyArrayIndexArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyAccessResultAccessResultPropertyAccessError for type-switch of BACnetPropertyAccessResultAccessResult")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
index bc6dff1a99..ba065e755a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
@@ -189,239 +189,239 @@ func (m *_BACnetPropertyStates) parse(ctx context.Context, readBuffer utils.Read
 	var _child BACnetPropertyStates
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetPropertyStatesBoolean
-		if _child, err = (&_BACnetPropertyStatesBoolean{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesBoolean).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesBoolean for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(1): // BACnetPropertyStatesBinaryValue
-		if _child, err = (&_BACnetPropertyStatesBinaryValue{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesBinaryValue).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesBinaryValue for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(2): // BACnetPropertyStatesEventType
-		if _child, err = (&_BACnetPropertyStatesEventType{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesEventType).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesEventType for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(3): // BACnetPropertyStatesPolarity
-		if _child, err = (&_BACnetPropertyStatesPolarity{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesPolarity).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesPolarity for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(4): // BACnetPropertyStatesProgramChange
-		if _child, err = (&_BACnetPropertyStatesProgramChange{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesProgramChange).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesProgramChange for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(5): // BACnetPropertyStatesProgramChange
-		if _child, err = (&_BACnetPropertyStatesProgramChange{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesProgramChange).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesProgramChange for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(6): // BACnetPropertyStatesReasonForHalt
-		if _child, err = (&_BACnetPropertyStatesReasonForHalt{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesReasonForHalt).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesReasonForHalt for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(7): // BACnetPropertyStatesReliability
-		if _child, err = (&_BACnetPropertyStatesReliability{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesReliability).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesReliability for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(8): // BACnetPropertyStatesState
-		if _child, err = (&_BACnetPropertyStatesState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(9): // BACnetPropertyStatesSystemStatus
-		if _child, err = (&_BACnetPropertyStatesSystemStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesSystemStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesSystemStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(10): // BACnetPropertyStatesUnits
-		if _child, err = (&_BACnetPropertyStatesUnits{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesUnits).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesUnits for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(11): // BACnetPropertyStatesExtendedValue
-		if _child, err = (&_BACnetPropertyStatesExtendedValue{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesExtendedValue).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesExtendedValue for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(12): // BACnetPropertyStatesLifeSafetyMode
-		if _child, err = (&_BACnetPropertyStatesLifeSafetyMode{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLifeSafetyMode).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLifeSafetyMode for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(13): // BACnetPropertyStatesLifeSafetyState
-		if _child, err = (&_BACnetPropertyStatesLifeSafetyState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLifeSafetyState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLifeSafetyState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(14): // BACnetPropertyStatesRestartReason
-		if _child, err = (&_BACnetPropertyStatesRestartReason{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesRestartReason).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesRestartReason for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(15): // BACnetPropertyStatesDoorAlarmState
-		if _child, err = (&_BACnetPropertyStatesDoorAlarmState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesDoorAlarmState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesDoorAlarmState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(16): // BACnetPropertyStatesAction
-		if _child, err = (&_BACnetPropertyStatesAction{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesAction).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesAction for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(17): // BACnetPropertyStatesDoorSecuredStatus
-		if _child, err = (&_BACnetPropertyStatesDoorSecuredStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesDoorSecuredStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesDoorSecuredStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(18): // BACnetPropertyStatesDoorStatus
-		if _child, err = (&_BACnetPropertyStatesDoorStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesDoorStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesDoorStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(19): // BACnetPropertyStatesDoorValue
-		if _child, err = (&_BACnetPropertyStatesDoorValue{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesDoorValue).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesDoorValue for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(20): // BACnetPropertyStatesFileAccessMethod
-		if _child, err = (&_BACnetPropertyStatesFileAccessMethod{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesFileAccessMethod).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesFileAccessMethod for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(21): // BACnetPropertyStatesLockStatus
-		if _child, err = (&_BACnetPropertyStatesLockStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLockStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLockStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(22): // BACnetPropertyStatesLifeSafetyOperations
-		if _child, err = (&_BACnetPropertyStatesLifeSafetyOperations{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLifeSafetyOperations).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLifeSafetyOperations for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(23): // BACnetPropertyStatesMaintenance
-		if _child, err = (&_BACnetPropertyStatesMaintenance{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesMaintenance).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesMaintenance for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(24): // BACnetPropertyStatesNodeType
-		if _child, err = (&_BACnetPropertyStatesNodeType{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesNodeType).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesNodeType for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(25): // BACnetPropertyStatesNotifyType
-		if _child, err = (&_BACnetPropertyStatesNotifyType{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesNotifyType).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesNotifyType for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(26): // BACnetPropertyStatesSecurityLevel
-		if _child, err = (&_BACnetPropertyStatesSecurityLevel{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesSecurityLevel).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesSecurityLevel for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(27): // BACnetPropertyStatesShedState
-		if _child, err = (&_BACnetPropertyStatesShedState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesShedState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesShedState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(28): // BACnetPropertyStatesSilencedState
-		if _child, err = (&_BACnetPropertyStatesSilencedState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesSilencedState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesSilencedState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(30): // BACnetPropertyStatesAccessEvent
-		if _child, err = (&_BACnetPropertyStatesAccessEvent{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesAccessEvent).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesAccessEvent for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(31): // BACnetPropertyStatesZoneOccupanyState
-		if _child, err = (&_BACnetPropertyStatesZoneOccupanyState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesZoneOccupanyState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesZoneOccupanyState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(32): // BACnetPropertyStatesAccessCredentialDisableReason
-		if _child, err = (&_BACnetPropertyStatesAccessCredentialDisableReason{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesAccessCredentialDisableReason).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesAccessCredentialDisableReason for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(33): // BACnetPropertyStatesAccessCredentialDisable
-		if _child, err = (&_BACnetPropertyStatesAccessCredentialDisable{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesAccessCredentialDisable).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesAccessCredentialDisable for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(34): // BACnetPropertyStatesAuthenticationStatus
-		if _child, err = (&_BACnetPropertyStatesAuthenticationStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesAuthenticationStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesAuthenticationStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(36): // BACnetPropertyStatesBackupState
-		if _child, err = (&_BACnetPropertyStatesBackupState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesBackupState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesBackupState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(37): // BACnetPropertyStatesWriteStatus
-		if _child, err = (&_BACnetPropertyStatesWriteStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesWriteStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesWriteStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(38): // BACnetPropertyStatesLightningInProgress
-		if _child, err = (&_BACnetPropertyStatesLightningInProgress{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLightningInProgress).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLightningInProgress for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(39): // BACnetPropertyStatesLightningOperation
-		if _child, err = (&_BACnetPropertyStatesLightningOperation{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLightningOperation).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLightningOperation for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(40): // BACnetPropertyStatesLightningTransition
-		if _child, err = (&_BACnetPropertyStatesLightningTransition{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLightningTransition).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLightningTransition for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(41): // BACnetPropertyStatesIntegerValue
-		if _child, err = (&_BACnetPropertyStatesIntegerValue{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesIntegerValue).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesIntegerValue for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(42): // BACnetPropertyStatesBinaryLightningValue
-		if _child, err = (&_BACnetPropertyStatesBinaryLightningValue{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesBinaryLightningValue).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesBinaryLightningValue for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(43): // BACnetPropertyStatesTimerState
-		if _child, err = (&_BACnetPropertyStatesTimerState{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesTimerState).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesTimerState for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(44): // BACnetPropertyStatesTimerTransition
-		if _child, err = (&_BACnetPropertyStatesTimerTransition{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesTimerTransition).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesTimerTransition for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(45): // BACnetPropertyStatesBacnetIpMode
-		if _child, err = (&_BACnetPropertyStatesBacnetIpMode{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesBacnetIpMode).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesBacnetIpMode for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(46): // BACnetPropertyStatesNetworkPortCommand
-		if _child, err = (&_BACnetPropertyStatesNetworkPortCommand{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesNetworkPortCommand).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesNetworkPortCommand for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(47): // BACnetPropertyStatesNetworkType
-		if _child, err = (&_BACnetPropertyStatesNetworkType{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesNetworkType).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesNetworkType for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(48): // BACnetPropertyStatesNetworkNumberQuality
-		if _child, err = (&_BACnetPropertyStatesNetworkNumberQuality{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesNetworkNumberQuality).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesNetworkNumberQuality for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(49): // BACnetPropertyStatesEscalatorOperationDirection
-		if _child, err = (&_BACnetPropertyStatesEscalatorOperationDirection{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesEscalatorOperationDirection).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesEscalatorOperationDirection for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(50): // BACnetPropertyStatesEscalatorFault
-		if _child, err = (&_BACnetPropertyStatesEscalatorFault{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesEscalatorFault).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesEscalatorFault for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(51): // BACnetPropertyStatesEscalatorMode
-		if _child, err = (&_BACnetPropertyStatesEscalatorMode{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesEscalatorMode).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesEscalatorMode for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(52): // BACnetPropertyStatesLiftCarDirection
-		if _child, err = (&_BACnetPropertyStatesLiftCarDirection{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLiftCarDirection).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLiftCarDirection for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(53): // BACnetPropertyStatesLiftCarDoorCommand
-		if _child, err = (&_BACnetPropertyStatesLiftCarDoorCommand{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLiftCarDoorCommand).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLiftCarDoorCommand for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(54): // BACnetPropertyStatesLiftCarDriveStatus
-		if _child, err = (&_BACnetPropertyStatesLiftCarDriveStatus{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLiftCarDriveStatus).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLiftCarDriveStatus for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(55): // BACnetPropertyStatesLiftCarMode
-		if _child, err = (&_BACnetPropertyStatesLiftCarMode{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLiftCarMode).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLiftCarMode for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(56): // BACnetPropertyStatesLiftGroupMode
-		if _child, err = (&_BACnetPropertyStatesLiftGroupMode{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLiftGroupMode).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLiftGroupMode for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(57): // BACnetPropertyStatesLiftFault
-		if _child, err = (&_BACnetPropertyStatesLiftFault{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesLiftFault).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesLiftFault for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(58): // BACnetPropertyStatesProtocolLevel
-		if _child, err = (&_BACnetPropertyStatesProtocolLevel{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesProtocolLevel).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesProtocolLevel for type-switch of BACnetPropertyStates")
 		}
 	case peekedTagNumber == uint8(63): // BACnetPropertyStatesExtendedValue
-		if _child, err = (&_BACnetPropertyStatesExtendedValue{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStatesExtendedValue).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStatesExtendedValue for type-switch of BACnetPropertyStates")
 		}
 	case true: // BACnetPropertyStateActionUnknown
-		if _child, err = (&_BACnetPropertyStateActionUnknown{}).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
+		if _child, err = new(_BACnetPropertyStateActionUnknown).parse(ctx, readBuffer, m, peekedTagNumber); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetPropertyStateActionUnknown for type-switch of BACnetPropertyStates")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
index d277a37de5..028aa9b255 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
@@ -189,11 +189,11 @@ func (m *_BACnetRecipient) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child BACnetRecipient
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetRecipientDevice
-		if _child, err = (&_BACnetRecipientDevice{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetRecipientDevice).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetRecipientDevice for type-switch of BACnetRecipient")
 		}
 	case peekedTagNumber == uint8(1): // BACnetRecipientAddress
-		if _child, err = (&_BACnetRecipientAddress{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetRecipientAddress).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetRecipientAddress for type-switch of BACnetRecipient")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
index 297c8c10ad..04060b767d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
@@ -189,11 +189,11 @@ func (m *_BACnetScale) parse(ctx context.Context, readBuffer utils.ReadBuffer) (
 	var _child BACnetScale
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetScaleFloatScale
-		if _child, err = (&_BACnetScaleFloatScale{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetScaleFloatScale).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetScaleFloatScale for type-switch of BACnetScale")
 		}
 	case peekedTagNumber == uint8(1): // BACnetScaleIntegerScale
-		if _child, err = (&_BACnetScaleIntegerScale{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetScaleIntegerScale).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetScaleIntegerScale for type-switch of BACnetScale")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
index eb418ff915..dc476ca01c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -176,63 +176,63 @@ func (m *_BACnetServiceAck) parse(ctx context.Context, readBuffer utils.ReadBuff
 	var _child BACnetServiceAck
 	switch {
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_ALARM_SUMMARY: // BACnetServiceAckGetAlarmSummary
-		if _child, err = (&_BACnetServiceAckGetAlarmSummary{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckGetAlarmSummary).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckGetAlarmSummary for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_ENROLLMENT_SUMMARY: // BACnetServiceAckGetEnrollmentSummary
-		if _child, err = (&_BACnetServiceAckGetEnrollmentSummary{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckGetEnrollmentSummary).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckGetEnrollmentSummary for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_EVENT_INFORMATION: // BACnetServiceAckGetEventInformation
-		if _child, err = (&_BACnetServiceAckGetEventInformation{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckGetEventInformation).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckGetEventInformation for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_ATOMIC_READ_FILE: // BACnetServiceAckAtomicReadFile
-		if _child, err = (&_BACnetServiceAckAtomicReadFile{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckAtomicReadFile).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckAtomicReadFile for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_ATOMIC_WRITE_FILE: // BACnetServiceAckAtomicWriteFile
-		if _child, err = (&_BACnetServiceAckAtomicWriteFile{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckAtomicWriteFile).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckAtomicWriteFile for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CREATE_OBJECT: // BACnetServiceAckCreateObject
-		if _child, err = (&_BACnetServiceAckCreateObject{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckCreateObject).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckCreateObject for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY: // BACnetServiceAckReadProperty
-		if _child, err = (&_BACnetServiceAckReadProperty{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckReadProperty).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckReadProperty for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY_MULTIPLE: // BACnetServiceAckReadPropertyMultiple
-		if _child, err = (&_BACnetServiceAckReadPropertyMultiple{}).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckReadPropertyMultiple).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckReadPropertyMultiple for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_RANGE: // BACnetServiceAckReadRange
-		if _child, err = (&_BACnetServiceAckReadRange{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckReadRange).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckReadRange for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_PRIVATE_TRANSFER: // BACnetServiceAckConfirmedPrivateTransfer
-		if _child, err = (&_BACnetServiceAckConfirmedPrivateTransfer{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckConfirmedPrivateTransfer).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckConfirmedPrivateTransfer for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_OPEN: // BACnetServiceAckVTOpen
-		if _child, err = (&_BACnetServiceAckVTOpen{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckVTOpen).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckVTOpen for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_DATA: // BACnetServiceAckVTData
-		if _child, err = (&_BACnetServiceAckVTData{}).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckVTData).parse(ctx, readBuffer, m, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckVTData for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_AUTHENTICATE: // BACnetServiceAckAuthenticate
-		if _child, err = (&_BACnetServiceAckAuthenticate{}).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckAuthenticate).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckAuthenticate for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_REQUEST_KEY: // BACnetServiceAckRequestKey
-		if _child, err = (&_BACnetServiceAckRequestKey{}).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckRequestKey).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckRequestKey for type-switch of BACnetServiceAck")
 		}
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY_CONDITIONAL: // BACnetServiceAckReadPropertyConditional
-		if _child, err = (&_BACnetServiceAckReadPropertyConditional{}).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
+		if _child, err = new(_BACnetServiceAckReadPropertyConditional).parse(ctx, readBuffer, m, serviceAckPayloadLength, serviceAckLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckReadPropertyConditional for type-switch of BACnetServiceAck")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
index 4143464760..c0b750087e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
@@ -221,11 +221,11 @@ func (m *_BACnetServiceAckAtomicReadFileStreamOrRecord) parse(ctx context.Contex
 	var _child BACnetServiceAckAtomicReadFileStreamOrRecord
 	switch {
 	case peekedTagNumber == 0x0: // BACnetServiceAckAtomicReadFileStream
-		if _child, err = (&_BACnetServiceAckAtomicReadFileStream{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetServiceAckAtomicReadFileStream).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckAtomicReadFileStream for type-switch of BACnetServiceAckAtomicReadFileStreamOrRecord")
 		}
 	case peekedTagNumber == 0x1: // BACnetServiceAckAtomicReadFileRecord
-		if _child, err = (&_BACnetServiceAckAtomicReadFileRecord{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetServiceAckAtomicReadFileRecord).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetServiceAckAtomicReadFileRecord for type-switch of BACnetServiceAckAtomicReadFileStreamOrRecord")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
index 456360bd4b..11fca58c37 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
@@ -189,15 +189,15 @@ func (m *_BACnetShedLevel) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child BACnetShedLevel
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetShedLevelPercent
-		if _child, err = (&_BACnetShedLevelPercent{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetShedLevelPercent).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetShedLevelPercent for type-switch of BACnetShedLevel")
 		}
 	case peekedTagNumber == uint8(1): // BACnetShedLevelLevel
-		if _child, err = (&_BACnetShedLevelLevel{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetShedLevelLevel).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetShedLevelLevel for type-switch of BACnetShedLevel")
 		}
 	case peekedTagNumber == uint8(2): // BACnetShedLevelAmount
-		if _child, err = (&_BACnetShedLevelAmount{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetShedLevelAmount).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetShedLevelAmount for type-switch of BACnetShedLevel")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
index 8b50a44077..1f44659dbe 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
@@ -194,11 +194,11 @@ func (m *_BACnetSpecialEventPeriod) parse(ctx context.Context, readBuffer utils.
 	var _child BACnetSpecialEventPeriod
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetSpecialEventPeriodCalendarEntry
-		if _child, err = (&_BACnetSpecialEventPeriodCalendarEntry{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetSpecialEventPeriodCalendarEntry).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetSpecialEventPeriodCalendarEntry for type-switch of BACnetSpecialEventPeriod")
 		}
 	case peekedTagNumber == uint8(1): // BACnetSpecialEventPeriodCalendarReference
-		if _child, err = (&_BACnetSpecialEventPeriodCalendarReference{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetSpecialEventPeriodCalendarReference).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetSpecialEventPeriodCalendarReference for type-switch of BACnetSpecialEventPeriod")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
index 843c16aa87..ff7e51e110 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
@@ -189,15 +189,15 @@ func (m *_BACnetTimeStamp) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child BACnetTimeStamp
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetTimeStampTime
-		if _child, err = (&_BACnetTimeStampTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetTimeStampTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimeStampTime for type-switch of BACnetTimeStamp")
 		}
 	case peekedTagNumber == uint8(1): // BACnetTimeStampSequence
-		if _child, err = (&_BACnetTimeStampSequence{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetTimeStampSequence).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimeStampSequence for type-switch of BACnetTimeStamp")
 		}
 	case peekedTagNumber == uint8(2): // BACnetTimeStampDateTime
-		if _child, err = (&_BACnetTimeStampDateTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetTimeStampDateTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimeStampDateTime for type-switch of BACnetTimeStamp")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
index 8bbb74ba09..0ceab8a7e6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
@@ -218,71 +218,71 @@ func (m *_BACnetTimerStateChangeValue) parse(ctx context.Context, readBuffer uti
 	var _child BACnetTimerStateChangeValue
 	switch {
 	case peekedTagNumber == 0x0 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueNull
-		if _child, err = (&_BACnetTimerStateChangeValueNull{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueNull).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueNull for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x1 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueBoolean
-		if _child, err = (&_BACnetTimerStateChangeValueBoolean{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueBoolean).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueBoolean for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x2 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueUnsigned
-		if _child, err = (&_BACnetTimerStateChangeValueUnsigned{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueUnsigned).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueUnsigned for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x3 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueInteger
-		if _child, err = (&_BACnetTimerStateChangeValueInteger{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueInteger).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueInteger for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x4 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueReal
-		if _child, err = (&_BACnetTimerStateChangeValueReal{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueReal).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueReal for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x5 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueDouble
-		if _child, err = (&_BACnetTimerStateChangeValueDouble{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueDouble).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueDouble for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x6 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueOctetString
-		if _child, err = (&_BACnetTimerStateChangeValueOctetString{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueOctetString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueOctetString for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x7 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueCharacterString
-		if _child, err = (&_BACnetTimerStateChangeValueCharacterString{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueCharacterString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueCharacterString for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x8 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueBitString
-		if _child, err = (&_BACnetTimerStateChangeValueBitString{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueBitString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueBitString for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0x9 && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueEnumerated
-		if _child, err = (&_BACnetTimerStateChangeValueEnumerated{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueEnumerated).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueEnumerated for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0xA && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueDate
-		if _child, err = (&_BACnetTimerStateChangeValueDate{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueDate).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueDate for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0xB && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueTime
-		if _child, err = (&_BACnetTimerStateChangeValueTime{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueTime).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueTime for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == 0xC && peekedIsContextTag == bool(false): // BACnetTimerStateChangeValueObjectidentifier
-		if _child, err = (&_BACnetTimerStateChangeValueObjectidentifier{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueObjectidentifier).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueObjectidentifier for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == uint8(0) && peekedIsContextTag == bool(true): // BACnetTimerStateChangeValueNoValue
-		if _child, err = (&_BACnetTimerStateChangeValueNoValue{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueNoValue).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueNoValue for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == uint8(1) && peekedIsContextTag == bool(true): // BACnetTimerStateChangeValueConstructedValue
-		if _child, err = (&_BACnetTimerStateChangeValueConstructedValue{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueConstructedValue).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueConstructedValue for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == uint8(2) && peekedIsContextTag == bool(true): // BACnetTimerStateChangeValueDateTime
-		if _child, err = (&_BACnetTimerStateChangeValueDateTime{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueDateTime).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueDateTime for type-switch of BACnetTimerStateChangeValue")
 		}
 	case peekedTagNumber == uint8(3) && peekedIsContextTag == bool(true): // BACnetTimerStateChangeValueLightingCommand
-		if _child, err = (&_BACnetTimerStateChangeValueLightingCommand{}).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
+		if _child, err = new(_BACnetTimerStateChangeValueLightingCommand).parse(ctx, readBuffer, m, objectTypeArgument); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetTimerStateChangeValueLightingCommand for type-switch of BACnetTimerStateChangeValue")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index 630fa14153..917c56ea6c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -149,55 +149,55 @@ func (m *_BACnetUnconfirmedServiceRequest) parse(ctx context.Context, readBuffer
 	var _child BACnetUnconfirmedServiceRequest
 	switch {
 	case serviceChoice == BACnetUnconfirmedServiceChoice_I_AM: // BACnetUnconfirmedServiceRequestIAm
-		if _child, err = (&_BACnetUnconfirmedServiceRequestIAm{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestIAm).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestIAm for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_I_HAVE: // BACnetUnconfirmedServiceRequestIHave
-		if _child, err = (&_BACnetUnconfirmedServiceRequestIHave{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestIHave).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestIHave for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_EVENT_NOTIFICATION: // BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUnconfirmedEventNotification{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUnconfirmedEventNotification).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUnconfirmedEventNotification for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_PRIVATE_TRANSFER: // BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_TEXT_MESSAGE: // BACnetUnconfirmedServiceRequestUnconfirmedTextMessage
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUnconfirmedTextMessage{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUnconfirmedTextMessage).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUnconfirmedTextMessage for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_TIME_SYNCHRONIZATION: // BACnetUnconfirmedServiceRequestTimeSynchronization
-		if _child, err = (&_BACnetUnconfirmedServiceRequestTimeSynchronization{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestTimeSynchronization).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestTimeSynchronization for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_WHO_HAS: // BACnetUnconfirmedServiceRequestWhoHas
-		if _child, err = (&_BACnetUnconfirmedServiceRequestWhoHas{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestWhoHas).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestWhoHas for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_WHO_IS: // BACnetUnconfirmedServiceRequestWhoIs
-		if _child, err = (&_BACnetUnconfirmedServiceRequestWhoIs{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestWhoIs).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestWhoIs for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_UTC_TIME_SYNCHRONIZATION: // BACnetUnconfirmedServiceRequestUTCTimeSynchronization
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUTCTimeSynchronization{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUTCTimeSynchronization).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUTCTimeSynchronization for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_WRITE_GROUP: // BACnetUnconfirmedServiceRequestWriteGroup
-		if _child, err = (&_BACnetUnconfirmedServiceRequestWriteGroup{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestWriteGroup).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestWriteGroup for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case serviceChoice == BACnetUnconfirmedServiceChoice_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE: // BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	case 0 == 0: // BACnetUnconfirmedServiceRequestUnknown
-		if _child, err = (&_BACnetUnconfirmedServiceRequestUnknown{}).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestUnknown).parse(ctx, readBuffer, m, serviceRequestLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestUnknown for type-switch of BACnetUnconfirmedServiceRequest")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
index 06979b3144..569e45db5a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
@@ -189,11 +189,11 @@ func (m *_BACnetUnconfirmedServiceRequestWhoHasObject) parse(ctx context.Context
 	var _child BACnetUnconfirmedServiceRequestWhoHasObject
 	switch {
 	case peekedTagNumber == uint8(2): // BACnetUnconfirmedServiceRequestWhoHasObjectIdentifier
-		if _child, err = (&_BACnetUnconfirmedServiceRequestWhoHasObjectIdentifier{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestWhoHasObjectIdentifier).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestWhoHasObjectIdentifier for type-switch of BACnetUnconfirmedServiceRequestWhoHasObject")
 		}
 	case peekedTagNumber == uint8(3): // BACnetUnconfirmedServiceRequestWhoHasObjectName
-		if _child, err = (&_BACnetUnconfirmedServiceRequestWhoHasObjectName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetUnconfirmedServiceRequestWhoHasObjectName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetUnconfirmedServiceRequestWhoHasObjectName for type-switch of BACnetUnconfirmedServiceRequestWhoHasObject")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
index 199092113c..ba9af3bf22 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
@@ -189,15 +189,15 @@ func (m *_BACnetValueSource) parse(ctx context.Context, readBuffer utils.ReadBuf
 	var _child BACnetValueSource
 	switch {
 	case peekedTagNumber == uint8(0): // BACnetValueSourceNone
-		if _child, err = (&_BACnetValueSourceNone{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetValueSourceNone).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetValueSourceNone for type-switch of BACnetValueSource")
 		}
 	case peekedTagNumber == uint8(1): // BACnetValueSourceObject
-		if _child, err = (&_BACnetValueSourceObject{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetValueSourceObject).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetValueSourceObject for type-switch of BACnetValueSource")
 		}
 	case peekedTagNumber == uint8(2): // BACnetValueSourceAddress
-		if _child, err = (&_BACnetValueSourceAddress{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BACnetValueSourceAddress).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BACnetValueSourceAddress for type-switch of BACnetValueSource")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLC.go b/plc4go/protocols/bacnetip/readwrite/model/BVLC.go
index 0655a91c50..bcf64bf5c8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLC.go
@@ -207,55 +207,55 @@ func (m *_BVLC) parse(ctx context.Context, readBuffer utils.ReadBuffer) (__bVLC
 	var _child BVLC
 	switch {
 	case bvlcFunction == 0x00: // BVLCResult
-		if _child, err = (&_BVLCResult{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BVLCResult).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCResult for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x01: // BVLCWriteBroadcastDistributionTable
-		if _child, err = (&_BVLCWriteBroadcastDistributionTable{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCWriteBroadcastDistributionTable).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCWriteBroadcastDistributionTable for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x02: // BVLCReadBroadcastDistributionTable
-		if _child, err = (&_BVLCReadBroadcastDistributionTable{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BVLCReadBroadcastDistributionTable).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCReadBroadcastDistributionTable for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x03: // BVLCReadBroadcastDistributionTableAck
-		if _child, err = (&_BVLCReadBroadcastDistributionTableAck{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCReadBroadcastDistributionTableAck).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCReadBroadcastDistributionTableAck for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x04: // BVLCForwardedNPDU
-		if _child, err = (&_BVLCForwardedNPDU{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCForwardedNPDU).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCForwardedNPDU for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x05: // BVLCRegisterForeignDevice
-		if _child, err = (&_BVLCRegisterForeignDevice{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BVLCRegisterForeignDevice).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCRegisterForeignDevice for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x06: // BVLCReadForeignDeviceTable
-		if _child, err = (&_BVLCReadForeignDeviceTable{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BVLCReadForeignDeviceTable).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCReadForeignDeviceTable for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x07: // BVLCReadForeignDeviceTableAck
-		if _child, err = (&_BVLCReadForeignDeviceTableAck{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCReadForeignDeviceTableAck).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCReadForeignDeviceTableAck for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x08: // BVLCDeleteForeignDeviceTableEntry
-		if _child, err = (&_BVLCDeleteForeignDeviceTableEntry{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_BVLCDeleteForeignDeviceTableEntry).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCDeleteForeignDeviceTableEntry for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x09: // BVLCDistributeBroadcastToNetwork
-		if _child, err = (&_BVLCDistributeBroadcastToNetwork{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCDistributeBroadcastToNetwork).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCDistributeBroadcastToNetwork for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x0A: // BVLCOriginalUnicastNPDU
-		if _child, err = (&_BVLCOriginalUnicastNPDU{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCOriginalUnicastNPDU).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCOriginalUnicastNPDU for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x0B: // BVLCOriginalBroadcastNPDU
-		if _child, err = (&_BVLCOriginalBroadcastNPDU{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCOriginalBroadcastNPDU).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCOriginalBroadcastNPDU for type-switch of BVLC")
 		}
 	case bvlcFunction == 0x0C: // BVLCSecureBVLL
-		if _child, err = (&_BVLCSecureBVLL{}).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
+		if _child, err = new(_BVLCSecureBVLL).parse(ctx, readBuffer, m, bvlcPayloadLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BVLCSecureBVLL for type-switch of BVLC")
 		}
 	default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLM.go b/plc4go/protocols/bacnetip/readwrite/model/NLM.go
index e1b1f203af..a556e7f7b6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLM.go
@@ -178,91 +178,91 @@ func (m *_NLM) parse(ctx context.Context, readBuffer utils.ReadBuffer, apduLengt
 	var _child NLM
 	switch {
 	case messageType == 0x00: // NLMWhoIsRouterToNetwork
-		if _child, err = (&_NLMWhoIsRouterToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMWhoIsRouterToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMWhoIsRouterToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x01: // NLMIAmRouterToNetwork
-		if _child, err = (&_NLMIAmRouterToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMIAmRouterToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMIAmRouterToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x02: // NLMICouldBeRouterToNetwork
-		if _child, err = (&_NLMICouldBeRouterToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMICouldBeRouterToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMICouldBeRouterToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x03: // NLMRejectMessageToNetwork
-		if _child, err = (&_NLMRejectMessageToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMRejectMessageToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMRejectMessageToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x04: // NLMRouterBusyToNetwork
-		if _child, err = (&_NLMRouterBusyToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMRouterBusyToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMRouterBusyToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x05: // NLMRouterAvailableToNetwork
-		if _child, err = (&_NLMRouterAvailableToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMRouterAvailableToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMRouterAvailableToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x06: // NLMInitializeRoutingTable
-		if _child, err = (&_NLMInitializeRoutingTable{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMInitializeRoutingTable).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMInitializeRoutingTable for type-switch of NLM")
 		}
 	case messageType == 0x07: // NLMInitializeRoutingTableAck
-		if _child, err = (&_NLMInitializeRoutingTableAck{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMInitializeRoutingTableAck).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMInitializeRoutingTableAck for type-switch of NLM")
 		}
 	case messageType == 0x08: // NLMEstablishConnectionToNetwork
-		if _child, err = (&_NLMEstablishConnectionToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMEstablishConnectionToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMEstablishConnectionToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x09: // NLMDisconnectConnectionToNetwork
-		if _child, err = (&_NLMDisconnectConnectionToNetwork{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMDisconnectConnectionToNetwork).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMDisconnectConnectionToNetwork for type-switch of NLM")
 		}
 	case messageType == 0x0A: // NLMChallengeRequest
-		if _child, err = (&_NLMChallengeRequest{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMChallengeRequest).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMChallengeRequest for type-switch of NLM")
 		}
 	case messageType == 0x0B: // NLMSecurityPayload
-		if _child, err = (&_NLMSecurityPayload{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMSecurityPayload).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMSecurityPayload for type-switch of NLM")
 		}
 	case messageType == 0x0C: // NLMSecurityResponse
-		if _child, err = (&_NLMSecurityResponse{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMSecurityResponse).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMSecurityResponse for type-switch of NLM")
 		}
 	case messageType == 0x0D: // NLMRequestKeyUpdate
-		if _child, err = (&_NLMRequestKeyUpdate{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMRequestKeyUpdate).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMRequestKeyUpdate for type-switch of NLM")
 		}
 	case messageType == 0x0E: // NLMUpdateKeyUpdate
-		if _child, err = (&_NLMUpdateKeyUpdate{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMUpdateKeyUpdate).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMUpdateKeyUpdate for type-switch of NLM")
 		}
 	case messageType == 0x0F: // NLMUpdateKeyDistributionKey
-		if _child, err = (&_NLMUpdateKeyDistributionKey{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMUpdateKeyDistributionKey).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMUpdateKeyDistributionKey for type-switch of NLM")
 		}
 	case messageType == 0x10: // NLMRequestMasterKey
-		if _child, err = (&_NLMRequestMasterKey{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMRequestMasterKey).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMRequestMasterKey for type-switch of NLM")
 		}
 	case messageType == 0x11: // NLMSetMasterKey
-		if _child, err = (&_NLMSetMasterKey{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMSetMasterKey).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMSetMasterKey for type-switch of NLM")
 		}
 	case messageType == 0x12: // NLMWhatIsNetworkNumber
-		if _child, err = (&_NLMWhatIsNetworkNumber{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMWhatIsNetworkNumber).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMWhatIsNetworkNumber for type-switch of NLM")
 		}
 	case messageType == 0x13: // NLMNetworkNumberIs
-		if _child, err = (&_NLMNetworkNumberIs{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMNetworkNumberIs).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMNetworkNumberIs for type-switch of NLM")
 		}
 	case 0 == 0 && isVendorProprietaryMessage == bool(false): // NLMReserved
-		if _child, err = (&_NLMReserved{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMReserved).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMReserved for type-switch of NLM")
 		}
 	case 0 == 0: // NLMVendorProprietaryMessage
-		if _child, err = (&_NLMVendorProprietaryMessage{}).parse(ctx, readBuffer, m, apduLength); err != nil {
+		if _child, err = new(_NLMVendorProprietaryMessage).parse(ctx, readBuffer, m, apduLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NLMVendorProprietaryMessage for type-switch of NLM")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/AccessControlData.go b/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
index d023355e7f..0db1063fe1 100644
--- a/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
@@ -226,35 +226,35 @@ func (m *_AccessControlData) parse(ctx context.Context, readBuffer utils.ReadBuf
 	var _child AccessControlData
 	switch {
 	case commandType == AccessControlCommandType_VALID_ACCESS: // AccessControlDataValidAccessRequest
-		if _child, err = (&_AccessControlDataValidAccessRequest{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_AccessControlDataValidAccessRequest).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataValidAccessRequest for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_INVALID_ACCESS: // AccessControlDataInvalidAccessRequest
-		if _child, err = (&_AccessControlDataInvalidAccessRequest{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_AccessControlDataInvalidAccessRequest).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataInvalidAccessRequest for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_ACCESS_POINT_LEFT_OPEN: // AccessControlDataAccessPointLeftOpen
-		if _child, err = (&_AccessControlDataAccessPointLeftOpen{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AccessControlDataAccessPointLeftOpen).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataAccessPointLeftOpen for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_ACCESS_POINT_FORCED_OPEN: // AccessControlDataAccessPointForcedOpen
-		if _child, err = (&_AccessControlDataAccessPointForcedOpen{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AccessControlDataAccessPointForcedOpen).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataAccessPointForcedOpen for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_ACCESS_POINT_CLOSED: // AccessControlDataAccessPointClosed
-		if _child, err = (&_AccessControlDataAccessPointClosed{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AccessControlDataAccessPointClosed).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataAccessPointClosed for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_REQUEST_TO_EXIT: // AccessControlDataRequestToExit
-		if _child, err = (&_AccessControlDataRequestToExit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AccessControlDataRequestToExit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataRequestToExit for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_CLOSE_ACCESS_POINT: // AccessControlDataCloseAccessPoint
-		if _child, err = (&_AccessControlDataCloseAccessPoint{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AccessControlDataCloseAccessPoint).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataCloseAccessPoint for type-switch of AccessControlData")
 		}
 	case commandType == AccessControlCommandType_LOCK_ACCESS_POINT: // AccessControlDataLockAccessPoint
-		if _child, err = (&_AccessControlDataLockAccessPoint{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AccessControlDataLockAccessPoint).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AccessControlDataLockAccessPoint for type-switch of AccessControlData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go b/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
index 3e8591ede7..b63dce541c 100644
--- a/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
+++ b/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
@@ -194,79 +194,79 @@ func (m *_AirConditioningData) parse(ctx context.Context, readBuffer utils.ReadB
 	var _child AirConditioningData
 	switch {
 	case commandType == AirConditioningCommandType_HVAC_SCHEDULE_ENTRY: // AirConditioningDataHvacScheduleEntry
-		if _child, err = (&_AirConditioningDataHvacScheduleEntry{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataHvacScheduleEntry).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataHvacScheduleEntry for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_HUMIDITY_SCHEDULE_ENTRY: // AirConditioningDataHumidityScheduleEntry
-		if _child, err = (&_AirConditioningDataHumidityScheduleEntry{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataHumidityScheduleEntry).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataHumidityScheduleEntry for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_REFRESH: // AirConditioningDataRefresh
-		if _child, err = (&_AirConditioningDataRefresh{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataRefresh).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataRefresh for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_ZONE_HVAC_PLANT_STATUS: // AirConditioningDataZoneHvacPlantStatus
-		if _child, err = (&_AirConditioningDataZoneHvacPlantStatus{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataZoneHvacPlantStatus).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataZoneHvacPlantStatus for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_ZONE_HUMIDITY_PLANT_STATUS: // AirConditioningDataZoneHumidityPlantStatus
-		if _child, err = (&_AirConditioningDataZoneHumidityPlantStatus{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataZoneHumidityPlantStatus).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataZoneHumidityPlantStatus for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_ZONE_TEMPERATURE: // AirConditioningDataZoneTemperature
-		if _child, err = (&_AirConditioningDataZoneTemperature{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataZoneTemperature).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataZoneTemperature for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_ZONE_HUMIDITY: // AirConditioningDataZoneHumidity
-		if _child, err = (&_AirConditioningDataZoneHumidity{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataZoneHumidity).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataZoneHumidity for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_ZONE_GROUP_OFF: // AirConditioningDataSetZoneGroupOff
-		if _child, err = (&_AirConditioningDataSetZoneGroupOff{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetZoneGroupOff).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetZoneGroupOff for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_ZONE_GROUP_ON: // AirConditioningDataSetZoneGroupOn
-		if _child, err = (&_AirConditioningDataSetZoneGroupOn{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetZoneGroupOn).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetZoneGroupOn for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_ZONE_HVAC_MODE: // AirConditioningDataSetZoneHvacMode
-		if _child, err = (&_AirConditioningDataSetZoneHvacMode{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetZoneHvacMode).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetZoneHvacMode for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_PLANT_HVAC_LEVEL: // AirConditioningDataSetPlantHvacLevel
-		if _child, err = (&_AirConditioningDataSetPlantHvacLevel{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetPlantHvacLevel).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetPlantHvacLevel for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_ZONE_HUMIDITY_MODE: // AirConditioningDataSetZoneHumidityMode
-		if _child, err = (&_AirConditioningDataSetZoneHumidityMode{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetZoneHumidityMode).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetZoneHumidityMode for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_PLANT_HUMIDITY_LEVEL: // AirConditioningDataSetPlantHumidityLevel
-		if _child, err = (&_AirConditioningDataSetPlantHumidityLevel{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetPlantHumidityLevel).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetPlantHumidityLevel for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_HVAC_UPPER_GUARD_LIMIT: // AirConditioningDataSetHvacUpperGuardLimit
-		if _child, err = (&_AirConditioningDataSetHvacUpperGuardLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetHvacUpperGuardLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetHvacUpperGuardLimit for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_HVAC_LOWER_GUARD_LIMIT: // AirConditioningDataSetHvacLowerGuardLimit
-		if _child, err = (&_AirConditioningDataSetHvacLowerGuardLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetHvacLowerGuardLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetHvacLowerGuardLimit for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_HVAC_SETBACK_LIMIT: // AirConditioningDataSetHvacSetbackLimit
-		if _child, err = (&_AirConditioningDataSetHvacSetbackLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetHvacSetbackLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetHvacSetbackLimit for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_HUMIDITY_UPPER_GUARD_LIMIT: // AirConditioningDataSetHumidityUpperGuardLimit
-		if _child, err = (&_AirConditioningDataSetHumidityUpperGuardLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetHumidityUpperGuardLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetHumidityUpperGuardLimit for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_HUMIDITY_LOWER_GUARD_LIMIT: // AirConditioningDataSetHumidityLowerGuardLimit
-		if _child, err = (&_AirConditioningDataSetHumidityLowerGuardLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetHumidityLowerGuardLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetHumidityLowerGuardLimit for type-switch of AirConditioningData")
 		}
 	case commandType == AirConditioningCommandType_SET_HUMIDITY_SETBACK_LIMIT: // AirConditioningDataSetHumiditySetbackLimit
-		if _child, err = (&_AirConditioningDataSetHumiditySetbackLimit{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AirConditioningDataSetHumiditySetbackLimit).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AirConditioningDataSetHumiditySetbackLimit for type-switch of AirConditioningData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CALData.go b/plc4go/protocols/cbus/readwrite/model/CALData.go
index 0337294fc1..eb943cd727 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALData.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALData.go
@@ -234,43 +234,43 @@ func (m *_CALData) parse(ctx context.Context, readBuffer utils.ReadBuffer, reque
 	var _child CALData
 	switch {
 	case commandType == CALCommandType_RESET: // CALDataReset
-		if _child, err = (&_CALDataReset{}).parse(ctx, readBuffer, m, requestContext); err != nil {
+		if _child, err = new(_CALDataReset).parse(ctx, readBuffer, m, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataReset for type-switch of CALData")
 		}
 	case commandType == CALCommandType_RECALL: // CALDataRecall
-		if _child, err = (&_CALDataRecall{}).parse(ctx, readBuffer, m, requestContext); err != nil {
+		if _child, err = new(_CALDataRecall).parse(ctx, readBuffer, m, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataRecall for type-switch of CALData")
 		}
 	case commandType == CALCommandType_IDENTIFY: // CALDataIdentify
-		if _child, err = (&_CALDataIdentify{}).parse(ctx, readBuffer, m, requestContext); err != nil {
+		if _child, err = new(_CALDataIdentify).parse(ctx, readBuffer, m, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataIdentify for type-switch of CALData")
 		}
 	case commandType == CALCommandType_GET_STATUS: // CALDataGetStatus
-		if _child, err = (&_CALDataGetStatus{}).parse(ctx, readBuffer, m, requestContext); err != nil {
+		if _child, err = new(_CALDataGetStatus).parse(ctx, readBuffer, m, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataGetStatus for type-switch of CALData")
 		}
 	case commandType == CALCommandType_WRITE: // CALDataWrite
-		if _child, err = (&_CALDataWrite{}).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
+		if _child, err = new(_CALDataWrite).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataWrite for type-switch of CALData")
 		}
 	case commandType == CALCommandType_REPLY && sendIdentifyRequestBefore == bool(true): // CALDataIdentifyReply
-		if _child, err = (&_CALDataIdentifyReply{}).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
+		if _child, err = new(_CALDataIdentifyReply).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataIdentifyReply for type-switch of CALData")
 		}
 	case commandType == CALCommandType_REPLY: // CALDataReply
-		if _child, err = (&_CALDataReply{}).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
+		if _child, err = new(_CALDataReply).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataReply for type-switch of CALData")
 		}
 	case commandType == CALCommandType_ACKNOWLEDGE: // CALDataAcknowledge
-		if _child, err = (&_CALDataAcknowledge{}).parse(ctx, readBuffer, m, requestContext); err != nil {
+		if _child, err = new(_CALDataAcknowledge).parse(ctx, readBuffer, m, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataAcknowledge for type-switch of CALData")
 		}
 	case commandType == CALCommandType_STATUS: // CALDataStatus
-		if _child, err = (&_CALDataStatus{}).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
+		if _child, err = new(_CALDataStatus).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataStatus for type-switch of CALData")
 		}
 	case commandType == CALCommandType_STATUS_EXTENDED: // CALDataStatusExtended
-		if _child, err = (&_CALDataStatusExtended{}).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
+		if _child, err = new(_CALDataStatusExtended).parse(ctx, readBuffer, m, commandTypeContainer, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALDataStatusExtended for type-switch of CALData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CALReply.go b/plc4go/protocols/cbus/readwrite/model/CALReply.go
index 5b1a15a7c9..3b27e9f031 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALReply.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALReply.go
@@ -181,11 +181,11 @@ func (m *_CALReply) parse(ctx context.Context, readBuffer utils.ReadBuffer, cBus
 	var _child CALReply
 	switch {
 	case calType == 0x86: // CALReplyLong
-		if _child, err = (&_CALReplyLong{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_CALReplyLong).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALReplyLong for type-switch of CALReply")
 		}
 	case true: // CALReplyShort
-		if _child, err = (&_CALReplyShort{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_CALReplyShort).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CALReplyShort for type-switch of CALReply")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
index b12b6c8ad0..d78f4cafc9 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
@@ -216,19 +216,19 @@ func (m *_CBusCommand) parse(ctx context.Context, readBuffer utils.ReadBuffer, c
 	var _child CBusCommand
 	switch {
 	case 0 == 0 && isDeviceManagement == bool(true): // CBusCommandDeviceManagement
-		if _child, err = (&_CBusCommandDeviceManagement{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusCommandDeviceManagement).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusCommandDeviceManagement for type-switch of CBusCommand")
 		}
 	case destinationAddressType == DestinationAddressType_PointToPointToMultiPoint: // CBusCommandPointToPointToMultiPoint
-		if _child, err = (&_CBusCommandPointToPointToMultiPoint{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusCommandPointToPointToMultiPoint).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusCommandPointToPointToMultiPoint for type-switch of CBusCommand")
 		}
 	case destinationAddressType == DestinationAddressType_PointToMultiPoint: // CBusCommandPointToMultiPoint
-		if _child, err = (&_CBusCommandPointToMultiPoint{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusCommandPointToMultiPoint).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusCommandPointToMultiPoint for type-switch of CBusCommand")
 		}
 	case destinationAddressType == DestinationAddressType_PointToPoint: // CBusCommandPointToPoint
-		if _child, err = (&_CBusCommandPointToPoint{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusCommandPointToPoint).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusCommandPointToPoint for type-switch of CBusCommand")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusMessage.go b/plc4go/protocols/cbus/readwrite/model/CBusMessage.go
index f76bbbf47c..ef9eba5839 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusMessage.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusMessage.go
@@ -153,11 +153,11 @@ func (m *_CBusMessage) parse(ctx context.Context, readBuffer utils.ReadBuffer, i
 	var _child CBusMessage
 	switch {
 	case isResponse == bool(false): // CBusMessageToServer
-		if _child, err = (&_CBusMessageToServer{}).parse(ctx, readBuffer, m, isResponse, requestContext, cBusOptions); err != nil {
+		if _child, err = new(_CBusMessageToServer).parse(ctx, readBuffer, m, isResponse, requestContext, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusMessageToServer for type-switch of CBusMessage")
 		}
 	case isResponse == bool(true): // CBusMessageToClient
-		if _child, err = (&_CBusMessageToClient{}).parse(ctx, readBuffer, m, isResponse, requestContext, cBusOptions); err != nil {
+		if _child, err = new(_CBusMessageToClient).parse(ctx, readBuffer, m, isResponse, requestContext, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusMessageToClient for type-switch of CBusMessage")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
index fc8076b2ec..2de4f4b139 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
@@ -165,11 +165,11 @@ func (m *_CBusPointToMultiPointCommand) parse(ctx context.Context, readBuffer ut
 	var _child CBusPointToMultiPointCommand
 	switch {
 	case peekedApplication == 0xFF: // CBusPointToMultiPointCommandStatus
-		if _child, err = (&_CBusPointToMultiPointCommandStatus{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusPointToMultiPointCommandStatus).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusPointToMultiPointCommandStatus for type-switch of CBusPointToMultiPointCommand")
 		}
 	case 0 == 0: // CBusPointToMultiPointCommandNormal
-		if _child, err = (&_CBusPointToMultiPointCommandNormal{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusPointToMultiPointCommandNormal).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusPointToMultiPointCommandNormal for type-switch of CBusPointToMultiPointCommand")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
index 4287e811c1..6b3c25f5b6 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
@@ -204,11 +204,11 @@ func (m *_CBusPointToPointCommand) parse(ctx context.Context, readBuffer utils.R
 	var _child CBusPointToPointCommand
 	switch {
 	case isDirect == bool(true): // CBusPointToPointCommandDirect
-		if _child, err = (&_CBusPointToPointCommandDirect{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusPointToPointCommandDirect).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusPointToPointCommandDirect for type-switch of CBusPointToPointCommand")
 		}
 	case isDirect == bool(false): // CBusPointToPointCommandIndirect
-		if _child, err = (&_CBusPointToPointCommandIndirect{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusPointToPointCommandIndirect).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusPointToPointCommandIndirect for type-switch of CBusPointToPointCommand")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
index 39d11d8e3a..a2e4e014c2 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
@@ -203,11 +203,11 @@ func (m *_CBusPointToPointToMultiPointCommand) parse(ctx context.Context, readBu
 	var _child CBusPointToPointToMultiPointCommand
 	switch {
 	case peekedApplication == 0xFF: // CBusPointToPointToMultiPointCommandStatus
-		if _child, err = (&_CBusPointToPointToMultiPointCommandStatus{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusPointToPointToMultiPointCommandStatus).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusPointToPointToMultiPointCommandStatus for type-switch of CBusPointToPointToMultiPointCommand")
 		}
 	case 0 == 0: // CBusPointToPointToMultiPointCommandNormal
-		if _child, err = (&_CBusPointToPointToMultiPointCommandNormal{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_CBusPointToPointToMultiPointCommandNormal).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CBusPointToPointToMultiPointCommandNormal for type-switch of CBusPointToPointToMultiPointCommand")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go b/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
index b54811a06e..58257557c9 100644
--- a/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
@@ -212,15 +212,15 @@ func (m *_ClockAndTimekeepingData) parse(ctx context.Context, readBuffer utils.R
 	var _child ClockAndTimekeepingData
 	switch {
 	case commandType == ClockAndTimekeepingCommandType_UPDATE_NETWORK_VARIABLE && argument == 0x01: // ClockAndTimekeepingDataUpdateTime
-		if _child, err = (&_ClockAndTimekeepingDataUpdateTime{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ClockAndTimekeepingDataUpdateTime).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ClockAndTimekeepingDataUpdateTime for type-switch of ClockAndTimekeepingData")
 		}
 	case commandType == ClockAndTimekeepingCommandType_UPDATE_NETWORK_VARIABLE && argument == 0x02: // ClockAndTimekeepingDataUpdateDate
-		if _child, err = (&_ClockAndTimekeepingDataUpdateDate{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ClockAndTimekeepingDataUpdateDate).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ClockAndTimekeepingDataUpdateDate for type-switch of ClockAndTimekeepingData")
 		}
 	case commandType == ClockAndTimekeepingCommandType_REQUEST_REFRESH && argument == 0x03: // ClockAndTimekeepingDataRequestRefresh
-		if _child, err = (&_ClockAndTimekeepingDataRequestRefresh{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ClockAndTimekeepingDataRequestRefresh).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ClockAndTimekeepingDataRequestRefresh for type-switch of ClockAndTimekeepingData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/EncodedReply.go b/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
index d61f794114..7b4ae85fbd 100644
--- a/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
+++ b/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
@@ -194,11 +194,11 @@ func (m *_EncodedReply) parse(ctx context.Context, readBuffer utils.ReadBuffer,
 	var _child EncodedReply
 	switch {
 	case isMonitoredSAL == bool(true): // MonitoredSALReply
-		if _child, err = (&_MonitoredSALReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_MonitoredSALReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredSALReply for type-switch of EncodedReply")
 		}
 	case 0 == 0: // EncodedReplyCALReply
-		if _child, err = (&_EncodedReplyCALReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_EncodedReplyCALReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EncodedReplyCALReply for type-switch of EncodedReply")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go b/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
index 105967fed1..74b144d137 100644
--- a/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
@@ -194,7 +194,7 @@ func (m *_ErrorReportingData) parse(ctx context.Context, readBuffer utils.ReadBu
 	var _child ErrorReportingData
 	switch {
 	case 0 == 0: // ErrorReportingDataGeneric
-		if _child, err = (&_ErrorReportingDataGeneric{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ErrorReportingDataGeneric).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingDataGeneric for type-switch of ErrorReportingData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go b/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go
index 029dfd86b7..275662dc76 100644
--- a/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go
+++ b/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go
@@ -135,27 +135,27 @@ func (m *_ErrorReportingSystemCategoryType) parse(ctx context.Context, readBuffe
 	var _child ErrorReportingSystemCategoryType
 	switch {
 	case errorReportingSystemCategoryClass == ErrorReportingSystemCategoryClass_INPUT_UNITS: // ErrorReportingSystemCategoryTypeInputUnits
-		if _child, err = (&_ErrorReportingSystemCategoryTypeInputUnits{}).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
+		if _child, err = new(_ErrorReportingSystemCategoryTypeInputUnits).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingSystemCategoryTypeInputUnits for type-switch of ErrorReportingSystemCategoryType")
 		}
 	case errorReportingSystemCategoryClass == ErrorReportingSystemCategoryClass_SUPPORT_UNITS: // ErrorReportingSystemCategoryTypeSupportUnits
-		if _child, err = (&_ErrorReportingSystemCategoryTypeSupportUnits{}).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
+		if _child, err = new(_ErrorReportingSystemCategoryTypeSupportUnits).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingSystemCategoryTypeSupportUnits for type-switch of ErrorReportingSystemCategoryType")
 		}
 	case errorReportingSystemCategoryClass == ErrorReportingSystemCategoryClass_BUILDING_MANAGEMENT_SYSTEMS: // ErrorReportingSystemCategoryTypeBuildingManagementSystems
-		if _child, err = (&_ErrorReportingSystemCategoryTypeBuildingManagementSystems{}).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
+		if _child, err = new(_ErrorReportingSystemCategoryTypeBuildingManagementSystems).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingSystemCategoryTypeBuildingManagementSystems for type-switch of ErrorReportingSystemCategoryType")
 		}
 	case errorReportingSystemCategoryClass == ErrorReportingSystemCategoryClass_OUTPUT_UNITS: // ErrorReportingSystemCategoryTypeOutputUnits
-		if _child, err = (&_ErrorReportingSystemCategoryTypeOutputUnits{}).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
+		if _child, err = new(_ErrorReportingSystemCategoryTypeOutputUnits).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingSystemCategoryTypeOutputUnits for type-switch of ErrorReportingSystemCategoryType")
 		}
 	case errorReportingSystemCategoryClass == ErrorReportingSystemCategoryClass_CLIMATE_CONTROLLERS: // ErrorReportingSystemCategoryTypeClimateControllers
-		if _child, err = (&_ErrorReportingSystemCategoryTypeClimateControllers{}).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
+		if _child, err = new(_ErrorReportingSystemCategoryTypeClimateControllers).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingSystemCategoryTypeClimateControllers for type-switch of ErrorReportingSystemCategoryType")
 		}
 	case 0 == 0: // ErrorReportingSystemCategoryTypeReserved
-		if _child, err = (&_ErrorReportingSystemCategoryTypeReserved{}).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
+		if _child, err = new(_ErrorReportingSystemCategoryTypeReserved).parse(ctx, readBuffer, m, errorReportingSystemCategoryClass); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ErrorReportingSystemCategoryTypeReserved for type-switch of ErrorReportingSystemCategoryType")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go
index 36585d491a..57b54c036e 100644
--- a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go
@@ -140,75 +140,75 @@ func (m *_IdentifyReplyCommand) parse(ctx context.Context, readBuffer utils.Read
 	var _child IdentifyReplyCommand
 	switch {
 	case attribute == Attribute_Manufacturer: // IdentifyReplyCommandManufacturer
-		if _child, err = (&_IdentifyReplyCommandManufacturer{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandManufacturer).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandManufacturer for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_Type: // IdentifyReplyCommandType
-		if _child, err = (&_IdentifyReplyCommandType{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandType).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandType for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_FirmwareVersion: // IdentifyReplyCommandFirmwareVersion
-		if _child, err = (&_IdentifyReplyCommandFirmwareVersion{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandFirmwareVersion).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandFirmwareVersion for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_Summary: // IdentifyReplyCommandSummary
-		if _child, err = (&_IdentifyReplyCommandSummary{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandSummary).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandSummary for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_ExtendedDiagnosticSummary: // IdentifyReplyCommandExtendedDiagnosticSummary
-		if _child, err = (&_IdentifyReplyCommandExtendedDiagnosticSummary{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandExtendedDiagnosticSummary).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandExtendedDiagnosticSummary for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_NetworkTerminalLevels: // IdentifyReplyCommandNetworkTerminalLevels
-		if _child, err = (&_IdentifyReplyCommandNetworkTerminalLevels{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandNetworkTerminalLevels).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandNetworkTerminalLevels for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_TerminalLevel: // IdentifyReplyCommandTerminalLevels
-		if _child, err = (&_IdentifyReplyCommandTerminalLevels{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandTerminalLevels).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandTerminalLevels for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_NetworkVoltage: // IdentifyReplyCommandNetworkVoltage
-		if _child, err = (&_IdentifyReplyCommandNetworkVoltage{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandNetworkVoltage).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandNetworkVoltage for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_GAVValuesCurrent: // IdentifyReplyCommandGAVValuesCurrent
-		if _child, err = (&_IdentifyReplyCommandGAVValuesCurrent{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandGAVValuesCurrent).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandGAVValuesCurrent for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_GAVValuesStored: // IdentifyReplyCommandGAVValuesStored
-		if _child, err = (&_IdentifyReplyCommandGAVValuesStored{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandGAVValuesStored).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandGAVValuesStored for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_GAVPhysicalAddresses: // IdentifyReplyCommandGAVPhysicalAddresses
-		if _child, err = (&_IdentifyReplyCommandGAVPhysicalAddresses{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandGAVPhysicalAddresses).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandGAVPhysicalAddresses for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_LogicalAssignment: // IdentifyReplyCommandLogicalAssignment
-		if _child, err = (&_IdentifyReplyCommandLogicalAssignment{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandLogicalAssignment).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandLogicalAssignment for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_Delays: // IdentifyReplyCommandDelays
-		if _child, err = (&_IdentifyReplyCommandDelays{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandDelays).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandDelays for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_MinimumLevels: // IdentifyReplyCommandMinimumLevels
-		if _child, err = (&_IdentifyReplyCommandMinimumLevels{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandMinimumLevels).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandMinimumLevels for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_MaximumLevels: // IdentifyReplyCommandMaximumLevels
-		if _child, err = (&_IdentifyReplyCommandMaximumLevels{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandMaximumLevels).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandMaximumLevels for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_CurrentSenseLevels: // IdentifyReplyCommandCurrentSenseLevels
-		if _child, err = (&_IdentifyReplyCommandCurrentSenseLevels{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandCurrentSenseLevels).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandCurrentSenseLevels for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_OutputUnitSummary: // IdentifyReplyCommandOutputUnitSummary
-		if _child, err = (&_IdentifyReplyCommandOutputUnitSummary{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandOutputUnitSummary).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandOutputUnitSummary for type-switch of IdentifyReplyCommand")
 		}
 	case attribute == Attribute_DSIStatus: // IdentifyReplyCommandDSIStatus
-		if _child, err = (&_IdentifyReplyCommandDSIStatus{}).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
+		if _child, err = new(_IdentifyReplyCommandDSIStatus).parse(ctx, readBuffer, m, attribute, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentifyReplyCommandDSIStatus for type-switch of IdentifyReplyCommand")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/LevelInformation.go b/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
index 9bb77354cd..d04138e7ca 100644
--- a/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
+++ b/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
@@ -307,15 +307,15 @@ func (m *_LevelInformation) parse(ctx context.Context, readBuffer utils.ReadBuff
 	var _child LevelInformation
 	switch {
 	case isAbsent == bool(true): // LevelInformationAbsent
-		if _child, err = (&_LevelInformationAbsent{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LevelInformationAbsent).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LevelInformationAbsent for type-switch of LevelInformation")
 		}
 	case 0 == 0 && isCorrupted == bool(true): // LevelInformationCorrupted
-		if _child, err = (&_LevelInformationCorrupted{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LevelInformationCorrupted).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LevelInformationCorrupted for type-switch of LevelInformation")
 		}
 	case 0 == 0: // LevelInformationNormal
-		if _child, err = (&_LevelInformationNormal{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LevelInformationNormal).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LevelInformationNormal for type-switch of LevelInformation")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/LightingData.go b/plc4go/protocols/cbus/readwrite/model/LightingData.go
index bfa894d87a..a79129eccd 100644
--- a/plc4go/protocols/cbus/readwrite/model/LightingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/LightingData.go
@@ -194,23 +194,23 @@ func (m *_LightingData) parse(ctx context.Context, readBuffer utils.ReadBuffer)
 	var _child LightingData
 	switch {
 	case commandType == LightingCommandType_OFF: // LightingDataOff
-		if _child, err = (&_LightingDataOff{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LightingDataOff).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LightingDataOff for type-switch of LightingData")
 		}
 	case commandType == LightingCommandType_ON: // LightingDataOn
-		if _child, err = (&_LightingDataOn{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LightingDataOn).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LightingDataOn for type-switch of LightingData")
 		}
 	case commandType == LightingCommandType_RAMP_TO_LEVEL: // LightingDataRampToLevel
-		if _child, err = (&_LightingDataRampToLevel{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LightingDataRampToLevel).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LightingDataRampToLevel for type-switch of LightingData")
 		}
 	case commandType == LightingCommandType_TERMINATE_RAMP: // LightingDataTerminateRamp
-		if _child, err = (&_LightingDataTerminateRamp{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LightingDataTerminateRamp).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LightingDataTerminateRamp for type-switch of LightingData")
 		}
 	case commandType == LightingCommandType_LABEL: // LightingDataLabel
-		if _child, err = (&_LightingDataLabel{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_LightingDataLabel).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LightingDataLabel for type-switch of LightingData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/MeasurementData.go b/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
index 982d02480a..4c83d1beb4 100644
--- a/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
@@ -194,7 +194,7 @@ func (m *_MeasurementData) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child MeasurementData
 	switch {
 	case commandType == MeasurementCommandType_MEASUREMENT_EVENT: // MeasurementDataChannelMeasurementData
-		if _child, err = (&_MeasurementDataChannelMeasurementData{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeasurementDataChannelMeasurementData).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeasurementDataChannelMeasurementData for type-switch of MeasurementData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go b/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
index 9cb6da7c8b..a4d660cd30 100644
--- a/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
@@ -210,87 +210,87 @@ func (m *_MediaTransportControlData) parse(ctx context.Context, readBuffer utils
 	var _child MediaTransportControlData
 	switch {
 	case commandType == MediaTransportControlCommandType_STOP: // MediaTransportControlDataStop
-		if _child, err = (&_MediaTransportControlDataStop{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataStop).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataStop for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_PLAY: // MediaTransportControlDataPlay
-		if _child, err = (&_MediaTransportControlDataPlay{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataPlay).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataPlay for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_PAUSE_RESUME: // MediaTransportControlDataPauseResume
-		if _child, err = (&_MediaTransportControlDataPauseResume{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataPauseResume).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataPauseResume for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_SELECT_CATEGORY: // MediaTransportControlDataSetCategory
-		if _child, err = (&_MediaTransportControlDataSetCategory{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataSetCategory).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataSetCategory for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_SELECT_SELECTION: // MediaTransportControlDataSetSelection
-		if _child, err = (&_MediaTransportControlDataSetSelection{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataSetSelection).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataSetSelection for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_SELECT_TRACK: // MediaTransportControlDataSetTrack
-		if _child, err = (&_MediaTransportControlDataSetTrack{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataSetTrack).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataSetTrack for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_SHUFFLE_ON_OFF: // MediaTransportControlDataShuffleOnOff
-		if _child, err = (&_MediaTransportControlDataShuffleOnOff{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataShuffleOnOff).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataShuffleOnOff for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_REPEAT_ON_OFF: // MediaTransportControlDataRepeatOnOff
-		if _child, err = (&_MediaTransportControlDataRepeatOnOff{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataRepeatOnOff).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataRepeatOnOff for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_NEXT_PREVIOUS_CATEGORY: // MediaTransportControlDataNextPreviousCategory
-		if _child, err = (&_MediaTransportControlDataNextPreviousCategory{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataNextPreviousCategory).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataNextPreviousCategory for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_NEXT_PREVIOUS_SELECTION: // MediaTransportControlDataNextPreviousSelection
-		if _child, err = (&_MediaTransportControlDataNextPreviousSelection{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataNextPreviousSelection).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataNextPreviousSelection for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_NEXT_PREVIOUS_TRACK: // MediaTransportControlDataNextPreviousTrack
-		if _child, err = (&_MediaTransportControlDataNextPreviousTrack{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataNextPreviousTrack).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataNextPreviousTrack for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_FAST_FORWARD: // MediaTransportControlDataFastForward
-		if _child, err = (&_MediaTransportControlDataFastForward{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataFastForward).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataFastForward for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_REWIND: // MediaTransportControlDataRewind
-		if _child, err = (&_MediaTransportControlDataRewind{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataRewind).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataRewind for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_SOURCE_POWER_CONTROL: // MediaTransportControlDataSourcePowerControl
-		if _child, err = (&_MediaTransportControlDataSourcePowerControl{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataSourcePowerControl).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataSourcePowerControl for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_TOTAL_TRACKS: // MediaTransportControlDataTotalTracks
-		if _child, err = (&_MediaTransportControlDataTotalTracks{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataTotalTracks).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataTotalTracks for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_STATUS_REQUEST: // MediaTransportControlDataStatusRequest
-		if _child, err = (&_MediaTransportControlDataStatusRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataStatusRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataStatusRequest for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_ENUMERATE_CATEGORIES_SELECTIONS_TRACKS: // MediaTransportControlDataEnumerateCategoriesSelectionTracks
-		if _child, err = (&_MediaTransportControlDataEnumerateCategoriesSelectionTracks{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataEnumerateCategoriesSelectionTracks).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataEnumerateCategoriesSelectionTracks for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_ENUMERATION_SIZE: // MediaTransportControlDataEnumerationsSize
-		if _child, err = (&_MediaTransportControlDataEnumerationsSize{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MediaTransportControlDataEnumerationsSize).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataEnumerationsSize for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_TRACK_NAME: // MediaTransportControlDataTrackName
-		if _child, err = (&_MediaTransportControlDataTrackName{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_MediaTransportControlDataTrackName).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataTrackName for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_SELECTION_NAME: // MediaTransportControlDataSelectionName
-		if _child, err = (&_MediaTransportControlDataSelectionName{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_MediaTransportControlDataSelectionName).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataSelectionName for type-switch of MediaTransportControlData")
 		}
 	case commandType == MediaTransportControlCommandType_CATEGORY_NAME: // MediaTransportControlDataCategoryName
-		if _child, err = (&_MediaTransportControlDataCategoryName{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_MediaTransportControlDataCategoryName).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MediaTransportControlDataCategoryName for type-switch of MediaTransportControlData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/MeteringData.go b/plc4go/protocols/cbus/readwrite/model/MeteringData.go
index 9c9540f403..25c5f6de6b 100644
--- a/plc4go/protocols/cbus/readwrite/model/MeteringData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MeteringData.go
@@ -212,43 +212,43 @@ func (m *_MeteringData) parse(ctx context.Context, readBuffer utils.ReadBuffer)
 	var _child MeteringData
 	switch {
 	case commandType == MeteringCommandType_EVENT && argument == 0x01: // MeteringDataMeasureElectricity
-		if _child, err = (&_MeteringDataMeasureElectricity{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataMeasureElectricity).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataMeasureElectricity for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x02: // MeteringDataMeasureGas
-		if _child, err = (&_MeteringDataMeasureGas{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataMeasureGas).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataMeasureGas for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x03: // MeteringDataMeasureDrinkingWater
-		if _child, err = (&_MeteringDataMeasureDrinkingWater{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataMeasureDrinkingWater).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataMeasureDrinkingWater for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x04: // MeteringDataMeasureOtherWater
-		if _child, err = (&_MeteringDataMeasureOtherWater{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataMeasureOtherWater).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataMeasureOtherWater for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x05: // MeteringDataMeasureOil
-		if _child, err = (&_MeteringDataMeasureOil{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataMeasureOil).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataMeasureOil for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x81: // MeteringDataElectricityConsumption
-		if _child, err = (&_MeteringDataElectricityConsumption{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataElectricityConsumption).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataElectricityConsumption for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x82: // MeteringDataGasConsumption
-		if _child, err = (&_MeteringDataGasConsumption{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataGasConsumption).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataGasConsumption for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x83: // MeteringDataDrinkingWaterConsumption
-		if _child, err = (&_MeteringDataDrinkingWaterConsumption{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataDrinkingWaterConsumption).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataDrinkingWaterConsumption for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x84: // MeteringDataOtherWaterConsumption
-		if _child, err = (&_MeteringDataOtherWaterConsumption{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataOtherWaterConsumption).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataOtherWaterConsumption for type-switch of MeteringData")
 		}
 	case commandType == MeteringCommandType_EVENT && argument == 0x85: // MeteringDataOilConsumption
-		if _child, err = (&_MeteringDataOilConsumption{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MeteringDataOilConsumption).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MeteringDataOilConsumption for type-switch of MeteringData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go b/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
index 9f388b6c89..1fdb77220e 100644
--- a/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
+++ b/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
@@ -165,11 +165,11 @@ func (m *_MonitoredSAL) parse(ctx context.Context, readBuffer utils.ReadBuffer,
 	var _child MonitoredSAL
 	switch {
 	case salType == 0x05: // MonitoredSALLongFormSmartMode
-		if _child, err = (&_MonitoredSALLongFormSmartMode{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_MonitoredSALLongFormSmartMode).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredSALLongFormSmartMode for type-switch of MonitoredSAL")
 		}
 	case 0 == 0: // MonitoredSALShortFormBasicMode
-		if _child, err = (&_MonitoredSALShortFormBasicMode{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_MonitoredSALShortFormBasicMode).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredSALShortFormBasicMode for type-switch of MonitoredSAL")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/ParameterValue.go b/plc4go/protocols/cbus/readwrite/model/ParameterValue.go
index d998b8a606..b368203152 100644
--- a/plc4go/protocols/cbus/readwrite/model/ParameterValue.go
+++ b/plc4go/protocols/cbus/readwrite/model/ParameterValue.go
@@ -140,47 +140,47 @@ func (m *_ParameterValue) parse(ctx context.Context, readBuffer utils.ReadBuffer
 	var _child ParameterValue
 	switch {
 	case parameterType == ParameterType_APPLICATION_ADDRESS_1: // ParameterValueApplicationAddress1
-		if _child, err = (&_ParameterValueApplicationAddress1{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueApplicationAddress1).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueApplicationAddress1 for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_APPLICATION_ADDRESS_2: // ParameterValueApplicationAddress2
-		if _child, err = (&_ParameterValueApplicationAddress2{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueApplicationAddress2).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueApplicationAddress2 for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_INTERFACE_OPTIONS_1: // ParameterValueInterfaceOptions1
-		if _child, err = (&_ParameterValueInterfaceOptions1{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueInterfaceOptions1).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueInterfaceOptions1 for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_BAUD_RATE_SELECTOR: // ParameterValueBaudRateSelector
-		if _child, err = (&_ParameterValueBaudRateSelector{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueBaudRateSelector).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueBaudRateSelector for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_INTERFACE_OPTIONS_2: // ParameterValueInterfaceOptions2
-		if _child, err = (&_ParameterValueInterfaceOptions2{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueInterfaceOptions2).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueInterfaceOptions2 for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_INTERFACE_OPTIONS_1_POWER_UP_SETTINGS: // ParameterValueInterfaceOptions1PowerUpSettings
-		if _child, err = (&_ParameterValueInterfaceOptions1PowerUpSettings{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueInterfaceOptions1PowerUpSettings).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueInterfaceOptions1PowerUpSettings for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_INTERFACE_OPTIONS_3: // ParameterValueInterfaceOptions3
-		if _child, err = (&_ParameterValueInterfaceOptions3{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueInterfaceOptions3).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueInterfaceOptions3 for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_CUSTOM_MANUFACTURER: // ParameterValueCustomManufacturer
-		if _child, err = (&_ParameterValueCustomManufacturer{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueCustomManufacturer).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueCustomManufacturer for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_SERIAL_NUMBER: // ParameterValueSerialNumber
-		if _child, err = (&_ParameterValueSerialNumber{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueSerialNumber).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueSerialNumber for type-switch of ParameterValue")
 		}
 	case parameterType == ParameterType_CUSTOM_TYPE: // ParameterValueCustomTypes
-		if _child, err = (&_ParameterValueCustomTypes{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueCustomTypes).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueCustomTypes for type-switch of ParameterValue")
 		}
 	case 0 == 0: // ParameterValueRaw
-		if _child, err = (&_ParameterValueRaw{}).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
+		if _child, err = new(_ParameterValueRaw).parse(ctx, readBuffer, m, parameterType, numBytes); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterValueRaw for type-switch of ParameterValue")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/Reply.go b/plc4go/protocols/cbus/readwrite/model/Reply.go
index a46c4ebefd..e0570239c4 100644
--- a/plc4go/protocols/cbus/readwrite/model/Reply.go
+++ b/plc4go/protocols/cbus/readwrite/model/Reply.go
@@ -168,15 +168,15 @@ func (m *_Reply) parse(ctx context.Context, readBuffer utils.ReadBuffer, cBusOpt
 	var _child Reply
 	switch {
 	case peekedByte == 0x2B: // PowerUpReply
-		if _child, err = (&_PowerUpReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_PowerUpReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PowerUpReply for type-switch of Reply")
 		}
 	case peekedByte == 0x3D: // ParameterChangeReply
-		if _child, err = (&_ParameterChangeReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_ParameterChangeReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParameterChangeReply for type-switch of Reply")
 		}
 	case 0 == 0: // ReplyEncodedReply
-		if _child, err = (&_ReplyEncodedReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_ReplyEncodedReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReplyEncodedReply for type-switch of Reply")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go b/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
index b5773aea63..acbbed094a 100644
--- a/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
+++ b/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
@@ -196,15 +196,15 @@ func (m *_ReplyOrConfirmation) parse(ctx context.Context, readBuffer utils.ReadB
 	var _child ReplyOrConfirmation
 	switch {
 	case isAlpha == bool(false) && peekedByte == 0x21: // ServerErrorReply
-		if _child, err = (&_ServerErrorReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_ServerErrorReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ServerErrorReply for type-switch of ReplyOrConfirmation")
 		}
 	case isAlpha == bool(true): // ReplyOrConfirmationConfirmation
-		if _child, err = (&_ReplyOrConfirmationConfirmation{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_ReplyOrConfirmationConfirmation).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReplyOrConfirmationConfirmation for type-switch of ReplyOrConfirmation")
 		}
 	case isAlpha == bool(false): // ReplyOrConfirmationReply
-		if _child, err = (&_ReplyOrConfirmationReply{}).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
+		if _child, err = new(_ReplyOrConfirmationReply).parse(ctx, readBuffer, m, cBusOptions, requestContext); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReplyOrConfirmationReply for type-switch of ReplyOrConfirmation")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/Request.go b/plc4go/protocols/cbus/readwrite/model/Request.go
index 2b8076f4f1..85354a65cb 100644
--- a/plc4go/protocols/cbus/readwrite/model/Request.go
+++ b/plc4go/protocols/cbus/readwrite/model/Request.go
@@ -259,31 +259,31 @@ func (m *_Request) parse(ctx context.Context, readBuffer utils.ReadBuffer, cBusO
 	var _child Request
 	switch {
 	case actualPeek == RequestType_SMART_CONNECT_SHORTCUT: // RequestSmartConnectShortcut
-		if _child, err = (&_RequestSmartConnectShortcut{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestSmartConnectShortcut).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestSmartConnectShortcut for type-switch of Request")
 		}
 	case actualPeek == RequestType_RESET: // RequestReset
-		if _child, err = (&_RequestReset{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestReset).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestReset for type-switch of Request")
 		}
 	case actualPeek == RequestType_DIRECT_COMMAND: // RequestDirectCommandAccess
-		if _child, err = (&_RequestDirectCommandAccess{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestDirectCommandAccess).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestDirectCommandAccess for type-switch of Request")
 		}
 	case actualPeek == RequestType_REQUEST_COMMAND: // RequestCommand
-		if _child, err = (&_RequestCommand{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestCommand).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestCommand for type-switch of Request")
 		}
 	case actualPeek == RequestType_NULL: // RequestNull
-		if _child, err = (&_RequestNull{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestNull).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestNull for type-switch of Request")
 		}
 	case actualPeek == RequestType_EMPTY: // RequestEmpty
-		if _child, err = (&_RequestEmpty{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestEmpty).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestEmpty for type-switch of Request")
 		}
 	case 0 == 0: // RequestObsolete
-		if _child, err = (&_RequestObsolete{}).parse(ctx, readBuffer, m, cBusOptions); err != nil {
+		if _child, err = new(_RequestObsolete).parse(ctx, readBuffer, m, cBusOptions); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestObsolete for type-switch of Request")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/SALData.go b/plc4go/protocols/cbus/readwrite/model/SALData.go
index 77ce14b5a6..cdc4acbcbf 100644
--- a/plc4go/protocols/cbus/readwrite/model/SALData.go
+++ b/plc4go/protocols/cbus/readwrite/model/SALData.go
@@ -159,95 +159,95 @@ func (m *_SALData) parse(ctx context.Context, readBuffer utils.ReadBuffer, appli
 	var _child SALData
 	switch {
 	case applicationId == ApplicationId_RESERVED: // SALDataReserved
-		if _child, err = (&_SALDataReserved{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataReserved).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataReserved for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_FREE_USAGE: // SALDataFreeUsage
-		if _child, err = (&_SALDataFreeUsage{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataFreeUsage).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataFreeUsage for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_TEMPERATURE_BROADCAST: // SALDataTemperatureBroadcast
-		if _child, err = (&_SALDataTemperatureBroadcast{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataTemperatureBroadcast).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataTemperatureBroadcast for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_ROOM_CONTROL_SYSTEM: // SALDataRoomControlSystem
-		if _child, err = (&_SALDataRoomControlSystem{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataRoomControlSystem).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataRoomControlSystem for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_LIGHTING: // SALDataLighting
-		if _child, err = (&_SALDataLighting{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataLighting).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataLighting for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_VENTILATION: // SALDataVentilation
-		if _child, err = (&_SALDataVentilation{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataVentilation).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataVentilation for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_IRRIGATION_CONTROL: // SALDataIrrigationControl
-		if _child, err = (&_SALDataIrrigationControl{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataIrrigationControl).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataIrrigationControl for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_POOLS_SPAS_PONDS_FOUNTAINS_CONTROL: // SALDataPoolsSpasPondsFountainsControl
-		if _child, err = (&_SALDataPoolsSpasPondsFountainsControl{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataPoolsSpasPondsFountainsControl).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataPoolsSpasPondsFountainsControl for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_HEATING: // SALDataHeating
-		if _child, err = (&_SALDataHeating{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataHeating).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataHeating for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_AIR_CONDITIONING: // SALDataAirConditioning
-		if _child, err = (&_SALDataAirConditioning{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataAirConditioning).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataAirConditioning for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_TRIGGER_CONTROL: // SALDataTriggerControl
-		if _child, err = (&_SALDataTriggerControl{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataTriggerControl).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataTriggerControl for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_ENABLE_CONTROL: // SALDataEnableControl
-		if _child, err = (&_SALDataEnableControl{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataEnableControl).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataEnableControl for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_AUDIO_AND_VIDEO: // SALDataAudioAndVideo
-		if _child, err = (&_SALDataAudioAndVideo{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataAudioAndVideo).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataAudioAndVideo for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_SECURITY: // SALDataSecurity
-		if _child, err = (&_SALDataSecurity{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataSecurity).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataSecurity for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_METERING: // SALDataMetering
-		if _child, err = (&_SALDataMetering{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataMetering).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataMetering for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_ACCESS_CONTROL: // SALDataAccessControl
-		if _child, err = (&_SALDataAccessControl{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataAccessControl).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataAccessControl for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_CLOCK_AND_TIMEKEEPING: // SALDataClockAndTimekeeping
-		if _child, err = (&_SALDataClockAndTimekeeping{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataClockAndTimekeeping).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataClockAndTimekeeping for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_TELEPHONY_STATUS_AND_CONTROL: // SALDataTelephonyStatusAndControl
-		if _child, err = (&_SALDataTelephonyStatusAndControl{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataTelephonyStatusAndControl).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataTelephonyStatusAndControl for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_MEASUREMENT: // SALDataMeasurement
-		if _child, err = (&_SALDataMeasurement{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataMeasurement).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataMeasurement for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_TESTING: // SALDataTesting
-		if _child, err = (&_SALDataTesting{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataTesting).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataTesting for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_MEDIA_TRANSPORT_CONTROL: // SALDataMediaTransport
-		if _child, err = (&_SALDataMediaTransport{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataMediaTransport).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataMediaTransport for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_ERROR_REPORTING: // SALDataErrorReporting
-		if _child, err = (&_SALDataErrorReporting{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataErrorReporting).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataErrorReporting for type-switch of SALData")
 		}
 	case applicationId == ApplicationId_HVAC_ACTUATOR: // SALDataHvacActuator
-		if _child, err = (&_SALDataHvacActuator{}).parse(ctx, readBuffer, m, applicationId); err != nil {
+		if _child, err = new(_SALDataHvacActuator).parse(ctx, readBuffer, m, applicationId); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SALDataHvacActuator for type-switch of SALData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/SecurityData.go b/plc4go/protocols/cbus/readwrite/model/SecurityData.go
index 073b0a7b31..4871ca237f 100644
--- a/plc4go/protocols/cbus/readwrite/model/SecurityData.go
+++ b/plc4go/protocols/cbus/readwrite/model/SecurityData.go
@@ -212,195 +212,195 @@ func (m *_SecurityData) parse(ctx context.Context, readBuffer utils.ReadBuffer)
 	var _child SecurityData
 	switch {
 	case commandType == SecurityCommandType_ON && argument == 0x80: // SecurityDataSystemArmedDisarmed
-		if _child, err = (&_SecurityDataSystemArmedDisarmed{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataSystemArmedDisarmed).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataSystemArmedDisarmed for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x80: // SecurityDataSystemDisarmed
-		if _child, err = (&_SecurityDataSystemDisarmed{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataSystemDisarmed).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataSystemDisarmed for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x81: // SecurityDataExitDelayStarted
-		if _child, err = (&_SecurityDataExitDelayStarted{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataExitDelayStarted).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataExitDelayStarted for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x82: // SecurityDataEntryDelayStarted
-		if _child, err = (&_SecurityDataEntryDelayStarted{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataEntryDelayStarted).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataEntryDelayStarted for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x83: // SecurityDataAlarmOn
-		if _child, err = (&_SecurityDataAlarmOn{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataAlarmOn).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataAlarmOn for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x83: // SecurityDataAlarmOff
-		if _child, err = (&_SecurityDataAlarmOff{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataAlarmOff).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataAlarmOff for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x84: // SecurityDataTamperOn
-		if _child, err = (&_SecurityDataTamperOn{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataTamperOn).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataTamperOn for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x84: // SecurityDataTamperOff
-		if _child, err = (&_SecurityDataTamperOff{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataTamperOff).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataTamperOff for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x85: // SecurityDataPanicActivated
-		if _child, err = (&_SecurityDataPanicActivated{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataPanicActivated).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataPanicActivated for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x85: // SecurityDataPanicCleared
-		if _child, err = (&_SecurityDataPanicCleared{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataPanicCleared).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataPanicCleared for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x86: // SecurityDataZoneUnsealed
-		if _child, err = (&_SecurityDataZoneUnsealed{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataZoneUnsealed).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneUnsealed for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x87: // SecurityDataZoneSealed
-		if _child, err = (&_SecurityDataZoneSealed{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataZoneSealed).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneSealed for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x88: // SecurityDataZoneOpen
-		if _child, err = (&_SecurityDataZoneOpen{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataZoneOpen).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneOpen for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x89: // SecurityDataZoneShort
-		if _child, err = (&_SecurityDataZoneShort{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataZoneShort).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneShort for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x89: // SecurityDataZoneIsolated
-		if _child, err = (&_SecurityDataZoneIsolated{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataZoneIsolated).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneIsolated for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x8B: // SecurityDataLowBatteryDetected
-		if _child, err = (&_SecurityDataLowBatteryDetected{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataLowBatteryDetected).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLowBatteryDetected for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x8B: // SecurityDataLowBatteryCorrected
-		if _child, err = (&_SecurityDataLowBatteryCorrected{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataLowBatteryCorrected).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLowBatteryCorrected for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x8C: // SecurityDataLowBatteryCharging
-		if _child, err = (&_SecurityDataLowBatteryCharging{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataLowBatteryCharging).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLowBatteryCharging for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x8D: // SecurityDataZoneName
-		if _child, err = (&_SecurityDataZoneName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataZoneName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataZoneName for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x8E: // SecurityDataStatusReport1
-		if _child, err = (&_SecurityDataStatusReport1{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataStatusReport1).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatusReport1 for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x8F: // SecurityDataStatusReport2
-		if _child, err = (&_SecurityDataStatusReport2{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataStatusReport2).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatusReport2 for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x90: // SecurityDataPasswordEntryStatus
-		if _child, err = (&_SecurityDataPasswordEntryStatus{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataPasswordEntryStatus).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataPasswordEntryStatus for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x91: // SecurityDataMainsFailure
-		if _child, err = (&_SecurityDataMainsFailure{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataMainsFailure).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataMainsFailure for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x91: // SecurityDataMainsRestoredOrApplied
-		if _child, err = (&_SecurityDataMainsRestoredOrApplied{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataMainsRestoredOrApplied).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataMainsRestoredOrApplied for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x92: // SecurityDataArmReadyNotReady
-		if _child, err = (&_SecurityDataArmReadyNotReady{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataArmReadyNotReady).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmReadyNotReady for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0x93: // SecurityDataCurrentAlarmType
-		if _child, err = (&_SecurityDataCurrentAlarmType{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataCurrentAlarmType).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataCurrentAlarmType for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x94: // SecurityDataLineCutAlarmRaised
-		if _child, err = (&_SecurityDataLineCutAlarmRaised{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataLineCutAlarmRaised).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLineCutAlarmRaised for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x94: // SecurityDataLineCutAlarmCleared
-		if _child, err = (&_SecurityDataLineCutAlarmCleared{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataLineCutAlarmCleared).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataLineCutAlarmCleared for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x95: // SecurityDataArmFailedRaised
-		if _child, err = (&_SecurityDataArmFailedRaised{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataArmFailedRaised).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmFailedRaised for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x95: // SecurityDataArmFailedCleared
-		if _child, err = (&_SecurityDataArmFailedCleared{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataArmFailedCleared).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmFailedCleared for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x96: // SecurityDataFireAlarmRaised
-		if _child, err = (&_SecurityDataFireAlarmRaised{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataFireAlarmRaised).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataFireAlarmRaised for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x96: // SecurityDataFireAlarmCleared
-		if _child, err = (&_SecurityDataFireAlarmCleared{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataFireAlarmCleared).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataFireAlarmCleared for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x97: // SecurityDataGasAlarmRaised
-		if _child, err = (&_SecurityDataGasAlarmRaised{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataGasAlarmRaised).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataGasAlarmRaised for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x97: // SecurityDataGasAlarmCleared
-		if _child, err = (&_SecurityDataGasAlarmCleared{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataGasAlarmCleared).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataGasAlarmCleared for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0x98: // SecurityDataOtherAlarmRaised
-		if _child, err = (&_SecurityDataOtherAlarmRaised{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataOtherAlarmRaised).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOtherAlarmRaised for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0x98: // SecurityDataOtherAlarmCleared
-		if _child, err = (&_SecurityDataOtherAlarmCleared{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataOtherAlarmCleared).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOtherAlarmCleared for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0xA0: // SecurityDataStatus1Request
-		if _child, err = (&_SecurityDataStatus1Request{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataStatus1Request).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatus1Request for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0xA1: // SecurityDataStatus2Request
-		if _child, err = (&_SecurityDataStatus2Request{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataStatus2Request).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataStatus2Request for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0xA2: // SecurityDataArmSystem
-		if _child, err = (&_SecurityDataArmSystem{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataArmSystem).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataArmSystem for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0xA3: // SecurityDataRaiseTamper
-		if _child, err = (&_SecurityDataRaiseTamper{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataRaiseTamper).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataRaiseTamper for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF && argument == 0xA3: // SecurityDataDropTamper
-		if _child, err = (&_SecurityDataDropTamper{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataDropTamper).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataDropTamper for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0xA4: // SecurityDataRaiseAlarm
-		if _child, err = (&_SecurityDataRaiseAlarm{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataRaiseAlarm).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataRaiseAlarm for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0xA5: // SecurityDataEmulatedKeypad
-		if _child, err = (&_SecurityDataEmulatedKeypad{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataEmulatedKeypad).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataEmulatedKeypad for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON && argument == 0xA6: // SecurityDataDisplayMessage
-		if _child, err = (&_SecurityDataDisplayMessage{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_SecurityDataDisplayMessage).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataDisplayMessage for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT && argument == 0xA7: // SecurityDataRequestZoneName
-		if _child, err = (&_SecurityDataRequestZoneName{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SecurityDataRequestZoneName).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataRequestZoneName for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_OFF: // SecurityDataOff
-		if _child, err = (&_SecurityDataOff{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_SecurityDataOff).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOff for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_ON: // SecurityDataOn
-		if _child, err = (&_SecurityDataOn{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_SecurityDataOn).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataOn for type-switch of SecurityData")
 		}
 	case commandType == SecurityCommandType_EVENT: // SecurityDataEvent
-		if _child, err = (&_SecurityDataEvent{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_SecurityDataEvent).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityDataEvent for type-switch of SecurityData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/StatusRequest.go b/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
index 51acf0b622..aa789a2c94 100644
--- a/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
+++ b/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
@@ -160,15 +160,15 @@ func (m *_StatusRequest) parse(ctx context.Context, readBuffer utils.ReadBuffer)
 	var _child StatusRequest
 	switch {
 	case statusType == 0x7A: // StatusRequestBinaryState
-		if _child, err = (&_StatusRequestBinaryState{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_StatusRequestBinaryState).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type StatusRequestBinaryState for type-switch of StatusRequest")
 		}
 	case statusType == 0xFA: // StatusRequestBinaryStateDeprecated
-		if _child, err = (&_StatusRequestBinaryStateDeprecated{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_StatusRequestBinaryStateDeprecated).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type StatusRequestBinaryStateDeprecated for type-switch of StatusRequest")
 		}
 	case statusType == 0x73: // StatusRequestLevel
-		if _child, err = (&_StatusRequestLevel{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_StatusRequestLevel).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type StatusRequestLevel for type-switch of StatusRequest")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/TelephonyData.go b/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
index 45ec97e589..100e3e360d 100644
--- a/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
+++ b/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
@@ -212,51 +212,51 @@ func (m *_TelephonyData) parse(ctx context.Context, readBuffer utils.ReadBuffer)
 	var _child TelephonyData
 	switch {
 	case commandType == TelephonyCommandType_EVENT && argument == 0x01: // TelephonyDataLineOnHook
-		if _child, err = (&_TelephonyDataLineOnHook{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataLineOnHook).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataLineOnHook for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x02: // TelephonyDataLineOffHook
-		if _child, err = (&_TelephonyDataLineOffHook{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_TelephonyDataLineOffHook).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataLineOffHook for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x03: // TelephonyDataDialOutFailure
-		if _child, err = (&_TelephonyDataDialOutFailure{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataDialOutFailure).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataDialOutFailure for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x04: // TelephonyDataDialInFailure
-		if _child, err = (&_TelephonyDataDialInFailure{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataDialInFailure).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataDialInFailure for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x05: // TelephonyDataRinging
-		if _child, err = (&_TelephonyDataRinging{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_TelephonyDataRinging).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataRinging for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x06: // TelephonyDataRecallLastNumber
-		if _child, err = (&_TelephonyDataRecallLastNumber{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_TelephonyDataRecallLastNumber).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataRecallLastNumber for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x07: // TelephonyDataInternetConnectionRequestMade
-		if _child, err = (&_TelephonyDataInternetConnectionRequestMade{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataInternetConnectionRequestMade).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataInternetConnectionRequestMade for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x80: // TelephonyDataIsolateSecondaryOutlet
-		if _child, err = (&_TelephonyDataIsolateSecondaryOutlet{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataIsolateSecondaryOutlet).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataIsolateSecondaryOutlet for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x81: // TelephonyDataRecallLastNumberRequest
-		if _child, err = (&_TelephonyDataRecallLastNumberRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataRecallLastNumberRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataRecallLastNumberRequest for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x82: // TelephonyDataRejectIncomingCall
-		if _child, err = (&_TelephonyDataRejectIncomingCall{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataRejectIncomingCall).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataRejectIncomingCall for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x83: // TelephonyDataDivert
-		if _child, err = (&_TelephonyDataDivert{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_TelephonyDataDivert).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataDivert for type-switch of TelephonyData")
 		}
 	case commandType == TelephonyCommandType_EVENT && argument == 0x84: // TelephonyDataClearDiversion
-		if _child, err = (&_TelephonyDataClearDiversion{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TelephonyDataClearDiversion).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TelephonyDataClearDiversion for type-switch of TelephonyData")
 		}
 	default:
diff --git a/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go b/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
index 4e6c3ce27c..909f90d305 100644
--- a/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
@@ -227,23 +227,23 @@ func (m *_TriggerControlData) parse(ctx context.Context, readBuffer utils.ReadBu
 	var _child TriggerControlData
 	switch {
 	case commandType == TriggerControlCommandType_TRIGGER_EVENT: // TriggerControlDataTriggerEvent
-		if _child, err = (&_TriggerControlDataTriggerEvent{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TriggerControlDataTriggerEvent).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TriggerControlDataTriggerEvent for type-switch of TriggerControlData")
 		}
 	case commandType == TriggerControlCommandType_TRIGGER_MIN: // TriggerControlDataTriggerMin
-		if _child, err = (&_TriggerControlDataTriggerMin{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TriggerControlDataTriggerMin).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TriggerControlDataTriggerMin for type-switch of TriggerControlData")
 		}
 	case commandType == TriggerControlCommandType_TRIGGER_MAX: // TriggerControlDataTriggerMax
-		if _child, err = (&_TriggerControlDataTriggerMax{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TriggerControlDataTriggerMax).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TriggerControlDataTriggerMax for type-switch of TriggerControlData")
 		}
 	case commandType == TriggerControlCommandType_INDICATOR_KILL: // TriggerControlDataIndicatorKill
-		if _child, err = (&_TriggerControlDataIndicatorKill{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TriggerControlDataIndicatorKill).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TriggerControlDataIndicatorKill for type-switch of TriggerControlData")
 		}
 	case commandType == TriggerControlCommandType_LABEL: // TriggerControlDataLabel
-		if _child, err = (&_TriggerControlDataLabel{}).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
+		if _child, err = new(_TriggerControlDataLabel).parse(ctx, readBuffer, m, commandTypeContainer); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TriggerControlDataLabel for type-switch of TriggerControlData")
 		}
 	default:
diff --git a/plc4go/protocols/df1/readwrite/model/DF1Command.go b/plc4go/protocols/df1/readwrite/model/DF1Command.go
index d2bd067b90..1fab857d5a 100644
--- a/plc4go/protocols/df1/readwrite/model/DF1Command.go
+++ b/plc4go/protocols/df1/readwrite/model/DF1Command.go
@@ -186,11 +186,11 @@ func (m *_DF1Command) parse(ctx context.Context, readBuffer utils.ReadBuffer) (_
 	var _child DF1Command
 	switch {
 	case commandCode == 0x01: // DF1UnprotectedReadRequest
-		if _child, err = (&_DF1UnprotectedReadRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1UnprotectedReadRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1UnprotectedReadRequest for type-switch of DF1Command")
 		}
 	case commandCode == 0x41: // DF1UnprotectedReadResponse
-		if _child, err = (&_DF1UnprotectedReadResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1UnprotectedReadResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1UnprotectedReadResponse for type-switch of DF1Command")
 		}
 	default:
diff --git a/plc4go/protocols/df1/readwrite/model/DF1Symbol.go b/plc4go/protocols/df1/readwrite/model/DF1Symbol.go
index 0ce57efe09..198664f9e1 100644
--- a/plc4go/protocols/df1/readwrite/model/DF1Symbol.go
+++ b/plc4go/protocols/df1/readwrite/model/DF1Symbol.go
@@ -172,15 +172,15 @@ func (m *_DF1Symbol) parse(ctx context.Context, readBuffer utils.ReadBuffer) (__
 	var _child DF1Symbol
 	switch {
 	case symbolType == 0x02: // DF1SymbolMessageFrame
-		if _child, err = (&_DF1SymbolMessageFrame{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1SymbolMessageFrame).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1SymbolMessageFrame for type-switch of DF1Symbol")
 		}
 	case symbolType == 0x06: // DF1SymbolMessageFrameACK
-		if _child, err = (&_DF1SymbolMessageFrameACK{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1SymbolMessageFrameACK).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1SymbolMessageFrameACK for type-switch of DF1Symbol")
 		}
 	case symbolType == 0x15: // DF1SymbolMessageFrameNAK
-		if _child, err = (&_DF1SymbolMessageFrameNAK{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DF1SymbolMessageFrameNAK).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DF1SymbolMessageFrameNAK for type-switch of DF1Symbol")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/CipService.go b/plc4go/protocols/eip/readwrite/model/CipService.go
index b0daa27b56..fcf27c49ca 100644
--- a/plc4go/protocols/eip/readwrite/model/CipService.go
+++ b/plc4go/protocols/eip/readwrite/model/CipService.go
@@ -160,103 +160,103 @@ func (m *_CipService) parse(ctx context.Context, readBuffer utils.ReadBuffer, co
 	var _child CipService
 	switch {
 	case service == 0x01 && response == bool(false): // GetAttributeAllRequest
-		if _child, err = (&_GetAttributeAllRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_GetAttributeAllRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetAttributeAllRequest for type-switch of CipService")
 		}
 	case service == 0x01 && response == bool(true): // GetAttributeAllResponse
-		if _child, err = (&_GetAttributeAllResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_GetAttributeAllResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetAttributeAllResponse for type-switch of CipService")
 		}
 	case service == 0x02 && response == bool(false): // SetAttributeAllRequest
-		if _child, err = (&_SetAttributeAllRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_SetAttributeAllRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetAttributeAllRequest for type-switch of CipService")
 		}
 	case service == 0x02 && response == bool(true): // SetAttributeAllResponse
-		if _child, err = (&_SetAttributeAllResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_SetAttributeAllResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetAttributeAllResponse for type-switch of CipService")
 		}
 	case service == 0x03 && response == bool(false): // GetAttributeListRequest
-		if _child, err = (&_GetAttributeListRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_GetAttributeListRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetAttributeListRequest for type-switch of CipService")
 		}
 	case service == 0x03 && response == bool(true): // GetAttributeListResponse
-		if _child, err = (&_GetAttributeListResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_GetAttributeListResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetAttributeListResponse for type-switch of CipService")
 		}
 	case service == 0x04 && response == bool(false): // SetAttributeListRequest
-		if _child, err = (&_SetAttributeListRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_SetAttributeListRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetAttributeListRequest for type-switch of CipService")
 		}
 	case service == 0x04 && response == bool(true): // SetAttributeListResponse
-		if _child, err = (&_SetAttributeListResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_SetAttributeListResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetAttributeListResponse for type-switch of CipService")
 		}
 	case service == 0x0A && response == bool(false): // MultipleServiceRequest
-		if _child, err = (&_MultipleServiceRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_MultipleServiceRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MultipleServiceRequest for type-switch of CipService")
 		}
 	case service == 0x0A && response == bool(true): // MultipleServiceResponse
-		if _child, err = (&_MultipleServiceResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_MultipleServiceResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MultipleServiceResponse for type-switch of CipService")
 		}
 	case service == 0x0E && response == bool(false): // GetAttributeSingleRequest
-		if _child, err = (&_GetAttributeSingleRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_GetAttributeSingleRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetAttributeSingleRequest for type-switch of CipService")
 		}
 	case service == 0x0E && response == bool(true): // GetAttributeSingleResponse
-		if _child, err = (&_GetAttributeSingleResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_GetAttributeSingleResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetAttributeSingleResponse for type-switch of CipService")
 		}
 	case service == 0x10 && response == bool(false): // SetAttributeSingleRequest
-		if _child, err = (&_SetAttributeSingleRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_SetAttributeSingleRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetAttributeSingleRequest for type-switch of CipService")
 		}
 	case service == 0x10 && response == bool(true): // SetAttributeSingleResponse
-		if _child, err = (&_SetAttributeSingleResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_SetAttributeSingleResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetAttributeSingleResponse for type-switch of CipService")
 		}
 	case service == 0x4C && response == bool(false): // CipReadRequest
-		if _child, err = (&_CipReadRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipReadRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipReadRequest for type-switch of CipService")
 		}
 	case service == 0x4C && response == bool(true): // CipReadResponse
-		if _child, err = (&_CipReadResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipReadResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipReadResponse for type-switch of CipService")
 		}
 	case service == 0x4D && response == bool(false): // CipWriteRequest
-		if _child, err = (&_CipWriteRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipWriteRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipWriteRequest for type-switch of CipService")
 		}
 	case service == 0x4D && response == bool(true): // CipWriteResponse
-		if _child, err = (&_CipWriteResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipWriteResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipWriteResponse for type-switch of CipService")
 		}
 	case service == 0x4E && response == bool(false): // CipConnectionManagerCloseRequest
-		if _child, err = (&_CipConnectionManagerCloseRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipConnectionManagerCloseRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipConnectionManagerCloseRequest for type-switch of CipService")
 		}
 	case service == 0x4E && response == bool(true): // CipConnectionManagerCloseResponse
-		if _child, err = (&_CipConnectionManagerCloseResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipConnectionManagerCloseResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipConnectionManagerCloseResponse for type-switch of CipService")
 		}
 	case service == 0x52 && response == bool(false) && connected == bool(false): // CipUnconnectedRequest
-		if _child, err = (&_CipUnconnectedRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipUnconnectedRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipUnconnectedRequest for type-switch of CipService")
 		}
 	case service == 0x52 && response == bool(false) && connected == bool(true): // CipConnectedRequest
-		if _child, err = (&_CipConnectedRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipConnectedRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipConnectedRequest for type-switch of CipService")
 		}
 	case service == 0x52 && response == bool(true): // CipConnectedResponse
-		if _child, err = (&_CipConnectedResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipConnectedResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipConnectedResponse for type-switch of CipService")
 		}
 	case service == 0x5B && response == bool(false): // CipConnectionManagerRequest
-		if _child, err = (&_CipConnectionManagerRequest{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipConnectionManagerRequest).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipConnectionManagerRequest for type-switch of CipService")
 		}
 	case service == 0x5B && response == bool(true): // CipConnectionManagerResponse
-		if _child, err = (&_CipConnectionManagerResponse{}).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
+		if _child, err = new(_CipConnectionManagerResponse).parse(ctx, readBuffer, m, connected, serviceLen); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipConnectionManagerResponse for type-switch of CipService")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go b/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go
index a8a6ca8d99..fd45a4c333 100644
--- a/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go
+++ b/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go
@@ -144,11 +144,11 @@ func (m *_CommandSpecificDataItem) parse(ctx context.Context, readBuffer utils.R
 	var _child CommandSpecificDataItem
 	switch {
 	case itemType == 0x000C: // CipIdentity
-		if _child, err = (&_CipIdentity{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CipIdentity).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipIdentity for type-switch of CommandSpecificDataItem")
 		}
 	case itemType == 0x0086: // CipSecurityInformation
-		if _child, err = (&_CipSecurityInformation{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CipSecurityInformation).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipSecurityInformation for type-switch of CommandSpecificDataItem")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/DataSegmentType.go b/plc4go/protocols/eip/readwrite/model/DataSegmentType.go
index 8b36427ded..a874bfe06b 100644
--- a/plc4go/protocols/eip/readwrite/model/DataSegmentType.go
+++ b/plc4go/protocols/eip/readwrite/model/DataSegmentType.go
@@ -144,7 +144,7 @@ func (m *_DataSegmentType) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child DataSegmentType
 	switch {
 	case dataSegmentType == 0x11: // AnsiExtendedSymbolSegment
-		if _child, err = (&_AnsiExtendedSymbolSegment{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_AnsiExtendedSymbolSegment).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AnsiExtendedSymbolSegment for type-switch of DataSegmentType")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/EipPacket.go b/plc4go/protocols/eip/readwrite/model/EipPacket.go
index 71ed99a9a0..f88b29e413 100644
--- a/plc4go/protocols/eip/readwrite/model/EipPacket.go
+++ b/plc4go/protocols/eip/readwrite/model/EipPacket.go
@@ -233,55 +233,55 @@ func (m *_EipPacket) parse(ctx context.Context, readBuffer utils.ReadBuffer, res
 	var _child EipPacket
 	switch {
 	case command == 0x0001 && response == bool(false): // NullCommandRequest
-		if _child, err = (&_NullCommandRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_NullCommandRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NullCommandRequest for type-switch of EipPacket")
 		}
 	case command == 0x0001 && response == bool(true): // NullCommandResponse
-		if _child, err = (&_NullCommandResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_NullCommandResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NullCommandResponse for type-switch of EipPacket")
 		}
 	case command == 0x0004 && response == bool(false): // ListServicesRequest
-		if _child, err = (&_ListServicesRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ListServicesRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ListServicesRequest for type-switch of EipPacket")
 		}
 	case command == 0x0004 && response == bool(true) && packetLength == uint16(0): // NullListServicesResponse
-		if _child, err = (&_NullListServicesResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_NullListServicesResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NullListServicesResponse for type-switch of EipPacket")
 		}
 	case command == 0x0004 && response == bool(true): // ListServicesResponse
-		if _child, err = (&_ListServicesResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ListServicesResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ListServicesResponse for type-switch of EipPacket")
 		}
 	case command == 0x0063 && response == bool(false): // EipListIdentityRequest
-		if _child, err = (&_EipListIdentityRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_EipListIdentityRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EipListIdentityRequest for type-switch of EipPacket")
 		}
 	case command == 0x0063 && response == bool(true): // EipListIdentityResponse
-		if _child, err = (&_EipListIdentityResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_EipListIdentityResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EipListIdentityResponse for type-switch of EipPacket")
 		}
 	case command == 0x0065 && response == bool(false): // EipConnectionRequest
-		if _child, err = (&_EipConnectionRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_EipConnectionRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EipConnectionRequest for type-switch of EipPacket")
 		}
 	case command == 0x0065 && response == bool(true) && packetLength == uint16(0): // NullEipConnectionResponse
-		if _child, err = (&_NullEipConnectionResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_NullEipConnectionResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NullEipConnectionResponse for type-switch of EipPacket")
 		}
 	case command == 0x0065 && response == bool(true): // EipConnectionResponse
-		if _child, err = (&_EipConnectionResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_EipConnectionResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EipConnectionResponse for type-switch of EipPacket")
 		}
 	case command == 0x0066: // EipDisconnectRequest
-		if _child, err = (&_EipDisconnectRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_EipDisconnectRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EipDisconnectRequest for type-switch of EipPacket")
 		}
 	case command == 0x006F: // CipRRData
-		if _child, err = (&_CipRRData{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_CipRRData).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CipRRData for type-switch of EipPacket")
 		}
 	case command == 0x0070: // SendUnitData
-		if _child, err = (&_SendUnitData{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SendUnitData).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SendUnitData for type-switch of EipPacket")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go b/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go
index 134ee2ba79..a521c2d514 100644
--- a/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go
+++ b/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go
@@ -144,15 +144,15 @@ func (m *_LogicalSegmentType) parse(ctx context.Context, readBuffer utils.ReadBu
 	var _child LogicalSegmentType
 	switch {
 	case logicalSegmentType == 0x00: // ClassID
-		if _child, err = (&_ClassID{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ClassID).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ClassID for type-switch of LogicalSegmentType")
 		}
 	case logicalSegmentType == 0x01: // InstanceID
-		if _child, err = (&_InstanceID{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_InstanceID).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type InstanceID for type-switch of LogicalSegmentType")
 		}
 	case logicalSegmentType == 0x02: // MemberID
-		if _child, err = (&_MemberID{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_MemberID).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MemberID for type-switch of LogicalSegmentType")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/PathSegment.go b/plc4go/protocols/eip/readwrite/model/PathSegment.go
index 854b0cd3c6..eb7cb0ff78 100644
--- a/plc4go/protocols/eip/readwrite/model/PathSegment.go
+++ b/plc4go/protocols/eip/readwrite/model/PathSegment.go
@@ -144,15 +144,15 @@ func (m *_PathSegment) parse(ctx context.Context, readBuffer utils.ReadBuffer) (
 	var _child PathSegment
 	switch {
 	case pathSegment == 0x00: // PortSegment
-		if _child, err = (&_PortSegment{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_PortSegment).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PortSegment for type-switch of PathSegment")
 		}
 	case pathSegment == 0x01: // LogicalSegment
-		if _child, err = (&_LogicalSegment{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LogicalSegment).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LogicalSegment for type-switch of PathSegment")
 		}
 	case pathSegment == 0x04: // DataSegment
-		if _child, err = (&_DataSegment{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DataSegment).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataSegment for type-switch of PathSegment")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/PortSegmentType.go b/plc4go/protocols/eip/readwrite/model/PortSegmentType.go
index 85f8c22baf..3e2f25f870 100644
--- a/plc4go/protocols/eip/readwrite/model/PortSegmentType.go
+++ b/plc4go/protocols/eip/readwrite/model/PortSegmentType.go
@@ -144,11 +144,11 @@ func (m *_PortSegmentType) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child PortSegmentType
 	switch {
 	case extendedLinkAddress == bool(false): // PortSegmentNormal
-		if _child, err = (&_PortSegmentNormal{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_PortSegmentNormal).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PortSegmentNormal for type-switch of PortSegmentType")
 		}
 	case extendedLinkAddress == bool(true): // PortSegmentExtended
-		if _child, err = (&_PortSegmentExtended{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_PortSegmentExtended).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PortSegmentExtended for type-switch of PortSegmentType")
 		}
 	default:
diff --git a/plc4go/protocols/eip/readwrite/model/TypeId.go b/plc4go/protocols/eip/readwrite/model/TypeId.go
index 935c8ef61d..19e5edabbf 100644
--- a/plc4go/protocols/eip/readwrite/model/TypeId.go
+++ b/plc4go/protocols/eip/readwrite/model/TypeId.go
@@ -144,23 +144,23 @@ func (m *_TypeId) parse(ctx context.Context, readBuffer utils.ReadBuffer) (__typ
 	var _child TypeId
 	switch {
 	case id == 0x0000: // NullAddressItem
-		if _child, err = (&_NullAddressItem{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_NullAddressItem).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NullAddressItem for type-switch of TypeId")
 		}
 	case id == 0x0100: // ServicesResponse
-		if _child, err = (&_ServicesResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ServicesResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ServicesResponse for type-switch of TypeId")
 		}
 	case id == 0x00A1: // ConnectedAddressItem
-		if _child, err = (&_ConnectedAddressItem{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectedAddressItem).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectedAddressItem for type-switch of TypeId")
 		}
 	case id == 0x00B1: // ConnectedDataItem
-		if _child, err = (&_ConnectedDataItem{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectedDataItem).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectedDataItem for type-switch of TypeId")
 		}
 	case id == 0x00B2: // UnConnectedDataItem
-		if _child, err = (&_UnConnectedDataItem{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_UnConnectedDataItem).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UnConnectedDataItem for type-switch of TypeId")
 		}
 	default:
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go b/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go
index f11b2231e0..07906bd66e 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go
@@ -149,23 +149,23 @@ func (m *_FirmataCommand) parse(ctx context.Context, readBuffer utils.ReadBuffer
 	var _child FirmataCommand
 	switch {
 	case commandCode == 0x0: // FirmataCommandSysex
-		if _child, err = (&_FirmataCommandSysex{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataCommandSysex).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataCommandSysex for type-switch of FirmataCommand")
 		}
 	case commandCode == 0x4: // FirmataCommandSetPinMode
-		if _child, err = (&_FirmataCommandSetPinMode{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataCommandSetPinMode).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataCommandSetPinMode for type-switch of FirmataCommand")
 		}
 	case commandCode == 0x5: // FirmataCommandSetDigitalPinValue
-		if _child, err = (&_FirmataCommandSetDigitalPinValue{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataCommandSetDigitalPinValue).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataCommandSetDigitalPinValue for type-switch of FirmataCommand")
 		}
 	case commandCode == 0x9: // FirmataCommandProtocolVersion
-		if _child, err = (&_FirmataCommandProtocolVersion{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataCommandProtocolVersion).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataCommandProtocolVersion for type-switch of FirmataCommand")
 		}
 	case commandCode == 0xF: // FirmataCommandSystemReset
-		if _child, err = (&_FirmataCommandSystemReset{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataCommandSystemReset).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataCommandSystemReset for type-switch of FirmataCommand")
 		}
 	default:
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go b/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go
index dd3e92106e..ae1efbd62d 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go
@@ -151,23 +151,23 @@ func (m *_FirmataMessage) parse(ctx context.Context, readBuffer utils.ReadBuffer
 	var _child FirmataMessage
 	switch {
 	case messageType == 0xE: // FirmataMessageAnalogIO
-		if _child, err = (&_FirmataMessageAnalogIO{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataMessageAnalogIO).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataMessageAnalogIO for type-switch of FirmataMessage")
 		}
 	case messageType == 0x9: // FirmataMessageDigitalIO
-		if _child, err = (&_FirmataMessageDigitalIO{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataMessageDigitalIO).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataMessageDigitalIO for type-switch of FirmataMessage")
 		}
 	case messageType == 0xC: // FirmataMessageSubscribeAnalogPinValue
-		if _child, err = (&_FirmataMessageSubscribeAnalogPinValue{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataMessageSubscribeAnalogPinValue).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataMessageSubscribeAnalogPinValue for type-switch of FirmataMessage")
 		}
 	case messageType == 0xD: // FirmataMessageSubscribeDigitalPinValue
-		if _child, err = (&_FirmataMessageSubscribeDigitalPinValue{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataMessageSubscribeDigitalPinValue).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataMessageSubscribeDigitalPinValue for type-switch of FirmataMessage")
 		}
 	case messageType == 0xF: // FirmataMessageCommand
-		if _child, err = (&_FirmataMessageCommand{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_FirmataMessageCommand).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FirmataMessageCommand for type-switch of FirmataMessage")
 		}
 	default:
diff --git a/plc4go/protocols/firmata/readwrite/model/SysexCommand.go b/plc4go/protocols/firmata/readwrite/model/SysexCommand.go
index 79c5e56722..2dea6637a6 100644
--- a/plc4go/protocols/firmata/readwrite/model/SysexCommand.go
+++ b/plc4go/protocols/firmata/readwrite/model/SysexCommand.go
@@ -146,63 +146,63 @@ func (m *_SysexCommand) parse(ctx context.Context, readBuffer utils.ReadBuffer,
 	var _child SysexCommand
 	switch {
 	case commandType == 0x00: // SysexCommandExtendedId
-		if _child, err = (&_SysexCommandExtendedId{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandExtendedId).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandExtendedId for type-switch of SysexCommand")
 		}
 	case commandType == 0x69 && response == bool(false): // SysexCommandAnalogMappingQueryRequest
-		if _child, err = (&_SysexCommandAnalogMappingQueryRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandAnalogMappingQueryRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandAnalogMappingQueryRequest for type-switch of SysexCommand")
 		}
 	case commandType == 0x69 && response == bool(true): // SysexCommandAnalogMappingQueryResponse
-		if _child, err = (&_SysexCommandAnalogMappingQueryResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandAnalogMappingQueryResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandAnalogMappingQueryResponse for type-switch of SysexCommand")
 		}
 	case commandType == 0x6A: // SysexCommandAnalogMappingResponse
-		if _child, err = (&_SysexCommandAnalogMappingResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandAnalogMappingResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandAnalogMappingResponse for type-switch of SysexCommand")
 		}
 	case commandType == 0x6B: // SysexCommandCapabilityQuery
-		if _child, err = (&_SysexCommandCapabilityQuery{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandCapabilityQuery).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandCapabilityQuery for type-switch of SysexCommand")
 		}
 	case commandType == 0x6C: // SysexCommandCapabilityResponse
-		if _child, err = (&_SysexCommandCapabilityResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandCapabilityResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandCapabilityResponse for type-switch of SysexCommand")
 		}
 	case commandType == 0x6D: // SysexCommandPinStateQuery
-		if _child, err = (&_SysexCommandPinStateQuery{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandPinStateQuery).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandPinStateQuery for type-switch of SysexCommand")
 		}
 	case commandType == 0x6E: // SysexCommandPinStateResponse
-		if _child, err = (&_SysexCommandPinStateResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandPinStateResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandPinStateResponse for type-switch of SysexCommand")
 		}
 	case commandType == 0x6F: // SysexCommandExtendedAnalog
-		if _child, err = (&_SysexCommandExtendedAnalog{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandExtendedAnalog).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandExtendedAnalog for type-switch of SysexCommand")
 		}
 	case commandType == 0x71: // SysexCommandStringData
-		if _child, err = (&_SysexCommandStringData{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandStringData).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandStringData for type-switch of SysexCommand")
 		}
 	case commandType == 0x79 && response == bool(false): // SysexCommandReportFirmwareRequest
-		if _child, err = (&_SysexCommandReportFirmwareRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandReportFirmwareRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandReportFirmwareRequest for type-switch of SysexCommand")
 		}
 	case commandType == 0x79 && response == bool(true): // SysexCommandReportFirmwareResponse
-		if _child, err = (&_SysexCommandReportFirmwareResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandReportFirmwareResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandReportFirmwareResponse for type-switch of SysexCommand")
 		}
 	case commandType == 0x7A: // SysexCommandSamplingInterval
-		if _child, err = (&_SysexCommandSamplingInterval{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandSamplingInterval).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandSamplingInterval for type-switch of SysexCommand")
 		}
 	case commandType == 0x7E: // SysexCommandSysexNonRealtime
-		if _child, err = (&_SysexCommandSysexNonRealtime{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandSysexNonRealtime).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandSysexNonRealtime for type-switch of SysexCommand")
 		}
 	case commandType == 0x7F: // SysexCommandSysexRealtime
-		if _child, err = (&_SysexCommandSysexRealtime{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_SysexCommandSysexRealtime).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SysexCommandSysexRealtime for type-switch of SysexCommand")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/Apdu.go b/plc4go/protocols/knxnetip/readwrite/model/Apdu.go
index 598cd2cbfe..62d2456047 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/Apdu.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/Apdu.go
@@ -191,11 +191,11 @@ func (m *_Apdu) parse(ctx context.Context, readBuffer utils.ReadBuffer, dataLeng
 	var _child Apdu
 	switch {
 	case control == uint8(1): // ApduControlContainer
-		if _child, err = (&_ApduControlContainer{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduControlContainer).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduControlContainer for type-switch of Apdu")
 		}
 	case control == uint8(0): // ApduDataContainer
-		if _child, err = (&_ApduDataContainer{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataContainer).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataContainer for type-switch of Apdu")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go b/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go
index ce94c21e48..c651f6927d 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go
@@ -144,19 +144,19 @@ func (m *_ApduControl) parse(ctx context.Context, readBuffer utils.ReadBuffer) (
 	var _child ApduControl
 	switch {
 	case controlType == 0x0: // ApduControlConnect
-		if _child, err = (&_ApduControlConnect{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ApduControlConnect).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduControlConnect for type-switch of ApduControl")
 		}
 	case controlType == 0x1: // ApduControlDisconnect
-		if _child, err = (&_ApduControlDisconnect{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ApduControlDisconnect).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduControlDisconnect for type-switch of ApduControl")
 		}
 	case controlType == 0x2: // ApduControlAck
-		if _child, err = (&_ApduControlAck{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ApduControlAck).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduControlAck for type-switch of ApduControl")
 		}
 	case controlType == 0x3: // ApduControlNack
-		if _child, err = (&_ApduControlNack{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ApduControlNack).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduControlNack for type-switch of ApduControl")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduData.go b/plc4go/protocols/knxnetip/readwrite/model/ApduData.go
index a3fa539bc9..054d1acceb 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduData.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduData.go
@@ -149,67 +149,67 @@ func (m *_ApduData) parse(ctx context.Context, readBuffer utils.ReadBuffer, data
 	var _child ApduData
 	switch {
 	case apciType == 0x0: // ApduDataGroupValueRead
-		if _child, err = (&_ApduDataGroupValueRead{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataGroupValueRead).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataGroupValueRead for type-switch of ApduData")
 		}
 	case apciType == 0x1: // ApduDataGroupValueResponse
-		if _child, err = (&_ApduDataGroupValueResponse{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataGroupValueResponse).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataGroupValueResponse for type-switch of ApduData")
 		}
 	case apciType == 0x2: // ApduDataGroupValueWrite
-		if _child, err = (&_ApduDataGroupValueWrite{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataGroupValueWrite).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataGroupValueWrite for type-switch of ApduData")
 		}
 	case apciType == 0x3: // ApduDataIndividualAddressWrite
-		if _child, err = (&_ApduDataIndividualAddressWrite{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataIndividualAddressWrite).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataIndividualAddressWrite for type-switch of ApduData")
 		}
 	case apciType == 0x4: // ApduDataIndividualAddressRead
-		if _child, err = (&_ApduDataIndividualAddressRead{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataIndividualAddressRead).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataIndividualAddressRead for type-switch of ApduData")
 		}
 	case apciType == 0x5: // ApduDataIndividualAddressResponse
-		if _child, err = (&_ApduDataIndividualAddressResponse{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataIndividualAddressResponse).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataIndividualAddressResponse for type-switch of ApduData")
 		}
 	case apciType == 0x6: // ApduDataAdcRead
-		if _child, err = (&_ApduDataAdcRead{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataAdcRead).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataAdcRead for type-switch of ApduData")
 		}
 	case apciType == 0x7: // ApduDataAdcResponse
-		if _child, err = (&_ApduDataAdcResponse{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataAdcResponse).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataAdcResponse for type-switch of ApduData")
 		}
 	case apciType == 0x8: // ApduDataMemoryRead
-		if _child, err = (&_ApduDataMemoryRead{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataMemoryRead).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataMemoryRead for type-switch of ApduData")
 		}
 	case apciType == 0x9: // ApduDataMemoryResponse
-		if _child, err = (&_ApduDataMemoryResponse{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataMemoryResponse).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataMemoryResponse for type-switch of ApduData")
 		}
 	case apciType == 0xA: // ApduDataMemoryWrite
-		if _child, err = (&_ApduDataMemoryWrite{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataMemoryWrite).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataMemoryWrite for type-switch of ApduData")
 		}
 	case apciType == 0xB: // ApduDataUserMessage
-		if _child, err = (&_ApduDataUserMessage{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataUserMessage).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataUserMessage for type-switch of ApduData")
 		}
 	case apciType == 0xC: // ApduDataDeviceDescriptorRead
-		if _child, err = (&_ApduDataDeviceDescriptorRead{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataDeviceDescriptorRead).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataDeviceDescriptorRead for type-switch of ApduData")
 		}
 	case apciType == 0xD: // ApduDataDeviceDescriptorResponse
-		if _child, err = (&_ApduDataDeviceDescriptorResponse{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataDeviceDescriptorResponse).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataDeviceDescriptorResponse for type-switch of ApduData")
 		}
 	case apciType == 0xE: // ApduDataRestart
-		if _child, err = (&_ApduDataRestart{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataRestart).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataRestart for type-switch of ApduData")
 		}
 	case apciType == 0xF: // ApduDataOther
-		if _child, err = (&_ApduDataOther{}).parse(ctx, readBuffer, m, dataLength); err != nil {
+		if _child, err = new(_ApduDataOther).parse(ctx, readBuffer, m, dataLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataOther for type-switch of ApduData")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go b/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go
index f125c867a1..aabdd597af 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go
@@ -149,167 +149,167 @@ func (m *_ApduDataExt) parse(ctx context.Context, readBuffer utils.ReadBuffer, l
 	var _child ApduDataExt
 	switch {
 	case extApciType == 0x00: // ApduDataExtOpenRoutingTableRequest
-		if _child, err = (&_ApduDataExtOpenRoutingTableRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtOpenRoutingTableRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtOpenRoutingTableRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x01: // ApduDataExtReadRoutingTableRequest
-		if _child, err = (&_ApduDataExtReadRoutingTableRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtReadRoutingTableRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtReadRoutingTableRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x02: // ApduDataExtReadRoutingTableResponse
-		if _child, err = (&_ApduDataExtReadRoutingTableResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtReadRoutingTableResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtReadRoutingTableResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x03: // ApduDataExtWriteRoutingTableRequest
-		if _child, err = (&_ApduDataExtWriteRoutingTableRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtWriteRoutingTableRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtWriteRoutingTableRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x08: // ApduDataExtReadRouterMemoryRequest
-		if _child, err = (&_ApduDataExtReadRouterMemoryRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtReadRouterMemoryRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtReadRouterMemoryRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x09: // ApduDataExtReadRouterMemoryResponse
-		if _child, err = (&_ApduDataExtReadRouterMemoryResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtReadRouterMemoryResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtReadRouterMemoryResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x0A: // ApduDataExtWriteRouterMemoryRequest
-		if _child, err = (&_ApduDataExtWriteRouterMemoryRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtWriteRouterMemoryRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtWriteRouterMemoryRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x0D: // ApduDataExtReadRouterStatusRequest
-		if _child, err = (&_ApduDataExtReadRouterStatusRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtReadRouterStatusRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtReadRouterStatusRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x0E: // ApduDataExtReadRouterStatusResponse
-		if _child, err = (&_ApduDataExtReadRouterStatusResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtReadRouterStatusResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtReadRouterStatusResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x0F: // ApduDataExtWriteRouterStatusRequest
-		if _child, err = (&_ApduDataExtWriteRouterStatusRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtWriteRouterStatusRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtWriteRouterStatusRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x10: // ApduDataExtMemoryBitWrite
-		if _child, err = (&_ApduDataExtMemoryBitWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtMemoryBitWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtMemoryBitWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x11: // ApduDataExtAuthorizeRequest
-		if _child, err = (&_ApduDataExtAuthorizeRequest{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtAuthorizeRequest).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtAuthorizeRequest for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x12: // ApduDataExtAuthorizeResponse
-		if _child, err = (&_ApduDataExtAuthorizeResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtAuthorizeResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtAuthorizeResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x13: // ApduDataExtKeyWrite
-		if _child, err = (&_ApduDataExtKeyWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtKeyWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtKeyWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x14: // ApduDataExtKeyResponse
-		if _child, err = (&_ApduDataExtKeyResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtKeyResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtKeyResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x15: // ApduDataExtPropertyValueRead
-		if _child, err = (&_ApduDataExtPropertyValueRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtPropertyValueRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtPropertyValueRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x16: // ApduDataExtPropertyValueResponse
-		if _child, err = (&_ApduDataExtPropertyValueResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtPropertyValueResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtPropertyValueResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x17: // ApduDataExtPropertyValueWrite
-		if _child, err = (&_ApduDataExtPropertyValueWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtPropertyValueWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtPropertyValueWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x18: // ApduDataExtPropertyDescriptionRead
-		if _child, err = (&_ApduDataExtPropertyDescriptionRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtPropertyDescriptionRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtPropertyDescriptionRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x19: // ApduDataExtPropertyDescriptionResponse
-		if _child, err = (&_ApduDataExtPropertyDescriptionResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtPropertyDescriptionResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtPropertyDescriptionResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x1A: // ApduDataExtNetworkParameterRead
-		if _child, err = (&_ApduDataExtNetworkParameterRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtNetworkParameterRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtNetworkParameterRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x1B: // ApduDataExtNetworkParameterResponse
-		if _child, err = (&_ApduDataExtNetworkParameterResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtNetworkParameterResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtNetworkParameterResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x1C: // ApduDataExtIndividualAddressSerialNumberRead
-		if _child, err = (&_ApduDataExtIndividualAddressSerialNumberRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtIndividualAddressSerialNumberRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtIndividualAddressSerialNumberRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x1D: // ApduDataExtIndividualAddressSerialNumberResponse
-		if _child, err = (&_ApduDataExtIndividualAddressSerialNumberResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtIndividualAddressSerialNumberResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtIndividualAddressSerialNumberResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x1E: // ApduDataExtIndividualAddressSerialNumberWrite
-		if _child, err = (&_ApduDataExtIndividualAddressSerialNumberWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtIndividualAddressSerialNumberWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtIndividualAddressSerialNumberWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x20: // ApduDataExtDomainAddressWrite
-		if _child, err = (&_ApduDataExtDomainAddressWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x21: // ApduDataExtDomainAddressRead
-		if _child, err = (&_ApduDataExtDomainAddressRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x22: // ApduDataExtDomainAddressResponse
-		if _child, err = (&_ApduDataExtDomainAddressResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x23: // ApduDataExtDomainAddressSelectiveRead
-		if _child, err = (&_ApduDataExtDomainAddressSelectiveRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressSelectiveRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressSelectiveRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x24: // ApduDataExtNetworkParameterWrite
-		if _child, err = (&_ApduDataExtNetworkParameterWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtNetworkParameterWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtNetworkParameterWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x25: // ApduDataExtLinkRead
-		if _child, err = (&_ApduDataExtLinkRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtLinkRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtLinkRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x26: // ApduDataExtLinkResponse
-		if _child, err = (&_ApduDataExtLinkResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtLinkResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtLinkResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x27: // ApduDataExtLinkWrite
-		if _child, err = (&_ApduDataExtLinkWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtLinkWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtLinkWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x28: // ApduDataExtGroupPropertyValueRead
-		if _child, err = (&_ApduDataExtGroupPropertyValueRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtGroupPropertyValueRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtGroupPropertyValueRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x29: // ApduDataExtGroupPropertyValueResponse
-		if _child, err = (&_ApduDataExtGroupPropertyValueResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtGroupPropertyValueResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtGroupPropertyValueResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x2A: // ApduDataExtGroupPropertyValueWrite
-		if _child, err = (&_ApduDataExtGroupPropertyValueWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtGroupPropertyValueWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtGroupPropertyValueWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x2B: // ApduDataExtGroupPropertyValueInfoReport
-		if _child, err = (&_ApduDataExtGroupPropertyValueInfoReport{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtGroupPropertyValueInfoReport).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtGroupPropertyValueInfoReport for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x2C: // ApduDataExtDomainAddressSerialNumberRead
-		if _child, err = (&_ApduDataExtDomainAddressSerialNumberRead{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressSerialNumberRead).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressSerialNumberRead for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x2D: // ApduDataExtDomainAddressSerialNumberResponse
-		if _child, err = (&_ApduDataExtDomainAddressSerialNumberResponse{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressSerialNumberResponse).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressSerialNumberResponse for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x2E: // ApduDataExtDomainAddressSerialNumberWrite
-		if _child, err = (&_ApduDataExtDomainAddressSerialNumberWrite{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtDomainAddressSerialNumberWrite).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtDomainAddressSerialNumberWrite for type-switch of ApduDataExt")
 		}
 	case extApciType == 0x30: // ApduDataExtFileStreamInfoReport
-		if _child, err = (&_ApduDataExtFileStreamInfoReport{}).parse(ctx, readBuffer, m, length); err != nil {
+		if _child, err = new(_ApduDataExtFileStreamInfoReport).parse(ctx, readBuffer, m, length); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApduDataExtFileStreamInfoReport for type-switch of ApduDataExt")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/CEMI.go b/plc4go/protocols/knxnetip/readwrite/model/CEMI.go
index 4149052abc..a967b890dd 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/CEMI.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/CEMI.go
@@ -149,95 +149,95 @@ func (m *_CEMI) parse(ctx context.Context, readBuffer utils.ReadBuffer, size uin
 	var _child CEMI
 	switch {
 	case messageCode == 0x2B: // LBusmonInd
-		if _child, err = (&_LBusmonInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LBusmonInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LBusmonInd for type-switch of CEMI")
 		}
 	case messageCode == 0x11: // LDataReq
-		if _child, err = (&_LDataReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LDataReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LDataReq for type-switch of CEMI")
 		}
 	case messageCode == 0x29: // LDataInd
-		if _child, err = (&_LDataInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LDataInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LDataInd for type-switch of CEMI")
 		}
 	case messageCode == 0x2E: // LDataCon
-		if _child, err = (&_LDataCon{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LDataCon).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LDataCon for type-switch of CEMI")
 		}
 	case messageCode == 0x10: // LRawReq
-		if _child, err = (&_LRawReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LRawReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LRawReq for type-switch of CEMI")
 		}
 	case messageCode == 0x2D: // LRawInd
-		if _child, err = (&_LRawInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LRawInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LRawInd for type-switch of CEMI")
 		}
 	case messageCode == 0x2F: // LRawCon
-		if _child, err = (&_LRawCon{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LRawCon).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LRawCon for type-switch of CEMI")
 		}
 	case messageCode == 0x13: // LPollDataReq
-		if _child, err = (&_LPollDataReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LPollDataReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LPollDataReq for type-switch of CEMI")
 		}
 	case messageCode == 0x25: // LPollDataCon
-		if _child, err = (&_LPollDataCon{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_LPollDataCon).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LPollDataCon for type-switch of CEMI")
 		}
 	case messageCode == 0x41: // TDataConnectedReq
-		if _child, err = (&_TDataConnectedReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_TDataConnectedReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TDataConnectedReq for type-switch of CEMI")
 		}
 	case messageCode == 0x89: // TDataConnectedInd
-		if _child, err = (&_TDataConnectedInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_TDataConnectedInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TDataConnectedInd for type-switch of CEMI")
 		}
 	case messageCode == 0x4A: // TDataIndividualReq
-		if _child, err = (&_TDataIndividualReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_TDataIndividualReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TDataIndividualReq for type-switch of CEMI")
 		}
 	case messageCode == 0x94: // TDataIndividualInd
-		if _child, err = (&_TDataIndividualInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_TDataIndividualInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TDataIndividualInd for type-switch of CEMI")
 		}
 	case messageCode == 0xFC: // MPropReadReq
-		if _child, err = (&_MPropReadReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MPropReadReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MPropReadReq for type-switch of CEMI")
 		}
 	case messageCode == 0xFB: // MPropReadCon
-		if _child, err = (&_MPropReadCon{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MPropReadCon).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MPropReadCon for type-switch of CEMI")
 		}
 	case messageCode == 0xF6: // MPropWriteReq
-		if _child, err = (&_MPropWriteReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MPropWriteReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MPropWriteReq for type-switch of CEMI")
 		}
 	case messageCode == 0xF5: // MPropWriteCon
-		if _child, err = (&_MPropWriteCon{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MPropWriteCon).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MPropWriteCon for type-switch of CEMI")
 		}
 	case messageCode == 0xF7: // MPropInfoInd
-		if _child, err = (&_MPropInfoInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MPropInfoInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MPropInfoInd for type-switch of CEMI")
 		}
 	case messageCode == 0xF8: // MFuncPropCommandReq
-		if _child, err = (&_MFuncPropCommandReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MFuncPropCommandReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MFuncPropCommandReq for type-switch of CEMI")
 		}
 	case messageCode == 0xF9: // MFuncPropStateReadReq
-		if _child, err = (&_MFuncPropStateReadReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MFuncPropStateReadReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MFuncPropStateReadReq for type-switch of CEMI")
 		}
 	case messageCode == 0xFA: // MFuncPropCon
-		if _child, err = (&_MFuncPropCon{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MFuncPropCon).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MFuncPropCon for type-switch of CEMI")
 		}
 	case messageCode == 0xF1: // MResetReq
-		if _child, err = (&_MResetReq{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MResetReq).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MResetReq for type-switch of CEMI")
 		}
 	case messageCode == 0xF0: // MResetInd
-		if _child, err = (&_MResetInd{}).parse(ctx, readBuffer, m, size); err != nil {
+		if _child, err = new(_MResetInd).parse(ctx, readBuffer, m, size); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MResetInd for type-switch of CEMI")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go b/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index 73898e4d2d..7eec272caf 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -144,11 +144,11 @@ func (m *_CEMIAdditionalInformation) parse(ctx context.Context, readBuffer utils
 	var _child CEMIAdditionalInformation
 	switch {
 	case additionalInformationType == 0x03: // CEMIAdditionalInformationBusmonitorInfo
-		if _child, err = (&_CEMIAdditionalInformationBusmonitorInfo{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CEMIAdditionalInformationBusmonitorInfo).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CEMIAdditionalInformationBusmonitorInfo for type-switch of CEMIAdditionalInformation")
 		}
 	case additionalInformationType == 0x04: // CEMIAdditionalInformationRelativeTimestamp
-		if _child, err = (&_CEMIAdditionalInformationRelativeTimestamp{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_CEMIAdditionalInformationRelativeTimestamp).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CEMIAdditionalInformationRelativeTimestamp for type-switch of CEMIAdditionalInformation")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go
index 44284302af..756154ecde 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go
@@ -135,15 +135,15 @@ func (m *_ComObjectTable) parse(ctx context.Context, readBuffer utils.ReadBuffer
 	var _child ComObjectTable
 	switch {
 	case firmwareType == FirmwareType_SYSTEM_1: // ComObjectTableRealisationType1
-		if _child, err = (&_ComObjectTableRealisationType1{}).parse(ctx, readBuffer, m, firmwareType); err != nil {
+		if _child, err = new(_ComObjectTableRealisationType1).parse(ctx, readBuffer, m, firmwareType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ComObjectTableRealisationType1 for type-switch of ComObjectTable")
 		}
 	case firmwareType == FirmwareType_SYSTEM_2: // ComObjectTableRealisationType2
-		if _child, err = (&_ComObjectTableRealisationType2{}).parse(ctx, readBuffer, m, firmwareType); err != nil {
+		if _child, err = new(_ComObjectTableRealisationType2).parse(ctx, readBuffer, m, firmwareType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ComObjectTableRealisationType2 for type-switch of ComObjectTable")
 		}
 	case firmwareType == FirmwareType_SYSTEM_300: // ComObjectTableRealisationType6
-		if _child, err = (&_ComObjectTableRealisationType6{}).parse(ctx, readBuffer, m, firmwareType); err != nil {
+		if _child, err = new(_ComObjectTableRealisationType6).parse(ctx, readBuffer, m, firmwareType); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ComObjectTableRealisationType6 for type-switch of ComObjectTable")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go b/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go
index 666565da09..8b2cbabaff 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -153,11 +153,11 @@ func (m *_ConnectionRequestInformation) parse(ctx context.Context, readBuffer ut
 	var _child ConnectionRequestInformation
 	switch {
 	case connectionType == 0x03: // ConnectionRequestInformationDeviceManagement
-		if _child, err = (&_ConnectionRequestInformationDeviceManagement{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionRequestInformationDeviceManagement).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionRequestInformationDeviceManagement for type-switch of ConnectionRequestInformation")
 		}
 	case connectionType == 0x04: // ConnectionRequestInformationTunnelConnection
-		if _child, err = (&_ConnectionRequestInformationTunnelConnection{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionRequestInformationTunnelConnection).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionRequestInformationTunnelConnection for type-switch of ConnectionRequestInformation")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go b/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 15d8bf5399..4ed0a21a85 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -153,11 +153,11 @@ func (m *_ConnectionResponseDataBlock) parse(ctx context.Context, readBuffer uti
 	var _child ConnectionResponseDataBlock
 	switch {
 	case connectionType == 0x03: // ConnectionResponseDataBlockDeviceManagement
-		if _child, err = (&_ConnectionResponseDataBlockDeviceManagement{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionResponseDataBlockDeviceManagement).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionResponseDataBlockDeviceManagement for type-switch of ConnectionResponseDataBlock")
 		}
 	case connectionType == 0x04: // ConnectionResponseDataBlockTunnelConnection
-		if _child, err = (&_ConnectionResponseDataBlockTunnelConnection{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionResponseDataBlockTunnelConnection).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionResponseDataBlockTunnelConnection for type-switch of ConnectionResponseDataBlock")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go b/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go
index eed8cc90d0..b45bf6eb97 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go
@@ -135,15 +135,15 @@ func (m *_KnxGroupAddress) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child KnxGroupAddress
 	switch {
 	case numLevels == uint8(1): // KnxGroupAddressFreeLevel
-		if _child, err = (&_KnxGroupAddressFreeLevel{}).parse(ctx, readBuffer, m, numLevels); err != nil {
+		if _child, err = new(_KnxGroupAddressFreeLevel).parse(ctx, readBuffer, m, numLevels); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxGroupAddressFreeLevel for type-switch of KnxGroupAddress")
 		}
 	case numLevels == uint8(2): // KnxGroupAddress2Level
-		if _child, err = (&_KnxGroupAddress2Level{}).parse(ctx, readBuffer, m, numLevels); err != nil {
+		if _child, err = new(_KnxGroupAddress2Level).parse(ctx, readBuffer, m, numLevels); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxGroupAddress2Level for type-switch of KnxGroupAddress")
 		}
 	case numLevels == uint8(3): // KnxGroupAddress3Level
-		if _child, err = (&_KnxGroupAddress3Level{}).parse(ctx, readBuffer, m, numLevels); err != nil {
+		if _child, err = new(_KnxGroupAddress3Level).parse(ctx, readBuffer, m, numLevels); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxGroupAddress3Level for type-switch of KnxGroupAddress")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go b/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go
index aec10dd280..94542f7544 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go
@@ -190,67 +190,67 @@ func (m *_KnxNetIpMessage) parse(ctx context.Context, readBuffer utils.ReadBuffe
 	var _child KnxNetIpMessage
 	switch {
 	case msgType == 0x0201: // SearchRequest
-		if _child, err = (&_SearchRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SearchRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SearchRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0202: // SearchResponse
-		if _child, err = (&_SearchResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_SearchResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SearchResponse for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0203: // DescriptionRequest
-		if _child, err = (&_DescriptionRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DescriptionRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DescriptionRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0204: // DescriptionResponse
-		if _child, err = (&_DescriptionResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DescriptionResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DescriptionResponse for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0205: // ConnectionRequest
-		if _child, err = (&_ConnectionRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0206: // ConnectionResponse
-		if _child, err = (&_ConnectionResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionResponse for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0207: // ConnectionStateRequest
-		if _child, err = (&_ConnectionStateRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionStateRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionStateRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0208: // ConnectionStateResponse
-		if _child, err = (&_ConnectionStateResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_ConnectionStateResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionStateResponse for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0209: // DisconnectRequest
-		if _child, err = (&_DisconnectRequest{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DisconnectRequest).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DisconnectRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x020A: // DisconnectResponse
-		if _child, err = (&_DisconnectResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DisconnectResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DisconnectResponse for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x020B: // UnknownMessage
-		if _child, err = (&_UnknownMessage{}).parse(ctx, readBuffer, m, totalLength); err != nil {
+		if _child, err = new(_UnknownMessage).parse(ctx, readBuffer, m, totalLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UnknownMessage for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0310: // DeviceConfigurationRequest
-		if _child, err = (&_DeviceConfigurationRequest{}).parse(ctx, readBuffer, m, totalLength); err != nil {
+		if _child, err = new(_DeviceConfigurationRequest).parse(ctx, readBuffer, m, totalLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeviceConfigurationRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0311: // DeviceConfigurationAck
-		if _child, err = (&_DeviceConfigurationAck{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_DeviceConfigurationAck).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeviceConfigurationAck for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0420: // TunnelingRequest
-		if _child, err = (&_TunnelingRequest{}).parse(ctx, readBuffer, m, totalLength); err != nil {
+		if _child, err = new(_TunnelingRequest).parse(ctx, readBuffer, m, totalLength); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TunnelingRequest for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0421: // TunnelingResponse
-		if _child, err = (&_TunnelingResponse{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_TunnelingResponse).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TunnelingResponse for type-switch of KnxNetIpMessage")
 		}
 	case msgType == 0x0530: // RoutingIndication
-		if _child, err = (&_RoutingIndication{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_RoutingIndication).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RoutingIndication for type-switch of KnxNetIpMessage")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go b/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go
index 1eb1a2440f..7bc3c34c9a 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go
@@ -243,15 +243,15 @@ func (m *_LDataFrame) parse(ctx context.Context, readBuffer utils.ReadBuffer) (_
 	var _child LDataFrame
 	switch {
 	case notAckFrame == bool(true) && polling == bool(false): // LDataExtended
-		if _child, err = (&_LDataExtended{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LDataExtended).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LDataExtended for type-switch of LDataFrame")
 		}
 	case notAckFrame == bool(true) && polling == bool(true): // LPollData
-		if _child, err = (&_LPollData{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LPollData).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LPollData for type-switch of LDataFrame")
 		}
 	case notAckFrame == bool(false): // LDataFrameACK
-		if _child, err = (&_LDataFrameACK{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_LDataFrameACK).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LDataFrameACK for type-switch of LDataFrame")
 		}
 	default:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go b/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go
index c9cf98b394..19b9923b02 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go
@@ -144,31 +144,31 @@ func (m *_ServiceId) parse(ctx context.Context, readBuffer utils.ReadBuffer) (__
 	var _child ServiceId
 	switch {
 	case serviceType == 0x02: // KnxNetIpCore
-		if _child, err = (&_KnxNetIpCore{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetIpCore).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetIpCore for type-switch of ServiceId")
 		}
 	case serviceType == 0x03: // KnxNetIpDeviceManagement
-		if _child, err = (&_KnxNetIpDeviceManagement{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetIpDeviceManagement).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetIpDeviceManagement for type-switch of ServiceId")
 		}
 	case serviceType == 0x04: // KnxNetIpTunneling
-		if _child, err = (&_KnxNetIpTunneling{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetIpTunneling).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetIpTunneling for type-switch of ServiceId")
 		}
 	case serviceType == 0x05: // KnxNetIpRouting
-		if _child, err = (&_KnxNetIpRouting{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetIpRouting).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetIpRouting for type-switch of ServiceId")
 		}
 	case serviceType == 0x06: // KnxNetRemoteLogging
-		if _child, err = (&_KnxNetRemoteLogging{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetRemoteLogging).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetRemoteLogging for type-switch of ServiceId")
 		}
 	case serviceType == 0x07: // KnxNetRemoteConfigurationAndDiagnosis
-		if _child, err = (&_KnxNetRemoteConfigurationAndDiagnosis{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetRemoteConfigurationAndDiagnosis).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetRemoteConfigurationAndDiagnosis for type-switch of ServiceId")
 		}
 	case serviceType == 0x08: // KnxNetObjectServer
-		if _child, err = (&_KnxNetObjectServer{}).parse(ctx, readBuffer, m); err != nil {
+		if _child, err = new(_KnxNetObjectServer).parse(ctx, readBuffer, m); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KnxNetObjectServer for type-switch of ServiceId")
 		}
 	default:
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusADU.go b/plc4go/protocols/modbus/readwrite/model/ModbusADU.go
index 7c4bf5dc01..86b7307151 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusADU.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusADU.go
@@ -141,15 +141,15 @@ func (m *_ModbusADU) parse(ctx context.Context, readBuffer utils.ReadBuffer, dri
 	var _child ModbusADU
 	switch {
 	case driverType == DriverType_MODBUS_TCP: // ModbusTcpADU
-		if _child, err = (&_ModbusTcpADU{}).parse(ctx, readBuffer, m, driverType, response); err != nil {
+		if _child, err = new(_ModbusTcpADU).parse(ctx, readBuffer, m, driverType, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusTcpADU for type-switch of ModbusADU")
 		}
 	case driverType == DriverType_MODBUS_RTU: // ModbusRtuADU
-		if _child, err = (&_ModbusRtuADU{}).parse(ctx, readBuffer, m, driverType, response); err != nil {
+		if _child, err = new(_ModbusRtuADU).parse(ctx, readBuffer, m, driverType, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusRtuADU for type-switch of ModbusADU")
 		}
 	case driverType == DriverType_MODBUS_ASCII: // ModbusAsciiADU
-		if _child, err = (&_ModbusAsciiADU{}).parse(ctx, readBuffer, m, driverType, response); err != nil {
+		if _child, err = new(_ModbusAsciiADU).parse(ctx, readBuffer, m, driverType, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusAsciiADU for type-switch of ModbusADU")
 		}
 	default:
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go
index e814bd661b..503a14ccde 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go
@@ -155,159 +155,159 @@ func (m *_ModbusPDU) parse(ctx context.Context, readBuffer utils.ReadBuffer, res
 	var _child ModbusPDU
 	switch {
 	case errorFlag == bool(true): // ModbusPDUError
-		if _child, err = (&_ModbusPDUError{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUError).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUError for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x02 && response == bool(false): // ModbusPDUReadDiscreteInputsRequest
-		if _child, err = (&_ModbusPDUReadDiscreteInputsRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadDiscreteInputsRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadDiscreteInputsRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x02 && response == bool(true): // ModbusPDUReadDiscreteInputsResponse
-		if _child, err = (&_ModbusPDUReadDiscreteInputsResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadDiscreteInputsResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadDiscreteInputsResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x01 && response == bool(false): // ModbusPDUReadCoilsRequest
-		if _child, err = (&_ModbusPDUReadCoilsRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadCoilsRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadCoilsRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x01 && response == bool(true): // ModbusPDUReadCoilsResponse
-		if _child, err = (&_ModbusPDUReadCoilsResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadCoilsResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadCoilsResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x05 && response == bool(false): // ModbusPDUWriteSingleCoilRequest
-		if _child, err = (&_ModbusPDUWriteSingleCoilRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteSingleCoilRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteSingleCoilRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x05 && response == bool(true): // ModbusPDUWriteSingleCoilResponse
-		if _child, err = (&_ModbusPDUWriteSingleCoilResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteSingleCoilResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteSingleCoilResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x0F && response == bool(false): // ModbusPDUWriteMultipleCoilsRequest
-		if _child, err = (&_ModbusPDUWriteMultipleCoilsRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteMultipleCoilsRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteMultipleCoilsRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x0F && response == bool(true): // ModbusPDUWriteMultipleCoilsResponse
-		if _child, err = (&_ModbusPDUWriteMultipleCoilsResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteMultipleCoilsResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteMultipleCoilsResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x04 && response == bool(false): // ModbusPDUReadInputRegistersRequest
-		if _child, err = (&_ModbusPDUReadInputRegistersRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadInputRegistersRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadInputRegistersRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x04 && response == bool(true): // ModbusPDUReadInputRegistersResponse
-		if _child, err = (&_ModbusPDUReadInputRegistersResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadInputRegistersResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadInputRegistersResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x03 && response == bool(false): // ModbusPDUReadHoldingRegistersRequest
-		if _child, err = (&_ModbusPDUReadHoldingRegistersRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadHoldingRegistersRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadHoldingRegistersRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x03 && response == bool(true): // ModbusPDUReadHoldingRegistersResponse
-		if _child, err = (&_ModbusPDUReadHoldingRegistersResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadHoldingRegistersResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadHoldingRegistersResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x06 && response == bool(false): // ModbusPDUWriteSingleRegisterRequest
-		if _child, err = (&_ModbusPDUWriteSingleRegisterRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteSingleRegisterRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteSingleRegisterRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x06 && response == bool(true): // ModbusPDUWriteSingleRegisterResponse
-		if _child, err = (&_ModbusPDUWriteSingleRegisterResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteSingleRegisterResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteSingleRegisterResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x10 && response == bool(false): // ModbusPDUWriteMultipleHoldingRegistersRequest
-		if _child, err = (&_ModbusPDUWriteMultipleHoldingRegistersRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteMultipleHoldingRegistersRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteMultipleHoldingRegistersRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x10 && response == bool(true): // ModbusPDUWriteMultipleHoldingRegistersResponse
-		if _child, err = (&_ModbusPDUWriteMultipleHoldingRegistersResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteMultipleHoldingRegistersResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteMultipleHoldingRegistersResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x17 && response == bool(false): // ModbusPDUReadWriteMultipleHoldingRegistersRequest
-		if _child, err = (&_ModbusPDUReadWriteMultipleHoldingRegistersRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadWriteMultipleHoldingRegistersRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadWriteMultipleHoldingRegistersRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x17 && response == bool(true): // ModbusPDUReadWriteMultipleHoldingRegistersResponse
-		if _child, err = (&_ModbusPDUReadWriteMultipleHoldingRegistersResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadWriteMultipleHoldingRegistersResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadWriteMultipleHoldingRegistersResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x16 && response == bool(false): // ModbusPDUMaskWriteHoldingRegisterRequest
-		if _child, err = (&_ModbusPDUMaskWriteHoldingRegisterRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUMaskWriteHoldingRegisterRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUMaskWriteHoldingRegisterRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x16 && response == bool(true): // ModbusPDUMaskWriteHoldingRegisterResponse
-		if _child, err = (&_ModbusPDUMaskWriteHoldingRegisterResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUMaskWriteHoldingRegisterResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUMaskWriteHoldingRegisterResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x18 && response == bool(false): // ModbusPDUReadFifoQueueRequest
-		if _child, err = (&_ModbusPDUReadFifoQueueRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadFifoQueueRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadFifoQueueRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x18 && response == bool(true): // ModbusPDUReadFifoQueueResponse
-		if _child, err = (&_ModbusPDUReadFifoQueueResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadFifoQueueResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadFifoQueueResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x14 && response == bool(false): // ModbusPDUReadFileRecordRequest
-		if _child, err = (&_ModbusPDUReadFileRecordRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadFileRecordRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadFileRecordRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x14 && response == bool(true): // ModbusPDUReadFileRecordResponse
-		if _child, err = (&_ModbusPDUReadFileRecordResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadFileRecordResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadFileRecordResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x15 && response == bool(false): // ModbusPDUWriteFileRecordRequest
-		if _child, err = (&_ModbusPDUWriteFileRecordRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteFileRecordRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteFileRecordRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x15 && response == bool(true): // ModbusPDUWriteFileRecordResponse
-		if _child, err = (&_ModbusPDUWriteFileRecordResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUWriteFileRecordResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUWriteFileRecordResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x07 && response == bool(false): // ModbusPDUReadExceptionStatusRequest
-		if _child, err = (&_ModbusPDUReadExceptionStatusRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadExceptionStatusRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadExceptionStatusRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x07 && response == bool(true): // ModbusPDUReadExceptionStatusResponse
-		if _child, err = (&_ModbusPDUReadExceptionStatusResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadExceptionStatusResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadExceptionStatusResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x08 && response == bool(false): // ModbusPDUDiagnosticRequest
-		if _child, err = (&_ModbusPDUDiagnosticRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUDiagnosticRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUDiagnosticRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x08 && response == bool(true): // ModbusPDUDiagnosticResponse
-		if _child, err = (&_ModbusPDUDiagnosticResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUDiagnosticResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUDiagnosticResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x0B && response == bool(false): // ModbusPDUGetComEventCounterRequest
-		if _child, err = (&_ModbusPDUGetComEventCounterRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUGetComEventCounterRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUGetComEventCounterRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x0B && response == bool(true): // ModbusPDUGetComEventCounterResponse
-		if _child, err = (&_ModbusPDUGetComEventCounterResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUGetComEventCounterResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUGetComEventCounterResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x0C && response == bool(false): // ModbusPDUGetComEventLogRequest
-		if _child, err = (&_ModbusPDUGetComEventLogRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUGetComEventLogRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUGetComEventLogRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x0C && response == bool(true): // ModbusPDUGetComEventLogResponse
-		if _child, err = (&_ModbusPDUGetComEventLogResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUGetComEventLogResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUGetComEventLogResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x11 && response == bool(false): // ModbusPDUReportServerIdRequest
-		if _child, err = (&_ModbusPDUReportServerIdRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReportServerIdRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReportServerIdRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x11 && response == bool(true): // ModbusPDUReportServerIdResponse
-		if _child, err = (&_ModbusPDUReportServerIdResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReportServerIdResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReportServerIdResponse for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x2B && response == bool(false): // ModbusPDUReadDeviceIdentificationRequest
-		if _child, err = (&_ModbusPDUReadDeviceIdentificationRequest{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadDeviceIdentificationRequest).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadDeviceIdentificationRequest for type-switch of ModbusPDU")
 		}
 	case errorFlag == bool(false) && functionFlag == 0x2B && response == bool(true): // ModbusPDUReadDeviceIdentificationResponse
-		if _child, err = (&_ModbusPDUReadDeviceIdentificationResponse{}).parse(ctx, readBuffer, m, response); err != nil {
+		if _child, err = new(_ModbusPDUReadDeviceIdentificationResponse).parse(ctx, readBuffer, m, response); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModbusPDUReadDeviceIdentificationResponse for type-switch of ModbusPDU")
 		}
 	default:
diff --git a/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go b/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go
index c02a6d01a6..bd632d6392 100644
--- a/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go
+++ b/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go
@@ -135,931 +135,931 @@ func (m *_ExtensionObjectDefinition) parse(ctx context.Context, readBuffer utils
 	var _child ExtensionObjectDefinition
 	switch {
 	case identifier == "0": // NullExtension
-		if _child, err = (&_NullExtension{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NullExtension).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NullExtension for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12758": // Union
-		if _child, err = (&_Union{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_Union).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type Union for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "14535": // KeyValuePair
-		if _child, err = (&_KeyValuePair{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_KeyValuePair).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type KeyValuePair for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "16315": // AdditionalParametersType
-		if _child, err = (&_AdditionalParametersType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AdditionalParametersType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AdditionalParametersType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "17550": // EphemeralKeyType
-		if _child, err = (&_EphemeralKeyType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_EphemeralKeyType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EphemeralKeyType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15530": // EndpointType
-		if _child, err = (&_EndpointType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_EndpointType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EndpointType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32423": // BitFieldDefinition
-		if _child, err = (&_BitFieldDefinition{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BitFieldDefinition).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BitFieldDefinition for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "18808": // RationalNumber
-		if _child, err = (&_RationalNumber{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RationalNumber).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RationalNumber for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "18809": // OpcuaVector
-		if _child, err = (&_OpcuaVector{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_OpcuaVector).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type OpcuaVector for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "18811": // CartesianCoordinates
-		if _child, err = (&_CartesianCoordinates{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CartesianCoordinates).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CartesianCoordinates for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "18813": // Orientation
-		if _child, err = (&_Orientation{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_Orientation).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type Orientation for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "18815": // Frame
-		if _child, err = (&_Frame{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_Frame).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type Frame for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15636": // IdentityMappingRuleType
-		if _child, err = (&_IdentityMappingRuleType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_IdentityMappingRuleType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type IdentityMappingRuleType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "23500": // CurrencyUnitType
-		if _child, err = (&_CurrencyUnitType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CurrencyUnitType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CurrencyUnitType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32436": // AnnotationDataType
-		if _child, err = (&_AnnotationDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AnnotationDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AnnotationDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32437": // LinearConversionDataType
-		if _child, err = (&_LinearConversionDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_LinearConversionDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type LinearConversionDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32440": // QuantityDimension
-		if _child, err = (&_QuantityDimension{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QuantityDimension).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QuantityDimension for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12556": // TrustListDataType
-		if _child, err = (&_TrustListDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_TrustListDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TrustListDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32287": // TransactionErrorType
-		if _child, err = (&_TransactionErrorType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_TransactionErrorType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TransactionErrorType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15536": // DataTypeSchemaHeader
-		if _child, err = (&_DataTypeSchemaHeader{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataTypeSchemaHeader).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataTypeSchemaHeader for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "14527": // DataTypeDescription
-		if _child, err = (&_DataTypeDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataTypeDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataTypeDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "24107": // PortableQualifiedName
-		if _child, err = (&_PortableQualifiedName{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PortableQualifiedName).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PortableQualifiedName for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "24109": // UnsignedRationalNumber
-		if _child, err = (&_UnsignedRationalNumber{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_UnsignedRationalNumber).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UnsignedRationalNumber for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "14526": // FieldMetaData
-		if _child, err = (&_FieldMetaData{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FieldMetaData).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FieldMetaData for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "14595": // ConfigurationVersionDataType
-		if _child, err = (&_ConfigurationVersionDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ConfigurationVersionDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConfigurationVersionDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15582": // PublishedDataSetSourceDataType
-		if _child, err = (&_PublishedDataSetSourceDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PublishedDataSetSourceDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PublishedDataSetSourceDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "14275": // PublishedVariableDataType
-		if _child, err = (&_PublishedVariableDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PublishedVariableDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PublishedVariableDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15599": // DataSetWriterDataType
-		if _child, err = (&_DataSetWriterDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataSetWriterDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataSetWriterDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15600": // DataSetWriterTransportDataType
-		if _child, err = (&_DataSetWriterTransportDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataSetWriterTransportDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataSetWriterTransportDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15607": // DataSetWriterMessageDataType
-		if _child, err = (&_DataSetWriterMessageDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataSetWriterMessageDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataSetWriterMessageDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15611": // PubSubGroupDataType
-		if _child, err = (&_PubSubGroupDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PubSubGroupDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PubSubGroupDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15613": // WriterGroupTransportDataType
-		if _child, err = (&_WriterGroupTransportDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_WriterGroupTransportDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type WriterGroupTransportDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15618": // WriterGroupMessageDataType
-		if _child, err = (&_WriterGroupMessageDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_WriterGroupMessageDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type WriterGroupMessageDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15619": // PubSubConnectionDataType
-		if _child, err = (&_PubSubConnectionDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PubSubConnectionDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PubSubConnectionDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15620": // ConnectionTransportDataType
-		if _child, err = (&_ConnectionTransportDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ConnectionTransportDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ConnectionTransportDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15504": // NetworkAddressDataType
-		if _child, err = (&_NetworkAddressDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NetworkAddressDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NetworkAddressDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15623": // ReaderGroupTransportDataType
-		if _child, err = (&_ReaderGroupTransportDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReaderGroupTransportDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReaderGroupTransportDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15624": // ReaderGroupMessageDataType
-		if _child, err = (&_ReaderGroupMessageDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReaderGroupMessageDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReaderGroupMessageDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15630": // DataSetReaderTransportDataType
-		if _child, err = (&_DataSetReaderTransportDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataSetReaderTransportDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataSetReaderTransportDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15631": // DataSetReaderMessageDataType
-		if _child, err = (&_DataSetReaderMessageDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataSetReaderMessageDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataSetReaderMessageDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15632": // SubscribedDataSetDataType
-		if _child, err = (&_SubscribedDataSetDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SubscribedDataSetDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SubscribedDataSetDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "14746": // FieldTargetDataType
-		if _child, err = (&_FieldTargetDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FieldTargetDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FieldTargetDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15532": // PubSubConfigurationDataType
-		if _child, err = (&_PubSubConfigurationDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PubSubConfigurationDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PubSubConfigurationDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "23603": // SecurityGroupDataType
-		if _child, err = (&_SecurityGroupDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SecurityGroupDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SecurityGroupDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "25272": // PubSubKeyPushTargetDataType
-		if _child, err = (&_PubSubKeyPushTargetDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PubSubKeyPushTargetDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PubSubKeyPushTargetDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "23605": // QosDataType
-		if _child, err = (&_QosDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QosDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QosDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "25521": // PubSubConfigurationRefDataType
-		if _child, err = (&_PubSubConfigurationRefDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PubSubConfigurationRefDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PubSubConfigurationRefDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "23470": // AliasNameDataType
-		if _child, err = (&_AliasNameDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AliasNameDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AliasNameDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "24283": // UserManagementDataType
-		if _child, err = (&_UserManagementDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_UserManagementDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UserManagementDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "25222": // PriorityMappingEntryType
-		if _child, err = (&_PriorityMappingEntryType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PriorityMappingEntryType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PriorityMappingEntryType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32661": // ReferenceDescriptionDataType
-		if _child, err = (&_ReferenceDescriptionDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReferenceDescriptionDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReferenceDescriptionDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "32662": // ReferenceListEntryDataType
-		if _child, err = (&_ReferenceListEntryDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReferenceListEntryDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReferenceListEntryDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "98": // RolePermissionType
-		if _child, err = (&_RolePermissionType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RolePermissionType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RolePermissionType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "99": // DataTypeDefinition
-		if _child, err = (&_DataTypeDefinition{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DataTypeDefinition).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DataTypeDefinition for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "103": // StructureField
-		if _child, err = (&_StructureField{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_StructureField).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type StructureField for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "298": // Argument
-		if _child, err = (&_Argument{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_Argument).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type Argument for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "7596": // EnumValueType
-		if _child, err = (&_EnumValueType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_EnumValueType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EnumValueType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12757": // OptionSet
-		if _child, err = (&_OptionSet{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_OptionSet).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type OptionSet for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "8914": // TimeZoneDataType
-		if _child, err = (&_TimeZoneDataType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_TimeZoneDataType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TimeZoneDataType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "310": // ApplicationDescription
-		if _child, err = (&_ApplicationDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ApplicationDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ApplicationDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "391": // RequestHeader
-		if _child, err = (&_RequestHeader{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RequestHeader).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RequestHeader for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "394": // ResponseHeader
-		if _child, err = (&_ResponseHeader{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ResponseHeader).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ResponseHeader for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "397": // ServiceFault
-		if _child, err = (&_ServiceFault{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ServiceFault).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ServiceFault for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "15903": // SessionlessInvokeRequestType
-		if _child, err = (&_SessionlessInvokeRequestType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SessionlessInvokeRequestType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SessionlessInvokeRequestType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "21001": // SessionlessInvokeResponseType
-		if _child, err = (&_SessionlessInvokeResponseType{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SessionlessInvokeResponseType).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SessionlessInvokeResponseType for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "422": // FindServersRequest
-		if _child, err = (&_FindServersRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FindServersRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FindServersRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "425": // FindServersResponse
-		if _child, err = (&_FindServersResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FindServersResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FindServersResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12191": // ServerOnNetwork
-		if _child, err = (&_ServerOnNetwork{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ServerOnNetwork).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ServerOnNetwork for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12192": // FindServersOnNetworkRequest
-		if _child, err = (&_FindServersOnNetworkRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FindServersOnNetworkRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FindServersOnNetworkRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12193": // FindServersOnNetworkResponse
-		if _child, err = (&_FindServersOnNetworkResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FindServersOnNetworkResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FindServersOnNetworkResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "306": // UserTokenPolicy
-		if _child, err = (&_UserTokenPolicy{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_UserTokenPolicy).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UserTokenPolicy for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "314": // EndpointDescription
-		if _child, err = (&_EndpointDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_EndpointDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EndpointDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "428": // GetEndpointsRequest
-		if _child, err = (&_GetEndpointsRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_GetEndpointsRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetEndpointsRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "431": // GetEndpointsResponse
-		if _child, err = (&_GetEndpointsResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_GetEndpointsResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GetEndpointsResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "434": // RegisteredServer
-		if _child, err = (&_RegisteredServer{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisteredServer).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisteredServer for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "437": // RegisterServerRequest
-		if _child, err = (&_RegisterServerRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisterServerRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisterServerRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "440": // RegisterServerResponse
-		if _child, err = (&_RegisterServerResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisterServerResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisterServerResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12892": // DiscoveryConfiguration
-		if _child, err = (&_DiscoveryConfiguration{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DiscoveryConfiguration).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DiscoveryConfiguration for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12195": // RegisterServer2Request
-		if _child, err = (&_RegisterServer2Request{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisterServer2Request).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisterServer2Request for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "12196": // RegisterServer2Response
-		if _child, err = (&_RegisterServer2Response{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisterServer2Response).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisterServer2Response for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "443": // ChannelSecurityToken
-		if _child, err = (&_ChannelSecurityToken{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ChannelSecurityToken).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ChannelSecurityToken for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "446": // OpenSecureChannelRequest
-		if _child, err = (&_OpenSecureChannelRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_OpenSecureChannelRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type OpenSecureChannelRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "449": // OpenSecureChannelResponse
-		if _child, err = (&_OpenSecureChannelResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_OpenSecureChannelResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type OpenSecureChannelResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "452": // CloseSecureChannelRequest
-		if _child, err = (&_CloseSecureChannelRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CloseSecureChannelRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CloseSecureChannelRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "455": // CloseSecureChannelResponse
-		if _child, err = (&_CloseSecureChannelResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CloseSecureChannelResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CloseSecureChannelResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "346": // SignedSoftwareCertificate
-		if _child, err = (&_SignedSoftwareCertificate{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SignedSoftwareCertificate).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SignedSoftwareCertificate for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "458": // SignatureData
-		if _child, err = (&_SignatureData{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SignatureData).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SignatureData for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "461": // CreateSessionRequest
-		if _child, err = (&_CreateSessionRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CreateSessionRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateSessionRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "464": // CreateSessionResponse
-		if _child, err = (&_CreateSessionResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CreateSessionResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateSessionResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "467": // ActivateSessionRequest
-		if _child, err = (&_ActivateSessionRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ActivateSessionRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ActivateSessionRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "470": // ActivateSessionResponse
-		if _child, err = (&_ActivateSessionResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ActivateSessionResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ActivateSessionResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "473": // CloseSessionRequest
-		if _child, err = (&_CloseSessionRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CloseSessionRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CloseSessionRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "476": // CloseSessionResponse
-		if _child, err = (&_CloseSessionResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CloseSessionResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CloseSessionResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "479": // CancelRequest
-		if _child, err = (&_CancelRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CancelRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CancelRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "482": // CancelResponse
-		if _child, err = (&_CancelResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CancelResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CancelResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "351": // NodeAttributes
-		if _child, err = (&_NodeAttributes{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NodeAttributes).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NodeAttributes for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "17608": // GenericAttributeValue
-		if _child, err = (&_GenericAttributeValue{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_GenericAttributeValue).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type GenericAttributeValue for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "378": // AddNodesItem
-		if _child, err = (&_AddNodesItem{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddNodesItem).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddNodesItem for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "485": // AddNodesResult
-		if _child, err = (&_AddNodesResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddNodesResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddNodesResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "488": // AddNodesRequest
-		if _child, err = (&_AddNodesRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddNodesRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddNodesRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "491": // AddNodesResponse
-		if _child, err = (&_AddNodesResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddNodesResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddNodesResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "381": // AddReferencesItem
-		if _child, err = (&_AddReferencesItem{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddReferencesItem).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddReferencesItem for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "494": // AddReferencesRequest
-		if _child, err = (&_AddReferencesRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddReferencesRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddReferencesRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "497": // AddReferencesResponse
-		if _child, err = (&_AddReferencesResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AddReferencesResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AddReferencesResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "384": // DeleteNodesItem
-		if _child, err = (&_DeleteNodesItem{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteNodesItem).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteNodesItem for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "500": // DeleteNodesRequest
-		if _child, err = (&_DeleteNodesRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteNodesRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteNodesRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "503": // DeleteNodesResponse
-		if _child, err = (&_DeleteNodesResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteNodesResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteNodesResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "387": // DeleteReferencesItem
-		if _child, err = (&_DeleteReferencesItem{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteReferencesItem).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteReferencesItem for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "506": // DeleteReferencesRequest
-		if _child, err = (&_DeleteReferencesRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteReferencesRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteReferencesRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "509": // DeleteReferencesResponse
-		if _child, err = (&_DeleteReferencesResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteReferencesResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteReferencesResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "513": // ViewDescription
-		if _child, err = (&_ViewDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ViewDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ViewDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "516": // BrowseDescription
-		if _child, err = (&_BrowseDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowseDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowseDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "520": // ReferenceDescription
-		if _child, err = (&_ReferenceDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReferenceDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReferenceDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "524": // BrowseResult
-		if _child, err = (&_BrowseResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowseResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowseResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "527": // BrowseRequest
-		if _child, err = (&_BrowseRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowseRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowseRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "530": // BrowseResponse
-		if _child, err = (&_BrowseResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowseResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowseResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "533": // BrowseNextRequest
-		if _child, err = (&_BrowseNextRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowseNextRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowseNextRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "536": // BrowseNextResponse
-		if _child, err = (&_BrowseNextResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowseNextResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowseNextResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "539": // RelativePathElement
-		if _child, err = (&_RelativePathElement{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RelativePathElement).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RelativePathElement for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "542": // RelativePath
-		if _child, err = (&_RelativePath{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RelativePath).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RelativePath for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "545": // BrowsePath
-		if _child, err = (&_BrowsePath{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowsePath).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowsePath for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "548": // BrowsePathTarget
-		if _child, err = (&_BrowsePathTarget{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowsePathTarget).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowsePathTarget for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "551": // BrowsePathResult
-		if _child, err = (&_BrowsePathResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_BrowsePathResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type BrowsePathResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "554": // TranslateBrowsePathsToNodeIdsRequest
-		if _child, err = (&_TranslateBrowsePathsToNodeIdsRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_TranslateBrowsePathsToNodeIdsRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TranslateBrowsePathsToNodeIdsRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "557": // TranslateBrowsePathsToNodeIdsResponse
-		if _child, err = (&_TranslateBrowsePathsToNodeIdsResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_TranslateBrowsePathsToNodeIdsResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TranslateBrowsePathsToNodeIdsResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "560": // RegisterNodesRequest
-		if _child, err = (&_RegisterNodesRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisterNodesRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisterNodesRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "563": // RegisterNodesResponse
-		if _child, err = (&_RegisterNodesResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RegisterNodesResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RegisterNodesResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "566": // UnregisterNodesRequest
-		if _child, err = (&_UnregisterNodesRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_UnregisterNodesRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UnregisterNodesRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "569": // UnregisterNodesResponse
-		if _child, err = (&_UnregisterNodesResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_UnregisterNodesResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type UnregisterNodesResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "333": // EndpointConfiguration
-		if _child, err = (&_EndpointConfiguration{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_EndpointConfiguration).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EndpointConfiguration for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "572": // QueryDataDescription
-		if _child, err = (&_QueryDataDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QueryDataDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QueryDataDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "575": // NodeTypeDescription
-		if _child, err = (&_NodeTypeDescription{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NodeTypeDescription).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NodeTypeDescription for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "579": // QueryDataSet
-		if _child, err = (&_QueryDataSet{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QueryDataSet).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QueryDataSet for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "582": // NodeReference
-		if _child, err = (&_NodeReference{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NodeReference).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NodeReference for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "585": // ContentFilterElement
-		if _child, err = (&_ContentFilterElement{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ContentFilterElement).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ContentFilterElement for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "588": // ContentFilter
-		if _child, err = (&_ContentFilter{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ContentFilter).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ContentFilter for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "591": // FilterOperand
-		if _child, err = (&_FilterOperand{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_FilterOperand).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type FilterOperand for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "606": // ContentFilterElementResult
-		if _child, err = (&_ContentFilterElementResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ContentFilterElementResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ContentFilterElementResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "609": // ContentFilterResult
-		if _child, err = (&_ContentFilterResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ContentFilterResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ContentFilterResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "612": // ParsingResult
-		if _child, err = (&_ParsingResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ParsingResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ParsingResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "615": // QueryFirstRequest
-		if _child, err = (&_QueryFirstRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QueryFirstRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QueryFirstRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "618": // QueryFirstResponse
-		if _child, err = (&_QueryFirstResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QueryFirstResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QueryFirstResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "621": // QueryNextRequest
-		if _child, err = (&_QueryNextRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QueryNextRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QueryNextRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "624": // QueryNextResponse
-		if _child, err = (&_QueryNextResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_QueryNextResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type QueryNextResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "628": // ReadValueId
-		if _child, err = (&_ReadValueId{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReadValueId).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReadValueId for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "631": // ReadRequest
-		if _child, err = (&_ReadRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReadRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReadRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "634": // ReadResponse
-		if _child, err = (&_ReadResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ReadResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ReadResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "637": // HistoryReadValueId
-		if _child, err = (&_HistoryReadValueId{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryReadValueId).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryReadValueId for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "640": // HistoryReadResult
-		if _child, err = (&_HistoryReadResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryReadResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryReadResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "643": // HistoryReadDetails
-		if _child, err = (&_HistoryReadDetails{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryReadDetails).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryReadDetails for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "658": // HistoryData
-		if _child, err = (&_HistoryData{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryData).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryData for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "11218": // ModificationInfo
-		if _child, err = (&_ModificationInfo{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ModificationInfo).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModificationInfo for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "661": // HistoryEvent
-		if _child, err = (&_HistoryEvent{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryEvent).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryEvent for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "664": // HistoryReadRequest
-		if _child, err = (&_HistoryReadRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryReadRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryReadRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "667": // HistoryReadResponse
-		if _child, err = (&_HistoryReadResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryReadResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryReadResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "670": // WriteValue
-		if _child, err = (&_WriteValue{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_WriteValue).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type WriteValue for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "673": // WriteRequest
-		if _child, err = (&_WriteRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_WriteRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type WriteRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "676": // WriteResponse
-		if _child, err = (&_WriteResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_WriteResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type WriteResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "679": // HistoryUpdateDetails
-		if _child, err = (&_HistoryUpdateDetails{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryUpdateDetails).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryUpdateDetails for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "697": // HistoryUpdateResult
-		if _child, err = (&_HistoryUpdateResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryUpdateResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryUpdateResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "700": // HistoryUpdateRequest
-		if _child, err = (&_HistoryUpdateRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryUpdateRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryUpdateRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "703": // HistoryUpdateResponse
-		if _child, err = (&_HistoryUpdateResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryUpdateResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryUpdateResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "706": // CallMethodRequest
-		if _child, err = (&_CallMethodRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CallMethodRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CallMethodRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "709": // CallMethodResult
-		if _child, err = (&_CallMethodResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CallMethodResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CallMethodResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "712": // CallRequest
-		if _child, err = (&_CallRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CallRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CallRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "715": // CallResponse
-		if _child, err = (&_CallResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CallResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CallResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "721": // MonitoringFilter
-		if _child, err = (&_MonitoringFilter{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoringFilter).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoringFilter for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "950": // AggregateConfiguration
-		if _child, err = (&_AggregateConfiguration{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_AggregateConfiguration).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type AggregateConfiguration for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "733": // MonitoringFilterResult
-		if _child, err = (&_MonitoringFilterResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoringFilterResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoringFilterResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "742": // MonitoringParameters
-		if _child, err = (&_MonitoringParameters{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoringParameters).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoringParameters for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "745": // MonitoredItemCreateRequest
-		if _child, err = (&_MonitoredItemCreateRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoredItemCreateRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredItemCreateRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "748": // MonitoredItemCreateResult
-		if _child, err = (&_MonitoredItemCreateResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoredItemCreateResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredItemCreateResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "751": // CreateMonitoredItemsRequest
-		if _child, err = (&_CreateMonitoredItemsRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CreateMonitoredItemsRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateMonitoredItemsRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "754": // CreateMonitoredItemsResponse
-		if _child, err = (&_CreateMonitoredItemsResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CreateMonitoredItemsResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateMonitoredItemsResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "757": // MonitoredItemModifyRequest
-		if _child, err = (&_MonitoredItemModifyRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoredItemModifyRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredItemModifyRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "760": // MonitoredItemModifyResult
-		if _child, err = (&_MonitoredItemModifyResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoredItemModifyResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredItemModifyResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "763": // ModifyMonitoredItemsRequest
-		if _child, err = (&_ModifyMonitoredItemsRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ModifyMonitoredItemsRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModifyMonitoredItemsRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "766": // ModifyMonitoredItemsResponse
-		if _child, err = (&_ModifyMonitoredItemsResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ModifyMonitoredItemsResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModifyMonitoredItemsResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "769": // SetMonitoringModeRequest
-		if _child, err = (&_SetMonitoringModeRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SetMonitoringModeRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetMonitoringModeRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "772": // SetMonitoringModeResponse
-		if _child, err = (&_SetMonitoringModeResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SetMonitoringModeResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetMonitoringModeResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "775": // SetTriggeringRequest
-		if _child, err = (&_SetTriggeringRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SetTriggeringRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetTriggeringRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "778": // SetTriggeringResponse
-		if _child, err = (&_SetTriggeringResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SetTriggeringResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetTriggeringResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "781": // DeleteMonitoredItemsRequest
-		if _child, err = (&_DeleteMonitoredItemsRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteMonitoredItemsRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteMonitoredItemsRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "784": // DeleteMonitoredItemsResponse
-		if _child, err = (&_DeleteMonitoredItemsResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_DeleteMonitoredItemsResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type DeleteMonitoredItemsResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "787": // CreateSubscriptionRequest
-		if _child, err = (&_CreateSubscriptionRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CreateSubscriptionRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateSubscriptionRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "790": // CreateSubscriptionResponse
-		if _child, err = (&_CreateSubscriptionResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_CreateSubscriptionResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type CreateSubscriptionResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "793": // ModifySubscriptionRequest
-		if _child, err = (&_ModifySubscriptionRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ModifySubscriptionRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModifySubscriptionRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "796": // ModifySubscriptionResponse
-		if _child, err = (&_ModifySubscriptionResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_ModifySubscriptionResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type ModifySubscriptionResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "799": // SetPublishingModeRequest
-		if _child, err = (&_SetPublishingModeRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SetPublishingModeRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetPublishingModeRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "802": // SetPublishingModeResponse
-		if _child, err = (&_SetPublishingModeResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SetPublishingModeResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SetPublishingModeResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "805": // NotificationMessage
-		if _child, err = (&_NotificationMessage{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NotificationMessage).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NotificationMessage for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "947": // NotificationData
-		if _child, err = (&_NotificationData{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_NotificationData).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type NotificationData for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "808": // MonitoredItemNotification
-		if _child, err = (&_MonitoredItemNotification{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_MonitoredItemNotification).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type MonitoredItemNotification for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "919": // EventFieldList
-		if _child, err = (&_EventFieldList{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_EventFieldList).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type EventFieldList for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "922": // HistoryEventFieldList
-		if _child, err = (&_HistoryEventFieldList{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_HistoryEventFieldList).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type HistoryEventFieldList for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "823": // SubscriptionAcknowledgement
-		if _child, err = (&_SubscriptionAcknowledgement{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_SubscriptionAcknowledgement).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type SubscriptionAcknowledgement for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "826": // PublishRequest
-		if _child, err = (&_PublishRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PublishRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PublishRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "829": // PublishResponse
-		if _child, err = (&_PublishResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_PublishResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type PublishResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "832": // RepublishRequest
-		if _child, err = (&_RepublishRequest{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RepublishRequest).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RepublishRequest for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "835": // RepublishResponse
-		if _child, err = (&_RepublishResponse{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_RepublishResponse).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type RepublishResponse for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "838": // TransferResult
-		if _child, err = (&_TransferResult{}).parse(ctx, readBuffer, m, identifier); err != nil {
+		if _child, err = new(_TransferResult).parse(ctx, readBuffer, m, identifier); err != nil {
 			return nil, errors.Wrap(err, "Error parsing sub-type TransferResult for type-switch of ExtensionObjectDefinition")
 		}
 	case identifier == "841": // TransferSubscriptionsRequest
... 866 lines suppressed ...