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 61f95d7366 fix(code-gen/go): sub types should now be assignable
61f95d7366 is described below

commit 61f95d7366ac131ea95dbb86427f166ba8624e2e
Author: Sebastian Rühl <[email protected]>
AuthorDate: Thu Oct 24 13:31:25 2024 +0200

    fix(code-gen/go): sub types should now be assignable
---
 .../templates/go/complex-type-template.go.ftlh     |  5 ++-
 .../protocols/opcua/ParserSerializerTestsuite.xml  | 46 +++++++++++-----------
 .../readwrite/model/CIPEncapsulationPacket.go      |  5 ++-
 .../abeth/readwrite/model/DF1RequestCommand.go     |  5 ++-
 .../abeth/readwrite/model/DF1RequestMessage.go     |  5 ++-
 .../abeth/readwrite/model/DF1ResponseMessage.go    |  5 ++-
 .../discovery/readwrite/model/AdsDiscoveryBlock.go |  5 ++-
 .../ads/readwrite/model/AdsMultiRequestItem.go     |  5 ++-
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |  5 ++-
 plc4go/protocols/bacnetip/readwrite/model/APDU.go  |  5 ++-
 .../readwrite/model/BACnetApplicationTag.go        |  7 +++-
 .../readwrite/model/BACnetCalendarEntry.go         |  5 ++-
 .../bacnetip/readwrite/model/BACnetChannelValue.go |  5 ++-
 .../bacnetip/readwrite/model/BACnetClientCOV.go    |  5 ++-
 .../model/BACnetConfirmedServiceRequest.go         |  5 ++-
 ...edServiceRequestAtomicReadFileStreamOrRecord.go |  5 ++-
 ...rviceRequestConfirmedTextMessageMessageClass.go |  5 ++-
 .../BACnetConfirmedServiceRequestReadRangeRange.go |  5 ++-
 .../readwrite/model/BACnetConstructedData.go       |  5 ++-
 .../bacnetip/readwrite/model/BACnetContextTag.go   |  7 +++-
 .../bacnetip/readwrite/model/BACnetError.go        |  5 ++-
 .../model/BACnetEventLogRecordLogDatum.go          |  5 ++-
 .../readwrite/model/BACnetEventParameter.go        |  5 ++-
 ...BACnetEventParameterChangeOfValueCivCriteria.go |  5 ++-
 .../readwrite/model/BACnetFaultParameter.go        |  5 ++-
 ...etFaultParameterFaultExtendedParametersEntry.go |  5 ++-
 ...tFaultParameterFaultOutOfRangeMaxNormalValue.go |  5 ++-
 ...tFaultParameterFaultOutOfRangeMinNormalValue.go |  5 ++-
 .../bacnetip/readwrite/model/BACnetHostAddress.go  |  5 ++-
 .../model/BACnetLandingCallStatusCommand.go        |  5 ++-
 .../bacnetip/readwrite/model/BACnetLogData.go      |  5 ++-
 .../readwrite/model/BACnetLogDataLogDataEntry.go   |  5 ++-
 .../readwrite/model/BACnetLogRecordLogDatum.go     |  5 ++-
 .../model/BACnetNotificationParameters.go          |  5 ++-
 ...ationParametersChangeOfDiscreteValueNewValue.go |  5 ++-
 ...tNotificationParametersChangeOfValueNewValue.go |  5 ++-
 .../readwrite/model/BACnetOptionalBinaryPV.go      |  5 ++-
 .../model/BACnetOptionalCharacterString.go         |  5 ++-
 .../bacnetip/readwrite/model/BACnetOptionalREAL.go |  5 ++-
 .../readwrite/model/BACnetOptionalUnsigned.go      |  5 ++-
 .../readwrite/model/BACnetPriorityValue.go         |  5 ++-
 .../readwrite/model/BACnetProcessIdSelection.go    |  5 ++-
 .../BACnetPropertyAccessResultAccessResult.go      |  5 ++-
 .../readwrite/model/BACnetPropertyStates.go        |  5 ++-
 .../bacnetip/readwrite/model/BACnetRecipient.go    |  5 ++-
 .../bacnetip/readwrite/model/BACnetScale.go        |  5 ++-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |  5 ++-
 ...BACnetServiceAckAtomicReadFileStreamOrRecord.go |  5 ++-
 .../bacnetip/readwrite/model/BACnetShedLevel.go    |  5 ++-
 .../readwrite/model/BACnetSpecialEventPeriod.go    |  5 ++-
 .../bacnetip/readwrite/model/BACnetTimeStamp.go    |  5 ++-
 .../readwrite/model/BACnetTimerStateChangeValue.go |  5 ++-
 .../model/BACnetUnconfirmedServiceRequest.go       |  5 ++-
 .../BACnetUnconfirmedServiceRequestWhoHasObject.go |  5 ++-
 .../bacnetip/readwrite/model/BACnetValueSource.go  |  5 ++-
 plc4go/protocols/bacnetip/readwrite/model/BVLC.go  |  5 ++-
 plc4go/protocols/bacnetip/readwrite/model/NLM.go   |  5 ++-
 .../cbus/readwrite/model/AccessControlData.go      |  5 ++-
 .../cbus/readwrite/model/AirConditioningData.go    |  5 ++-
 plc4go/protocols/cbus/readwrite/model/CALData.go   |  5 ++-
 plc4go/protocols/cbus/readwrite/model/CALReply.go  |  9 +++--
 .../protocols/cbus/readwrite/model/CBusCommand.go  |  7 +++-
 .../protocols/cbus/readwrite/model/CBusMessage.go  |  5 ++-
 .../model/CBusPointToMultiPointCommand.go          |  5 ++-
 .../readwrite/model/CBusPointToPointCommand.go     |  5 ++-
 .../model/CBusPointToPointToMultiPointCommand.go   |  5 ++-
 .../readwrite/model/ClockAndTimekeepingData.go     |  5 ++-
 .../protocols/cbus/readwrite/model/EncodedReply.go |  5 ++-
 .../cbus/readwrite/model/ErrorReportingData.go     |  5 ++-
 .../model/ErrorReportingSystemCategoryType.go      |  5 ++-
 .../cbus/readwrite/model/IdentifyReplyCommand.go   |  5 ++-
 .../cbus/readwrite/model/LevelInformation.go       |  7 +++-
 .../protocols/cbus/readwrite/model/LightingData.go |  5 ++-
 .../cbus/readwrite/model/MeasurementData.go        |  5 ++-
 .../readwrite/model/MediaTransportControlData.go   |  5 ++-
 .../protocols/cbus/readwrite/model/MeteringData.go |  5 ++-
 .../protocols/cbus/readwrite/model/MonitoredSAL.go |  7 +++-
 .../cbus/readwrite/model/ParameterValue.go         |  5 ++-
 plc4go/protocols/cbus/readwrite/model/Reply.go     |  5 ++-
 .../cbus/readwrite/model/ReplyOrConfirmation.go    |  5 ++-
 plc4go/protocols/cbus/readwrite/model/Request.go   |  5 ++-
 plc4go/protocols/cbus/readwrite/model/SALData.go   |  7 +++-
 .../protocols/cbus/readwrite/model/SecurityData.go |  5 ++-
 .../cbus/readwrite/model/StatusRequest.go          |  5 ++-
 .../cbus/readwrite/model/TelephonyData.go          |  5 ++-
 .../cbus/readwrite/model/TriggerControlData.go     |  5 ++-
 plc4go/protocols/df1/readwrite/model/DF1Command.go |  5 ++-
 plc4go/protocols/df1/readwrite/model/DF1Symbol.go  |  5 ++-
 plc4go/protocols/eip/readwrite/model/CipService.go |  5 ++-
 .../eip/readwrite/model/CommandSpecificDataItem.go |  5 ++-
 .../eip/readwrite/model/DataSegmentType.go         |  5 ++-
 plc4go/protocols/eip/readwrite/model/EipPacket.go  |  5 ++-
 .../eip/readwrite/model/LogicalSegmentType.go      |  5 ++-
 .../protocols/eip/readwrite/model/PathSegment.go   |  5 ++-
 .../eip/readwrite/model/PortSegmentType.go         |  5 ++-
 plc4go/protocols/eip/readwrite/model/TypeId.go     |  5 ++-
 .../firmata/readwrite/model/FirmataCommand.go      |  5 ++-
 .../firmata/readwrite/model/FirmataMessage.go      |  5 ++-
 .../firmata/readwrite/model/SysexCommand.go        |  5 ++-
 plc4go/protocols/knxnetip/readwrite/model/Apdu.go  |  5 ++-
 .../knxnetip/readwrite/model/ApduControl.go        |  5 ++-
 .../protocols/knxnetip/readwrite/model/ApduData.go |  5 ++-
 .../knxnetip/readwrite/model/ApduDataExt.go        |  5 ++-
 plc4go/protocols/knxnetip/readwrite/model/CEMI.go  |  5 ++-
 .../readwrite/model/CEMIAdditionalInformation.go   |  5 ++-
 .../knxnetip/readwrite/model/ComObjectTable.go     |  5 ++-
 .../model/ConnectionRequestInformation.go          |  5 ++-
 .../readwrite/model/ConnectionResponseDataBlock.go |  5 ++-
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |  5 ++-
 .../knxnetip/readwrite/model/KnxManufacturer.go    | 26 +++++++++---
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |  5 ++-
 .../knxnetip/readwrite/model/LDataFrame.go         |  5 ++-
 .../knxnetip/readwrite/model/ServiceId.go          |  5 ++-
 .../protocols/modbus/readwrite/model/ModbusADU.go  |  5 ++-
 .../protocols/modbus/readwrite/model/ModbusPDU.go  |  5 ++-
 .../readwrite/model/ExtensionObjectDefinition.go   |  5 ++-
 .../protocols/opcua/readwrite/model/MessagePDU.go  |  7 +++-
 .../opcua/readwrite/model/NodeIdTypeDefinition.go  |  5 ++-
 .../opcua/readwrite/model/OpenChannelMessage.go    |  5 ++-
 plc4go/protocols/opcua/readwrite/model/Payload.go  |  5 ++-
 .../readwrite/model/UserIdentityTokenDefinition.go |  5 ++-
 plc4go/protocols/opcua/readwrite/model/Variant.go  |  5 ++-
 plc4go/protocols/s7/readwrite/model/COTPPacket.go  |  5 ++-
 .../protocols/s7/readwrite/model/COTPParameter.go  |  5 ++-
 .../s7/readwrite/model/CycServiceItemType.go       |  5 ++-
 plc4go/protocols/s7/readwrite/model/S7Address.go   |  5 ++-
 .../s7/readwrite/model/S7DataAlarmMessage.go       |  5 ++-
 plc4go/protocols/s7/readwrite/model/S7Message.go   |  5 ++-
 plc4go/protocols/s7/readwrite/model/S7Parameter.go |  5 ++-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |  5 ++-
 plc4go/protocols/s7/readwrite/model/S7Payload.go   |  5 ++-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |  5 ++-
 .../readwrite/model/S7VarRequestParameterItem.go   |  5 ++-
 .../protocols/knxnetip/knx-master-data.mspec       |  5 ++-
 134 files changed, 580 insertions(+), 170 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 66ec2bc459..f81bde7406 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
@@ -199,7 +199,10 @@ type _${type.name} struct {
        ${type.parentType.orElseThrow().name}Contract
 </#if>
 <#if type.isDiscriminatedParentTypeDefinition()>
-       _SubType ${type.name}
+       _SubType interface {
+               ${type.name}Contract
+               ${type.name}Requirements
+       }
 </#if>
 <#-- Property fields are fields that require a property in the pojo -->
 <#if type.propertyFields?has_content>
diff --git 
a/plc4go/assets/testing/protocols/opcua/ParserSerializerTestsuite.xml 
b/plc4go/assets/testing/protocols/opcua/ParserSerializerTestsuite.xml
index 9fc863cfd5..488655b5b0 100644
--- a/plc4go/assets/testing/protocols/opcua/ParserSerializerTestsuite.xml
+++ b/plc4go/assets/testing/protocols/opcua/ParserSerializerTestsuite.xml
@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      https://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   https://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
   -->
 <test:testsuite 
xmlns:test="https://plc4x.apache.org/schemas/parser-serializer-testsuite.xsd";
-                byteOrder="LITTLE_ENDIAN">
+  byteOrder="LITTLE_ENDIAN">
 
   <name>OPCUA</name>
 
@@ -65,7 +65,7 @@
   <testcase>
     <name>OPC UA Anonymous Identity Token</name>
     <raw>09000000616e6f6e796d6f7573</raw>
-    <root-type>UserIdentityToken</root-type>
+    <root-type>ExtensionObjectDefinition</root-type>
     <parser-arguments>
       <extensionId>321</extensionId>
     </parser-arguments>
@@ -142,7 +142,7 @@
   <testcase>
     <name>OPC UA Activate Session request</name>
     
<raw>0500002000000084428062123302a3e7470f91899aa477deeab6ba1d83368c8a8e1a5bfffefa6de065de8f04edda010200000000000000ffffffff30750000000000ffffffffffffffff000000000000000001004101010d00000009000000616e6f6e796d6f7573ffffffffffffffff</raw>
-    <root-type>ActivateSessionRequest</root-type>
+    <root-type>ExtensionObjectDefinition</root-type>
     <parser-arguments>
       <extensionId>467</extensionId>
     </parser-arguments>
@@ -311,7 +311,7 @@
   <testcase>
     <name>OPC UA Publish Response Payload (data change)</name>
     
<raw>20427b9004edda01350000000000000000ffffffff000000010000000100000001000000000100000020427b9004edda010100000001002b03012200000001000000010000000d0620000000f0cc098e04edda017089e98f04edda01000000000000000000000000</raw>
-    <root-type>PublishResponse</root-type>
+    <root-type>ExtensionObjectDefinition</root-type>
     <parser-arguments>
       <extensionId>829</extensionId>
     </parser-arguments>
@@ -484,7 +484,7 @@
   <testcase>
     <name>OPC UA Publish Response Payload (event notification)</name>
     
<raw>a07f7459ddf3da016c0200000000000000ffffffff0000000300000001000000010000000001000000a07f7459ddf3da010100000001009403012301000003000000050000000b0000000000000f08000000000000000000001a0c06000000536572766572050100110100cd081503000000000d000000526566726573682053746172740d5040e158ddf3da01110100e30a110000050000000b00000001000100000f10000000000000000000001700000000000000120c070000004d794c6576656c05f40111030600070000004d794c6576656c1503000000000e0000004c6576656c2065786365656465640d2011055
 [...]
-    <root-type>PublishResponse</root-type>
+    <root-type>ExtensionObjectDefinition</root-type>
     <parser-arguments>
       <extensionId>829</extensionId>
     </parser-arguments>
@@ -1244,7 +1244,7 @@
   <testcase>
     <name>OPC UA Notification Message</name>
     
<raw>010000008084ff018fedda010100000001002b03012200000001000000010000000d062000000000222ffb8eedda0120d592008fedda0100000000</raw>
-    <root-type>PublishResponse</root-type>
+    <root-type>ExtensionObjectDefinition</root-type>
     <parser-arguments>
       <extensionId>805</extensionId>
     </parser-arguments>
@@ -1427,7 +1427,7 @@
   <testcase>
     <name>OPC UA Monitored Item Notification</name>
     <raw>010000000d062000000000222ffb8eedda0120d592008fedda01</raw>
-    <root-type>MonitoredItemNotification</root-type>
+    <root-type>ExtensionObjectDefinition</root-type>
     <parser-arguments>
       <extensionId>808</extensionId>
     </parser-arguments>
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go 
b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
index a7c3a3361b..cd827ed395 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
@@ -75,7 +75,10 @@ type CIPEncapsulationPacketRequirements interface {
 
 // _CIPEncapsulationPacket is the data-structure of this message
 type _CIPEncapsulationPacket struct {
-       _SubType      CIPEncapsulationPacket
+       _SubType interface {
+               CIPEncapsulationPacketContract
+               CIPEncapsulationPacketRequirements
+       }
        SessionHandle uint32
        Status        uint32
        SenderContext []uint8
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go 
b/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
index 853a12d318..a5a5964572 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
@@ -65,7 +65,10 @@ type DF1RequestCommandRequirements interface {
 
 // _DF1RequestCommand is the data-structure of this message
 type _DF1RequestCommand struct {
-       _SubType DF1RequestCommand
+       _SubType interface {
+               DF1RequestCommandContract
+               DF1RequestCommandRequirements
+       }
 }
 
 var _ DF1RequestCommandContract = (*_DF1RequestCommand)(nil)
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go 
b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
index c686b71005..5f3c583289 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
@@ -73,7 +73,10 @@ type DF1RequestMessageRequirements interface {
 
 // _DF1RequestMessage is the data-structure of this message
 type _DF1RequestMessage struct {
-       _SubType           DF1RequestMessage
+       _SubType interface {
+               DF1RequestMessageContract
+               DF1RequestMessageRequirements
+       }
        DestinationAddress uint8
        SourceAddress      uint8
        Status             uint8
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go 
b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
index a31ba1c2b1..db41792065 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
@@ -75,7 +75,10 @@ type DF1ResponseMessageRequirements interface {
 
 // _DF1ResponseMessage is the data-structure of this message
 type _DF1ResponseMessage struct {
-       _SubType           DF1ResponseMessage
+       _SubType interface {
+               DF1ResponseMessageContract
+               DF1ResponseMessageRequirements
+       }
        DestinationAddress uint8
        SourceAddress      uint8
        Status             uint8
diff --git 
a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go 
b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
index 0f605b642e..3ec55530f1 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
@@ -65,7 +65,10 @@ type AdsDiscoveryBlockRequirements interface {
 
 // _AdsDiscoveryBlock is the data-structure of this message
 type _AdsDiscoveryBlock struct {
-       _SubType AdsDiscoveryBlock
+       _SubType interface {
+               AdsDiscoveryBlockContract
+               AdsDiscoveryBlockRequirements
+       }
 }
 
 var _ AdsDiscoveryBlockContract = (*_AdsDiscoveryBlock)(nil)
diff --git a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go 
b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
index 67bf6fc90a..17f75f58f5 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
@@ -63,7 +63,10 @@ type AdsMultiRequestItemRequirements interface {
 
 // _AdsMultiRequestItem is the data-structure of this message
 type _AdsMultiRequestItem struct {
-       _SubType AdsMultiRequestItem
+       _SubType interface {
+               AdsMultiRequestItemContract
+               AdsMultiRequestItemRequirements
+       }
 }
 
 var _ AdsMultiRequestItemContract = (*_AdsMultiRequestItem)(nil)
diff --git a/plc4go/protocols/ads/readwrite/model/AmsPacket.go 
b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
index a155bfc984..9d70d26d5e 100644
--- a/plc4go/protocols/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
@@ -91,7 +91,10 @@ type AmsPacketRequirements interface {
 
 // _AmsPacket is the data-structure of this message
 type _AmsPacket struct {
-       _SubType       AmsPacket
+       _SubType interface {
+               AmsPacketContract
+               AmsPacketRequirements
+       }
        TargetAmsNetId AmsNetId
        TargetAmsPort  uint16
        SourceAmsNetId AmsNetId
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDU.go 
b/plc4go/protocols/bacnetip/readwrite/model/APDU.go
index b0d5638f60..7ce2c5fb18 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDU.go
@@ -67,7 +67,10 @@ type APDURequirements interface {
 
 // _APDU is the data-structure of this message
 type _APDU struct {
-       _SubType APDU
+       _SubType interface {
+               APDUContract
+               APDURequirements
+       }
 
        // Arguments.
        ApduLength uint16
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
index 2861c24067..d28be087fc 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
@@ -71,8 +71,11 @@ type BACnetApplicationTagRequirements interface {
 
 // _BACnetApplicationTag is the data-structure of this message
 type _BACnetApplicationTag struct {
-       _SubType BACnetApplicationTag
-       Header   BACnetTagHeader
+       _SubType interface {
+               BACnetApplicationTagContract
+               BACnetApplicationTagRequirements
+       }
+       Header BACnetTagHeader
 }
 
 var _ BACnetApplicationTagContract = (*_BACnetApplicationTag)(nil)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
index 42b50352ea..67787aa7eb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
@@ -69,7 +69,10 @@ type BACnetCalendarEntryRequirements interface {
 
 // _BACnetCalendarEntry is the data-structure of this message
 type _BACnetCalendarEntry struct {
-       _SubType        BACnetCalendarEntry
+       _SubType interface {
+               BACnetCalendarEntryContract
+               BACnetCalendarEntryRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
index dad3262587..1bd82d1bde 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
@@ -73,7 +73,10 @@ type BACnetChannelValueRequirements interface {
 
 // _BACnetChannelValue is the data-structure of this message
 type _BACnetChannelValue struct {
-       _SubType        BACnetChannelValue
+       _SubType interface {
+               BACnetChannelValueContract
+               BACnetChannelValueRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
index 4b459ed3da..e7faf3594d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
@@ -69,7 +69,10 @@ type BACnetClientCOVRequirements interface {
 
 // _BACnetClientCOV is the data-structure of this message
 type _BACnetClientCOV struct {
-       _SubType        BACnetClientCOV
+       _SubType interface {
+               BACnetClientCOVContract
+               BACnetClientCOVRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index 0281e07bad..82748f545a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -69,7 +69,10 @@ type BACnetConfirmedServiceRequestRequirements interface {
 
 // _BACnetConfirmedServiceRequest is the data-structure of this message
 type _BACnetConfirmedServiceRequest struct {
-       _SubType BACnetConfirmedServiceRequest
+       _SubType interface {
+               BACnetConfirmedServiceRequestContract
+               BACnetConfirmedServiceRequestRequirements
+       }
 
        // Arguments.
        ServiceRequestLength uint32
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
index b4d75216ea..d9fd639fc4 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
@@ -73,7 +73,10 @@ type 
BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordRequirements inter
 
 // _BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord is the 
data-structure of this message
 type _BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord struct {
-       _SubType        
BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
+       _SubType interface {
+               
BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordContract
+               
BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordRequirements
+       }
        PeekedTagHeader BACnetTagHeader
        OpeningTag      BACnetOpeningTag
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
index 68f96722d3..ccfe891391 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
@@ -75,7 +75,10 @@ type 
BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassRequirements i
 
 // _BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass is the 
data-structure of this message
 type _BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass struct {
-       _SubType        
BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+       _SubType interface {
+               
BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassContract
+               
BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
index cb09db4995..e61bb5c4df 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
@@ -73,7 +73,10 @@ type BACnetConfirmedServiceRequestReadRangeRangeRequirements 
interface {
 
 // _BACnetConfirmedServiceRequestReadRangeRange is the data-structure of this 
message
 type _BACnetConfirmedServiceRequestReadRangeRange struct {
-       _SubType        BACnetConfirmedServiceRequestReadRangeRange
+       _SubType interface {
+               BACnetConfirmedServiceRequestReadRangeRangeContract
+               BACnetConfirmedServiceRequestReadRangeRangeRequirements
+       }
        PeekedTagHeader BACnetTagHeader
        OpeningTag      BACnetOpeningTag
        ClosingTag      BACnetClosingTag
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
index 0fdc67a4e9..22100ee0dd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
@@ -81,7 +81,10 @@ type BACnetConstructedDataRequirements interface {
 
 // _BACnetConstructedData is the data-structure of this message
 type _BACnetConstructedData struct {
-       _SubType        BACnetConstructedData
+       _SubType interface {
+               BACnetConstructedDataContract
+               BACnetConstructedDataRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go
index 2af4f444c6..919fbafef0 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetContextTag.go
@@ -73,8 +73,11 @@ type BACnetContextTagRequirements interface {
 
 // _BACnetContextTag is the data-structure of this message
 type _BACnetContextTag struct {
-       _SubType BACnetContextTag
-       Header   BACnetTagHeader
+       _SubType interface {
+               BACnetContextTagContract
+               BACnetContextTagRequirements
+       }
+       Header BACnetTagHeader
 
        // Arguments.
        TagNumberArgument uint8
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go
index fe39213fb4..646285eb95 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetError.go
@@ -63,7 +63,10 @@ type BACnetErrorRequirements interface {
 
 // _BACnetError is the data-structure of this message
 type _BACnetError struct {
-       _SubType BACnetError
+       _SubType interface {
+               BACnetErrorContract
+               BACnetErrorRequirements
+       }
 }
 
 var _ BACnetErrorContract = (*_BACnetError)(nil)
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
index f7908bd6dd..73d6203d3e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
@@ -75,7 +75,10 @@ type BACnetEventLogRecordLogDatumRequirements interface {
 
 // _BACnetEventLogRecordLogDatum is the data-structure of this message
 type _BACnetEventLogRecordLogDatum struct {
-       _SubType        BACnetEventLogRecordLogDatum
+       _SubType interface {
+               BACnetEventLogRecordLogDatumContract
+               BACnetEventLogRecordLogDatumRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
index 5d34e2392d..1ebea8b5a0 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
@@ -69,7 +69,10 @@ type BACnetEventParameterRequirements interface {
 
 // _BACnetEventParameter is the data-structure of this message
 type _BACnetEventParameter struct {
-       _SubType        BACnetEventParameter
+       _SubType interface {
+               BACnetEventParameterContract
+               BACnetEventParameterRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
index c73886bc0c..fe06295f3a 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
@@ -75,7 +75,10 @@ type 
BACnetEventParameterChangeOfValueCivCriteriaRequirements interface {
 
 // _BACnetEventParameterChangeOfValueCivCriteria is the data-structure of this 
message
 type _BACnetEventParameterChangeOfValueCivCriteria struct {
-       _SubType        BACnetEventParameterChangeOfValueCivCriteria
+       _SubType interface {
+               BACnetEventParameterChangeOfValueCivCriteriaContract
+               BACnetEventParameterChangeOfValueCivCriteriaRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
index fa188be626..2cdd07c75b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
@@ -69,7 +69,10 @@ type BACnetFaultParameterRequirements interface {
 
 // _BACnetFaultParameter is the data-structure of this message
 type _BACnetFaultParameter struct {
-       _SubType        BACnetFaultParameter
+       _SubType interface {
+               BACnetFaultParameterContract
+               BACnetFaultParameterRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
index 89afb96352..35467c1711 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
@@ -73,7 +73,10 @@ type 
BACnetFaultParameterFaultExtendedParametersEntryRequirements interface {
 
 // _BACnetFaultParameterFaultExtendedParametersEntry is the data-structure of 
this message
 type _BACnetFaultParameterFaultExtendedParametersEntry struct {
-       _SubType        BACnetFaultParameterFaultExtendedParametersEntry
+       _SubType interface {
+               BACnetFaultParameterFaultExtendedParametersEntryContract
+               BACnetFaultParameterFaultExtendedParametersEntryRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
index d48e06240f..e4b7ecdc3c 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
@@ -75,7 +75,10 @@ type 
BACnetFaultParameterFaultOutOfRangeMaxNormalValueRequirements interface {
 
 // _BACnetFaultParameterFaultOutOfRangeMaxNormalValue is the data-structure of 
this message
 type _BACnetFaultParameterFaultOutOfRangeMaxNormalValue struct {
-       _SubType        BACnetFaultParameterFaultOutOfRangeMaxNormalValue
+       _SubType interface {
+               BACnetFaultParameterFaultOutOfRangeMaxNormalValueContract
+               BACnetFaultParameterFaultOutOfRangeMaxNormalValueRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
index 9ff68f4415..8af08eaace 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
@@ -75,7 +75,10 @@ type 
BACnetFaultParameterFaultOutOfRangeMinNormalValueRequirements interface {
 
 // _BACnetFaultParameterFaultOutOfRangeMinNormalValue is the data-structure of 
this message
 type _BACnetFaultParameterFaultOutOfRangeMinNormalValue struct {
-       _SubType        BACnetFaultParameterFaultOutOfRangeMinNormalValue
+       _SubType interface {
+               BACnetFaultParameterFaultOutOfRangeMinNormalValueContract
+               BACnetFaultParameterFaultOutOfRangeMinNormalValueRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
index af7a1ceb52..241f2ab1f7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
@@ -69,7 +69,10 @@ type BACnetHostAddressRequirements interface {
 
 // _BACnetHostAddress is the data-structure of this message
 type _BACnetHostAddress struct {
-       _SubType        BACnetHostAddress
+       _SubType interface {
+               BACnetHostAddressContract
+               BACnetHostAddressRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
index a1da5ce03f..e5a7d8e526 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
@@ -69,7 +69,10 @@ type BACnetLandingCallStatusCommandRequirements interface {
 
 // _BACnetLandingCallStatusCommand is the data-structure of this message
 type _BACnetLandingCallStatusCommand struct {
-       _SubType        BACnetLandingCallStatusCommand
+       _SubType interface {
+               BACnetLandingCallStatusCommandContract
+               BACnetLandingCallStatusCommandRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
index b8f499b74d..b6d655c5ec 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
@@ -75,7 +75,10 @@ type BACnetLogDataRequirements interface {
 
 // _BACnetLogData is the data-structure of this message
 type _BACnetLogData struct {
-       _SubType        BACnetLogData
+       _SubType interface {
+               BACnetLogDataContract
+               BACnetLogDataRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
index 8b8a397ac0..f88b80b7c7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
@@ -69,7 +69,10 @@ type BACnetLogDataLogDataEntryRequirements interface {
 
 // _BACnetLogDataLogDataEntry is the data-structure of this message
 type _BACnetLogDataLogDataEntry struct {
-       _SubType        BACnetLogDataLogDataEntry
+       _SubType interface {
+               BACnetLogDataLogDataEntryContract
+               BACnetLogDataLogDataEntryRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
index a1783dd0bc..98041c5324 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
@@ -75,7 +75,10 @@ type BACnetLogRecordLogDatumRequirements interface {
 
 // _BACnetLogRecordLogDatum is the data-structure of this message
 type _BACnetLogRecordLogDatum struct {
-       _SubType        BACnetLogRecordLogDatum
+       _SubType interface {
+               BACnetLogRecordLogDatumContract
+               BACnetLogRecordLogDatumRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
index 3ff0d51d10..e4203f0272 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
@@ -77,7 +77,10 @@ type BACnetNotificationParametersRequirements interface {
 
 // _BACnetNotificationParameters is the data-structure of this message
 type _BACnetNotificationParameters struct {
-       _SubType        BACnetNotificationParameters
+       _SubType interface {
+               BACnetNotificationParametersContract
+               BACnetNotificationParametersRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
index b173a3a37b..3c944fccc5 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
@@ -79,7 +79,10 @@ type 
BACnetNotificationParametersChangeOfDiscreteValueNewValueRequirements inter
 
 // _BACnetNotificationParametersChangeOfDiscreteValueNewValue is the 
data-structure of this message
 type _BACnetNotificationParametersChangeOfDiscreteValueNewValue struct {
-       _SubType        
BACnetNotificationParametersChangeOfDiscreteValueNewValue
+       _SubType interface {
+               
BACnetNotificationParametersChangeOfDiscreteValueNewValueContract
+               
BACnetNotificationParametersChangeOfDiscreteValueNewValueRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
index 6e347b87ae..f7821bec9a 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
@@ -75,7 +75,10 @@ type 
BACnetNotificationParametersChangeOfValueNewValueRequirements interface {
 
 // _BACnetNotificationParametersChangeOfValueNewValue is the data-structure of 
this message
 type _BACnetNotificationParametersChangeOfValueNewValue struct {
-       _SubType        BACnetNotificationParametersChangeOfValueNewValue
+       _SubType interface {
+               BACnetNotificationParametersChangeOfValueNewValueContract
+               BACnetNotificationParametersChangeOfValueNewValueRequirements
+       }
        OpeningTag      BACnetOpeningTag
        PeekedTagHeader BACnetTagHeader
        ClosingTag      BACnetClosingTag
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
index 4b2f96b9a6..be99aa3d27 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
@@ -69,7 +69,10 @@ type BACnetOptionalBinaryPVRequirements interface {
 
 // _BACnetOptionalBinaryPV is the data-structure of this message
 type _BACnetOptionalBinaryPV struct {
-       _SubType        BACnetOptionalBinaryPV
+       _SubType interface {
+               BACnetOptionalBinaryPVContract
+               BACnetOptionalBinaryPVRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
index 41ca5e5040..5dfe06ef3d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
@@ -69,7 +69,10 @@ type BACnetOptionalCharacterStringRequirements interface {
 
 // _BACnetOptionalCharacterString is the data-structure of this message
 type _BACnetOptionalCharacterString struct {
-       _SubType        BACnetOptionalCharacterString
+       _SubType interface {
+               BACnetOptionalCharacterStringContract
+               BACnetOptionalCharacterStringRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
index dee9c82067..d64b2ac554 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
@@ -69,7 +69,10 @@ type BACnetOptionalREALRequirements interface {
 
 // _BACnetOptionalREAL is the data-structure of this message
 type _BACnetOptionalREAL struct {
-       _SubType        BACnetOptionalREAL
+       _SubType interface {
+               BACnetOptionalREALContract
+               BACnetOptionalREALRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
index 4174c0ed86..f7feabb43d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
@@ -69,7 +69,10 @@ type BACnetOptionalUnsignedRequirements interface {
 
 // _BACnetOptionalUnsigned is the data-structure of this message
 type _BACnetOptionalUnsigned struct {
-       _SubType        BACnetOptionalUnsigned
+       _SubType interface {
+               BACnetOptionalUnsignedContract
+               BACnetOptionalUnsignedRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
index e5c29bb70e..ac7a44cca9 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
@@ -75,7 +75,10 @@ type BACnetPriorityValueRequirements interface {
 
 // _BACnetPriorityValue is the data-structure of this message
 type _BACnetPriorityValue struct {
-       _SubType        BACnetPriorityValue
+       _SubType interface {
+               BACnetPriorityValueContract
+               BACnetPriorityValueRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 
        // Arguments.
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
index f3860b9d07..61d2db3558 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
@@ -69,7 +69,10 @@ type BACnetProcessIdSelectionRequirements interface {
 
 // _BACnetProcessIdSelection is the data-structure of this message
 type _BACnetProcessIdSelection struct {
-       _SubType        BACnetProcessIdSelection
+       _SubType interface {
+               BACnetProcessIdSelectionContract
+               BACnetProcessIdSelectionRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
index 8b7f48c716..1a46b63837 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
@@ -75,7 +75,10 @@ type BACnetPropertyAccessResultAccessResultRequirements 
interface {
 
 // _BACnetPropertyAccessResultAccessResult is the data-structure of this 
message
 type _BACnetPropertyAccessResultAccessResult struct {
-       _SubType        BACnetPropertyAccessResultAccessResult
+       _SubType interface {
+               BACnetPropertyAccessResultAccessResultContract
+               BACnetPropertyAccessResultAccessResultRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 
        // Arguments.
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
index f3a1b045df..45b2a4077f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
@@ -69,7 +69,10 @@ type BACnetPropertyStatesRequirements interface {
 
 // _BACnetPropertyStates is the data-structure of this message
 type _BACnetPropertyStates struct {
-       _SubType        BACnetPropertyStates
+       _SubType interface {
+               BACnetPropertyStatesContract
+               BACnetPropertyStatesRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
index 671b61c9d8..bf9efa4e70 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
@@ -69,7 +69,10 @@ type BACnetRecipientRequirements interface {
 
 // _BACnetRecipient is the data-structure of this message
 type _BACnetRecipient struct {
-       _SubType        BACnetRecipient
+       _SubType interface {
+               BACnetRecipientContract
+               BACnetRecipientRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
index 73212d2a3e..10ae0b153a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
@@ -69,7 +69,10 @@ type BACnetScaleRequirements interface {
 
 // _BACnetScale is the data-structure of this message
 type _BACnetScale struct {
-       _SubType        BACnetScale
+       _SubType interface {
+               BACnetScaleContract
+               BACnetScaleRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
index e7e12edc4e..57a3f3ac3f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -69,7 +69,10 @@ type BACnetServiceAckRequirements interface {
 
 // _BACnetServiceAck is the data-structure of this message
 type _BACnetServiceAck struct {
-       _SubType BACnetServiceAck
+       _SubType interface {
+               BACnetServiceAckContract
+               BACnetServiceAckRequirements
+       }
 
        // Arguments.
        ServiceAckLength uint32
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
index d2cea00d65..d632ea2042 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
@@ -73,7 +73,10 @@ type 
BACnetServiceAckAtomicReadFileStreamOrRecordRequirements interface {
 
 // _BACnetServiceAckAtomicReadFileStreamOrRecord is the data-structure of this 
message
 type _BACnetServiceAckAtomicReadFileStreamOrRecord struct {
-       _SubType        BACnetServiceAckAtomicReadFileStreamOrRecord
+       _SubType interface {
+               BACnetServiceAckAtomicReadFileStreamOrRecordContract
+               BACnetServiceAckAtomicReadFileStreamOrRecordRequirements
+       }
        PeekedTagHeader BACnetTagHeader
        OpeningTag      BACnetOpeningTag
        ClosingTag      BACnetClosingTag
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
index 4205d55f84..44a57c9b3b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
@@ -69,7 +69,10 @@ type BACnetShedLevelRequirements interface {
 
 // _BACnetShedLevel is the data-structure of this message
 type _BACnetShedLevel struct {
-       _SubType        BACnetShedLevel
+       _SubType interface {
+               BACnetShedLevelContract
+               BACnetShedLevelRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
index 7d9851c687..fc318d47c1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
@@ -69,7 +69,10 @@ type BACnetSpecialEventPeriodRequirements interface {
 
 // _BACnetSpecialEventPeriod is the data-structure of this message
 type _BACnetSpecialEventPeriod struct {
-       _SubType        BACnetSpecialEventPeriod
+       _SubType interface {
+               BACnetSpecialEventPeriodContract
+               BACnetSpecialEventPeriodRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
index 477106cbf5..9c44205e1b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
@@ -69,7 +69,10 @@ type BACnetTimeStampRequirements interface {
 
 // _BACnetTimeStamp is the data-structure of this message
 type _BACnetTimeStamp struct {
-       _SubType        BACnetTimeStamp
+       _SubType interface {
+               BACnetTimeStampContract
+               BACnetTimeStampRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
index ddcab099d7..cbd8df0e8d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
@@ -75,7 +75,10 @@ type BACnetTimerStateChangeValueRequirements interface {
 
 // _BACnetTimerStateChangeValue is the data-structure of this message
 type _BACnetTimerStateChangeValue struct {
-       _SubType        BACnetTimerStateChangeValue
+       _SubType interface {
+               BACnetTimerStateChangeValueContract
+               BACnetTimerStateChangeValueRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 
        // Arguments.
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index e1b0edab54..97a326dc02 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -67,7 +67,10 @@ type BACnetUnconfirmedServiceRequestRequirements interface {
 
 // _BACnetUnconfirmedServiceRequest is the data-structure of this message
 type _BACnetUnconfirmedServiceRequest struct {
-       _SubType BACnetUnconfirmedServiceRequest
+       _SubType interface {
+               BACnetUnconfirmedServiceRequestContract
+               BACnetUnconfirmedServiceRequestRequirements
+       }
 
        // Arguments.
        ServiceRequestLength uint16
diff --git 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
index ea6d1c741d..ca5e211be6 100644
--- 
a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
+++ 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
@@ -69,7 +69,10 @@ type BACnetUnconfirmedServiceRequestWhoHasObjectRequirements 
interface {
 
 // _BACnetUnconfirmedServiceRequestWhoHasObject is the data-structure of this 
message
 type _BACnetUnconfirmedServiceRequestWhoHasObject struct {
-       _SubType        BACnetUnconfirmedServiceRequestWhoHasObject
+       _SubType interface {
+               BACnetUnconfirmedServiceRequestWhoHasObjectContract
+               BACnetUnconfirmedServiceRequestWhoHasObjectRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go 
b/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
index 71df50e7b5..3879b975dc 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
@@ -69,7 +69,10 @@ type BACnetValueSourceRequirements interface {
 
 // _BACnetValueSource is the data-structure of this message
 type _BACnetValueSource struct {
-       _SubType        BACnetValueSource
+       _SubType interface {
+               BACnetValueSourceContract
+               BACnetValueSourceRequirements
+       }
        PeekedTagHeader BACnetTagHeader
 }
 
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLC.go 
b/plc4go/protocols/bacnetip/readwrite/model/BVLC.go
index e61d8f794f..681df9b8fa 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLC.go
@@ -72,7 +72,10 @@ type BVLCRequirements interface {
 
 // _BVLC is the data-structure of this message
 type _BVLC struct {
-       _SubType BVLC
+       _SubType interface {
+               BVLCContract
+               BVLCRequirements
+       }
 }
 
 var _ BVLCContract = (*_BVLC)(nil)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLM.go 
b/plc4go/protocols/bacnetip/readwrite/model/NLM.go
index 4bcdd0a797..2f10f9747b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLM.go
@@ -71,7 +71,10 @@ type NLMRequirements interface {
 
 // _NLM is the data-structure of this message
 type _NLM struct {
-       _SubType NLM
+       _SubType interface {
+               NLMContract
+               NLMRequirements
+       }
 
        // Arguments.
        ApduLength uint16
diff --git a/plc4go/protocols/cbus/readwrite/model/AccessControlData.go 
b/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
index d84d87bbba..e56650cff5 100644
--- a/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
@@ -73,7 +73,10 @@ type AccessControlDataRequirements interface {
 
 // _AccessControlData is the data-structure of this message
 type _AccessControlData struct {
-       _SubType             AccessControlData
+       _SubType interface {
+               AccessControlDataContract
+               AccessControlDataRequirements
+       }
        CommandTypeContainer AccessControlCommandTypeContainer
        NetworkId            byte
        AccessPointId        byte
diff --git a/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go 
b/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
index 224150f122..8a0f8e6b96 100644
--- a/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
+++ b/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
@@ -69,7 +69,10 @@ type AirConditioningDataRequirements interface {
 
 // _AirConditioningData is the data-structure of this message
 type _AirConditioningData struct {
-       _SubType             AirConditioningData
+       _SubType interface {
+               AirConditioningDataContract
+               AirConditioningDataRequirements
+       }
        CommandTypeContainer AirConditioningCommandTypeContainer
 }
 
diff --git a/plc4go/protocols/cbus/readwrite/model/CALData.go 
b/plc4go/protocols/cbus/readwrite/model/CALData.go
index 6a45e988a6..3ba9ff66c9 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALData.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALData.go
@@ -77,7 +77,10 @@ type CALDataRequirements interface {
 
 // _CALData is the data-structure of this message
 type _CALData struct {
-       _SubType             CALData
+       _SubType interface {
+               CALDataContract
+               CALDataRequirements
+       }
        CommandTypeContainer CALCommandTypeContainer
        AdditionalData       CALData
 
diff --git a/plc4go/protocols/cbus/readwrite/model/CALReply.go 
b/plc4go/protocols/cbus/readwrite/model/CALReply.go
index a99708b454..6028b320ad 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALReply.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALReply.go
@@ -73,9 +73,12 @@ type CALReplyRequirements interface {
 
 // _CALReply is the data-structure of this message
 type _CALReply struct {
-       _SubType CALReply
-       CalType  byte
-       CalData  CALData
+       _SubType interface {
+               CALReplyContract
+               CALReplyRequirements
+       }
+       CalType byte
+       CalData CALData
 
        // Arguments.
        CBusOptions    CBusOptions
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusCommand.go 
b/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
index 16600cd4bd..ac9f01a4ca 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
@@ -75,8 +75,11 @@ type CBusCommandRequirements interface {
 
 // _CBusCommand is the data-structure of this message
 type _CBusCommand struct {
-       _SubType CBusCommand
-       Header   CBusHeader
+       _SubType interface {
+               CBusCommandContract
+               CBusCommandRequirements
+       }
+       Header CBusHeader
 
        // Arguments.
        CBusOptions CBusOptions
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusMessage.go 
b/plc4go/protocols/cbus/readwrite/model/CBusMessage.go
index c3641c34dd..1b6da58c98 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusMessage.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusMessage.go
@@ -67,7 +67,10 @@ type CBusMessageRequirements interface {
 
 // _CBusMessage is the data-structure of this message
 type _CBusMessage struct {
-       _SubType CBusMessage
+       _SubType interface {
+               CBusMessageContract
+               CBusMessageRequirements
+       }
 
        // Arguments.
        RequestContext RequestContext
diff --git 
a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go 
b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
index e1e8c2c2ce..df29a8ae45 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
@@ -69,7 +69,10 @@ type CBusPointToMultiPointCommandRequirements interface {
 
 // _CBusPointToMultiPointCommand is the data-structure of this message
 type _CBusPointToMultiPointCommand struct {
-       _SubType          CBusPointToMultiPointCommand
+       _SubType interface {
+               CBusPointToMultiPointCommandContract
+               CBusPointToMultiPointCommandRequirements
+       }
        PeekedApplication byte
 
        // Arguments.
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go 
b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
index 8b82e1e90e..ce6f918931 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
@@ -73,7 +73,10 @@ type CBusPointToPointCommandRequirements interface {
 
 // _CBusPointToPointCommand is the data-structure of this message
 type _CBusPointToPointCommand struct {
-       _SubType               CBusPointToPointCommand
+       _SubType interface {
+               CBusPointToPointCommandContract
+               CBusPointToPointCommandRequirements
+       }
        BridgeAddressCountPeek uint16
        CalData                CALData
 
diff --git 
a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go 
b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
index 23096bb6c7..42eaba46ff 100644
--- 
a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
+++ 
b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
@@ -73,7 +73,10 @@ type CBusPointToPointToMultiPointCommandRequirements 
interface {
 
 // _CBusPointToPointToMultiPointCommand is the data-structure of this message
 type _CBusPointToPointToMultiPointCommand struct {
-       _SubType          CBusPointToPointToMultiPointCommand
+       _SubType interface {
+               CBusPointToPointToMultiPointCommandContract
+               CBusPointToPointToMultiPointCommandRequirements
+       }
        BridgeAddress     BridgeAddress
        NetworkRoute      NetworkRoute
        PeekedApplication byte
diff --git a/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go 
b/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
index a6277e725b..9d917556ea 100644
--- a/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
@@ -73,7 +73,10 @@ type ClockAndTimekeepingDataRequirements interface {
 
 // _ClockAndTimekeepingData is the data-structure of this message
 type _ClockAndTimekeepingData struct {
-       _SubType             ClockAndTimekeepingData
+       _SubType interface {
+               ClockAndTimekeepingDataContract
+               ClockAndTimekeepingDataRequirements
+       }
        CommandTypeContainer ClockAndTimekeepingCommandTypeContainer
        Argument             byte
 }
diff --git a/plc4go/protocols/cbus/readwrite/model/EncodedReply.go 
b/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
index 7958c6df83..6b127f565e 100644
--- a/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
+++ b/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
@@ -73,7 +73,10 @@ type EncodedReplyRequirements interface {
 
 // _EncodedReply is the data-structure of this message
 type _EncodedReply struct {
-       _SubType   EncodedReply
+       _SubType interface {
+               EncodedReplyContract
+               EncodedReplyRequirements
+       }
        PeekedByte byte
 
        // Arguments.
diff --git a/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go 
b/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
index e4a0d4895c..5ec87b5f89 100644
--- a/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
@@ -69,7 +69,10 @@ type ErrorReportingDataRequirements interface {
 
 // _ErrorReportingData is the data-structure of this message
 type _ErrorReportingData struct {
-       _SubType             ErrorReportingData
+       _SubType interface {
+               ErrorReportingDataContract
+               ErrorReportingDataRequirements
+       }
        CommandTypeContainer ErrorReportingCommandTypeContainer
 }
 
diff --git 
a/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go 
b/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go
index 528dfb3b03..8169e5e77e 100644
--- a/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go
+++ b/plc4go/protocols/cbus/readwrite/model/ErrorReportingSystemCategoryType.go
@@ -63,7 +63,10 @@ type ErrorReportingSystemCategoryTypeRequirements interface {
 
 // _ErrorReportingSystemCategoryType is the data-structure of this message
 type _ErrorReportingSystemCategoryType struct {
-       _SubType ErrorReportingSystemCategoryType
+       _SubType interface {
+               ErrorReportingSystemCategoryTypeContract
+               ErrorReportingSystemCategoryTypeRequirements
+       }
 }
 
 var _ ErrorReportingSystemCategoryTypeContract = 
(*_ErrorReportingSystemCategoryType)(nil)
diff --git a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go 
b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go
index b9d6e7ccbe..251d119c9a 100644
--- a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommand.go
@@ -65,7 +65,10 @@ type IdentifyReplyCommandRequirements interface {
 
 // _IdentifyReplyCommand is the data-structure of this message
 type _IdentifyReplyCommand struct {
-       _SubType IdentifyReplyCommand
+       _SubType interface {
+               IdentifyReplyCommandContract
+               IdentifyReplyCommandRequirements
+       }
 
        // Arguments.
        NumBytes uint8
diff --git a/plc4go/protocols/cbus/readwrite/model/LevelInformation.go 
b/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
index af501184e2..2d1c549bc3 100644
--- a/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
+++ b/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
@@ -85,8 +85,11 @@ type LevelInformationRequirements interface {
 
 // _LevelInformation is the data-structure of this message
 type _LevelInformation struct {
-       _SubType LevelInformation
-       Raw      uint16
+       _SubType interface {
+               LevelInformationContract
+               LevelInformationRequirements
+       }
+       Raw uint16
 }
 
 var _ LevelInformationContract = (*_LevelInformation)(nil)
diff --git a/plc4go/protocols/cbus/readwrite/model/LightingData.go 
b/plc4go/protocols/cbus/readwrite/model/LightingData.go
index df20ef9a31..81d8d9e0b4 100644
--- a/plc4go/protocols/cbus/readwrite/model/LightingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/LightingData.go
@@ -69,7 +69,10 @@ type LightingDataRequirements interface {
 
 // _LightingData is the data-structure of this message
 type _LightingData struct {
-       _SubType             LightingData
+       _SubType interface {
+               LightingDataContract
+               LightingDataRequirements
+       }
        CommandTypeContainer LightingCommandTypeContainer
 }
 
diff --git a/plc4go/protocols/cbus/readwrite/model/MeasurementData.go 
b/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
index de7f850021..df4f3d5418 100644
--- a/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
@@ -69,7 +69,10 @@ type MeasurementDataRequirements interface {
 
 // _MeasurementData is the data-structure of this message
 type _MeasurementData struct {
-       _SubType             MeasurementData
+       _SubType interface {
+               MeasurementDataContract
+               MeasurementDataRequirements
+       }
        CommandTypeContainer MeasurementCommandTypeContainer
 }
 
diff --git a/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go 
b/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
index a7c7c03e17..a7e31638da 100644
--- a/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
@@ -71,7 +71,10 @@ type MediaTransportControlDataRequirements interface {
 
 // _MediaTransportControlData is the data-structure of this message
 type _MediaTransportControlData struct {
-       _SubType             MediaTransportControlData
+       _SubType interface {
+               MediaTransportControlDataContract
+               MediaTransportControlDataRequirements
+       }
        CommandTypeContainer MediaTransportControlCommandTypeContainer
        MediaLinkGroup       byte
 }
diff --git a/plc4go/protocols/cbus/readwrite/model/MeteringData.go 
b/plc4go/protocols/cbus/readwrite/model/MeteringData.go
index 139d6ff172..4000ac5e21 100644
--- a/plc4go/protocols/cbus/readwrite/model/MeteringData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MeteringData.go
@@ -73,7 +73,10 @@ type MeteringDataRequirements interface {
 
 // _MeteringData is the data-structure of this message
 type _MeteringData struct {
-       _SubType             MeteringData
+       _SubType interface {
+               MeteringDataContract
+               MeteringDataRequirements
+       }
        CommandTypeContainer MeteringCommandTypeContainer
        Argument             byte
 }
diff --git a/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go 
b/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
index 75dd4c9245..69fb7c73cd 100644
--- a/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
+++ b/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
@@ -69,8 +69,11 @@ type MonitoredSALRequirements interface {
 
 // _MonitoredSAL is the data-structure of this message
 type _MonitoredSAL struct {
-       _SubType MonitoredSAL
-       SalType  byte
+       _SubType interface {
+               MonitoredSALContract
+               MonitoredSALRequirements
+       }
+       SalType byte
 
        // Arguments.
        CBusOptions CBusOptions
diff --git a/plc4go/protocols/cbus/readwrite/model/ParameterValue.go 
b/plc4go/protocols/cbus/readwrite/model/ParameterValue.go
index afed651209..dba765ffb7 100644
--- a/plc4go/protocols/cbus/readwrite/model/ParameterValue.go
+++ b/plc4go/protocols/cbus/readwrite/model/ParameterValue.go
@@ -65,7 +65,10 @@ type ParameterValueRequirements interface {
 
 // _ParameterValue is the data-structure of this message
 type _ParameterValue struct {
-       _SubType ParameterValue
+       _SubType interface {
+               ParameterValueContract
+               ParameterValueRequirements
+       }
 
        // Arguments.
        NumBytes uint8
diff --git a/plc4go/protocols/cbus/readwrite/model/Reply.go 
b/plc4go/protocols/cbus/readwrite/model/Reply.go
index 3fef6b2492..0418b3d229 100644
--- a/plc4go/protocols/cbus/readwrite/model/Reply.go
+++ b/plc4go/protocols/cbus/readwrite/model/Reply.go
@@ -71,7 +71,10 @@ type ReplyRequirements interface {
 
 // _Reply is the data-structure of this message
 type _Reply struct {
-       _SubType   Reply
+       _SubType interface {
+               ReplyContract
+               ReplyRequirements
+       }
        PeekedByte byte
 
        // Arguments.
diff --git a/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go 
b/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
index de65b68dac..53b4b997a0 100644
--- a/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
+++ b/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
@@ -75,7 +75,10 @@ type ReplyOrConfirmationRequirements interface {
 
 // _ReplyOrConfirmation is the data-structure of this message
 type _ReplyOrConfirmation struct {
-       _SubType   ReplyOrConfirmation
+       _SubType interface {
+               ReplyOrConfirmationContract
+               ReplyOrConfirmationRequirements
+       }
        PeekedByte byte
 
        // Arguments.
diff --git a/plc4go/protocols/cbus/readwrite/model/Request.go 
b/plc4go/protocols/cbus/readwrite/model/Request.go
index 72b721bcd3..52465e73df 100644
--- a/plc4go/protocols/cbus/readwrite/model/Request.go
+++ b/plc4go/protocols/cbus/readwrite/model/Request.go
@@ -79,7 +79,10 @@ type RequestRequirements interface {
 
 // _Request is the data-structure of this message
 type _Request struct {
-       _SubType    Request
+       _SubType interface {
+               RequestContract
+               RequestRequirements
+       }
        PeekedByte  RequestType
        StartingCR  *RequestType
        ResetMode   *RequestType
diff --git a/plc4go/protocols/cbus/readwrite/model/SALData.go 
b/plc4go/protocols/cbus/readwrite/model/SALData.go
index 26d3a9a7d5..8b09aa9a25 100644
--- a/plc4go/protocols/cbus/readwrite/model/SALData.go
+++ b/plc4go/protocols/cbus/readwrite/model/SALData.go
@@ -67,8 +67,11 @@ type SALDataRequirements interface {
 
 // _SALData is the data-structure of this message
 type _SALData struct {
-       _SubType SALData
-       SalData  SALData
+       _SubType interface {
+               SALDataContract
+               SALDataRequirements
+       }
+       SalData SALData
 }
 
 var _ SALDataContract = (*_SALData)(nil)
diff --git a/plc4go/protocols/cbus/readwrite/model/SecurityData.go 
b/plc4go/protocols/cbus/readwrite/model/SecurityData.go
index 384444e15a..db3f4f412a 100644
--- a/plc4go/protocols/cbus/readwrite/model/SecurityData.go
+++ b/plc4go/protocols/cbus/readwrite/model/SecurityData.go
@@ -73,7 +73,10 @@ type SecurityDataRequirements interface {
 
 // _SecurityData is the data-structure of this message
 type _SecurityData struct {
-       _SubType             SecurityData
+       _SubType interface {
+               SecurityDataContract
+               SecurityDataRequirements
+       }
        CommandTypeContainer SecurityCommandTypeContainer
        Argument             byte
 }
diff --git a/plc4go/protocols/cbus/readwrite/model/StatusRequest.go 
b/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
index 7a6ab37ab9..5f3037f8f5 100644
--- a/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
+++ b/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
@@ -67,7 +67,10 @@ type StatusRequestRequirements interface {
 
 // _StatusRequest is the data-structure of this message
 type _StatusRequest struct {
-       _SubType   StatusRequest
+       _SubType interface {
+               StatusRequestContract
+               StatusRequestRequirements
+       }
        StatusType byte
 }
 
diff --git a/plc4go/protocols/cbus/readwrite/model/TelephonyData.go 
b/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
index 5344c44e76..e125919c19 100644
--- a/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
+++ b/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
@@ -73,7 +73,10 @@ type TelephonyDataRequirements interface {
 
 // _TelephonyData is the data-structure of this message
 type _TelephonyData struct {
-       _SubType             TelephonyData
+       _SubType interface {
+               TelephonyDataContract
+               TelephonyDataRequirements
+       }
        CommandTypeContainer TelephonyCommandTypeContainer
        Argument             byte
 }
diff --git a/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go 
b/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
index 113eccaa44..ad53d0880e 100644
--- a/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
@@ -73,7 +73,10 @@ type TriggerControlDataRequirements interface {
 
 // _TriggerControlData is the data-structure of this message
 type _TriggerControlData struct {
-       _SubType             TriggerControlData
+       _SubType interface {
+               TriggerControlDataContract
+               TriggerControlDataRequirements
+       }
        CommandTypeContainer TriggerControlCommandTypeContainer
        TriggerGroup         byte
 }
diff --git a/plc4go/protocols/df1/readwrite/model/DF1Command.go 
b/plc4go/protocols/df1/readwrite/model/DF1Command.go
index e047da34e3..22c48c3eaa 100644
--- a/plc4go/protocols/df1/readwrite/model/DF1Command.go
+++ b/plc4go/protocols/df1/readwrite/model/DF1Command.go
@@ -69,7 +69,10 @@ type DF1CommandRequirements interface {
 
 // _DF1Command is the data-structure of this message
 type _DF1Command struct {
-       _SubType           DF1Command
+       _SubType interface {
+               DF1CommandContract
+               DF1CommandRequirements
+       }
        Status             uint8
        TransactionCounter uint16
 }
diff --git a/plc4go/protocols/df1/readwrite/model/DF1Symbol.go 
b/plc4go/protocols/df1/readwrite/model/DF1Symbol.go
index b1434ee529..733c71ac8b 100644
--- a/plc4go/protocols/df1/readwrite/model/DF1Symbol.go
+++ b/plc4go/protocols/df1/readwrite/model/DF1Symbol.go
@@ -70,7 +70,10 @@ type DF1SymbolRequirements interface {
 
 // _DF1Symbol is the data-structure of this message
 type _DF1Symbol struct {
-       _SubType DF1Symbol
+       _SubType interface {
+               DF1SymbolContract
+               DF1SymbolRequirements
+       }
 }
 
 var _ DF1SymbolContract = (*_DF1Symbol)(nil)
diff --git a/plc4go/protocols/eip/readwrite/model/CipService.go 
b/plc4go/protocols/eip/readwrite/model/CipService.go
index f27a71bbd4..9ad37c789c 100644
--- a/plc4go/protocols/eip/readwrite/model/CipService.go
+++ b/plc4go/protocols/eip/readwrite/model/CipService.go
@@ -71,7 +71,10 @@ type CipServiceRequirements interface {
 
 // _CipService is the data-structure of this message
 type _CipService struct {
-       _SubType CipService
+       _SubType interface {
+               CipServiceContract
+               CipServiceRequirements
+       }
 
        // Arguments.
        ServiceLen uint16
diff --git a/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go 
b/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go
index ad97c023a1..696d1e66ca 100644
--- a/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go
+++ b/plc4go/protocols/eip/readwrite/model/CommandSpecificDataItem.go
@@ -65,7 +65,10 @@ type CommandSpecificDataItemRequirements interface {
 
 // _CommandSpecificDataItem is the data-structure of this message
 type _CommandSpecificDataItem struct {
-       _SubType CommandSpecificDataItem
+       _SubType interface {
+               CommandSpecificDataItemContract
+               CommandSpecificDataItemRequirements
+       }
 }
 
 var _ CommandSpecificDataItemContract = (*_CommandSpecificDataItem)(nil)
diff --git a/plc4go/protocols/eip/readwrite/model/DataSegmentType.go 
b/plc4go/protocols/eip/readwrite/model/DataSegmentType.go
index 28a12c656a..83c19ac6ec 100644
--- a/plc4go/protocols/eip/readwrite/model/DataSegmentType.go
+++ b/plc4go/protocols/eip/readwrite/model/DataSegmentType.go
@@ -65,7 +65,10 @@ type DataSegmentTypeRequirements interface {
 
 // _DataSegmentType is the data-structure of this message
 type _DataSegmentType struct {
-       _SubType DataSegmentType
+       _SubType interface {
+               DataSegmentTypeContract
+               DataSegmentTypeRequirements
+       }
 }
 
 var _ DataSegmentTypeContract = (*_DataSegmentType)(nil)
diff --git a/plc4go/protocols/eip/readwrite/model/EipPacket.go 
b/plc4go/protocols/eip/readwrite/model/EipPacket.go
index 36db6dda43..73a7a26455 100644
--- a/plc4go/protocols/eip/readwrite/model/EipPacket.go
+++ b/plc4go/protocols/eip/readwrite/model/EipPacket.go
@@ -77,7 +77,10 @@ type EipPacketRequirements interface {
 
 // _EipPacket is the data-structure of this message
 type _EipPacket struct {
-       _SubType      EipPacket
+       _SubType interface {
+               EipPacketContract
+               EipPacketRequirements
+       }
        SessionHandle uint32
        Status        uint32
        SenderContext []byte
diff --git a/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go 
b/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go
index 6f9bfd17fa..7bd4cf06ce 100644
--- a/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go
+++ b/plc4go/protocols/eip/readwrite/model/LogicalSegmentType.go
@@ -65,7 +65,10 @@ type LogicalSegmentTypeRequirements interface {
 
 // _LogicalSegmentType is the data-structure of this message
 type _LogicalSegmentType struct {
-       _SubType LogicalSegmentType
+       _SubType interface {
+               LogicalSegmentTypeContract
+               LogicalSegmentTypeRequirements
+       }
 }
 
 var _ LogicalSegmentTypeContract = (*_LogicalSegmentType)(nil)
diff --git a/plc4go/protocols/eip/readwrite/model/PathSegment.go 
b/plc4go/protocols/eip/readwrite/model/PathSegment.go
index 27a4eabdd1..7417ea2244 100644
--- a/plc4go/protocols/eip/readwrite/model/PathSegment.go
+++ b/plc4go/protocols/eip/readwrite/model/PathSegment.go
@@ -65,7 +65,10 @@ type PathSegmentRequirements interface {
 
 // _PathSegment is the data-structure of this message
 type _PathSegment struct {
-       _SubType PathSegment
+       _SubType interface {
+               PathSegmentContract
+               PathSegmentRequirements
+       }
 }
 
 var _ PathSegmentContract = (*_PathSegment)(nil)
diff --git a/plc4go/protocols/eip/readwrite/model/PortSegmentType.go 
b/plc4go/protocols/eip/readwrite/model/PortSegmentType.go
index a8431bf859..df3b9823ba 100644
--- a/plc4go/protocols/eip/readwrite/model/PortSegmentType.go
+++ b/plc4go/protocols/eip/readwrite/model/PortSegmentType.go
@@ -65,7 +65,10 @@ type PortSegmentTypeRequirements interface {
 
 // _PortSegmentType is the data-structure of this message
 type _PortSegmentType struct {
-       _SubType PortSegmentType
+       _SubType interface {
+               PortSegmentTypeContract
+               PortSegmentTypeRequirements
+       }
 }
 
 var _ PortSegmentTypeContract = (*_PortSegmentType)(nil)
diff --git a/plc4go/protocols/eip/readwrite/model/TypeId.go 
b/plc4go/protocols/eip/readwrite/model/TypeId.go
index 4932978b9d..8c5a76883c 100644
--- a/plc4go/protocols/eip/readwrite/model/TypeId.go
+++ b/plc4go/protocols/eip/readwrite/model/TypeId.go
@@ -65,7 +65,10 @@ type TypeIdRequirements interface {
 
 // _TypeId is the data-structure of this message
 type _TypeId struct {
-       _SubType TypeId
+       _SubType interface {
+               TypeIdContract
+               TypeIdRequirements
+       }
 }
 
 var _ TypeIdContract = (*_TypeId)(nil)
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go 
b/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go
index cbea6538bd..2249f80e0f 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataCommand.go
@@ -67,7 +67,10 @@ type FirmataCommandRequirements interface {
 
 // _FirmataCommand is the data-structure of this message
 type _FirmataCommand struct {
-       _SubType FirmataCommand
+       _SubType interface {
+               FirmataCommandContract
+               FirmataCommandRequirements
+       }
 
        // Arguments.
        Response bool
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go 
b/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go
index cfedb2f88a..578817597f 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataMessage.go
@@ -69,7 +69,10 @@ type FirmataMessageRequirements interface {
 
 // _FirmataMessage is the data-structure of this message
 type _FirmataMessage struct {
-       _SubType FirmataMessage
+       _SubType interface {
+               FirmataMessageContract
+               FirmataMessageRequirements
+       }
 
        // Arguments.
        Response bool
diff --git a/plc4go/protocols/firmata/readwrite/model/SysexCommand.go 
b/plc4go/protocols/firmata/readwrite/model/SysexCommand.go
index bb44f5d795..6bcdb063ba 100644
--- a/plc4go/protocols/firmata/readwrite/model/SysexCommand.go
+++ b/plc4go/protocols/firmata/readwrite/model/SysexCommand.go
@@ -67,7 +67,10 @@ type SysexCommandRequirements interface {
 
 // _SysexCommand is the data-structure of this message
 type _SysexCommand struct {
-       _SubType SysexCommand
+       _SubType interface {
+               SysexCommandContract
+               SysexCommandRequirements
+       }
 }
 
 var _ SysexCommandContract = (*_SysexCommand)(nil)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/Apdu.go 
b/plc4go/protocols/knxnetip/readwrite/model/Apdu.go
index e451e0ff7b..d5e4e86050 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/Apdu.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/Apdu.go
@@ -71,7 +71,10 @@ type ApduRequirements interface {
 
 // _Apdu is the data-structure of this message
 type _Apdu struct {
-       _SubType Apdu
+       _SubType interface {
+               ApduContract
+               ApduRequirements
+       }
        Numbered bool
        Counter  uint8
 
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go 
b/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go
index d7ea126a5f..41cfdd99e3 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduControl.go
@@ -65,7 +65,10 @@ type ApduControlRequirements interface {
 
 // _ApduControl is the data-structure of this message
 type _ApduControl struct {
-       _SubType ApduControl
+       _SubType interface {
+               ApduControlContract
+               ApduControlRequirements
+       }
 }
 
 var _ ApduControlContract = (*_ApduControl)(nil)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduData.go 
b/plc4go/protocols/knxnetip/readwrite/model/ApduData.go
index ae24aff7f7..07cbe76560 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduData.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduData.go
@@ -67,7 +67,10 @@ type ApduDataRequirements interface {
 
 // _ApduData is the data-structure of this message
 type _ApduData struct {
-       _SubType ApduData
+       _SubType interface {
+               ApduDataContract
+               ApduDataRequirements
+       }
 
        // Arguments.
        DataLength uint8
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go 
b/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go
index 4e98a3f0c3..b2f25dcd01 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduDataExt.go
@@ -67,7 +67,10 @@ type ApduDataExtRequirements interface {
 
 // _ApduDataExt is the data-structure of this message
 type _ApduDataExt struct {
-       _SubType ApduDataExt
+       _SubType interface {
+               ApduDataExtContract
+               ApduDataExtRequirements
+       }
 
        // Arguments.
        Length uint8
diff --git a/plc4go/protocols/knxnetip/readwrite/model/CEMI.go 
b/plc4go/protocols/knxnetip/readwrite/model/CEMI.go
index 3f45093196..367960e722 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/CEMI.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/CEMI.go
@@ -67,7 +67,10 @@ type CEMIRequirements interface {
 
 // _CEMI is the data-structure of this message
 type _CEMI struct {
-       _SubType CEMI
+       _SubType interface {
+               CEMIContract
+               CEMIRequirements
+       }
 
        // Arguments.
        Size uint16
diff --git 
a/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go 
b/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index 1edf442c5f..d2aaa985c4 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -65,7 +65,10 @@ type CEMIAdditionalInformationRequirements interface {
 
 // _CEMIAdditionalInformation is the data-structure of this message
 type _CEMIAdditionalInformation struct {
-       _SubType CEMIAdditionalInformation
+       _SubType interface {
+               CEMIAdditionalInformationContract
+               CEMIAdditionalInformationRequirements
+       }
 }
 
 var _ CEMIAdditionalInformationContract = (*_CEMIAdditionalInformation)(nil)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go 
b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go
index 063aa2624d..d92747f7ba 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTable.go
@@ -63,7 +63,10 @@ type ComObjectTableRequirements interface {
 
 // _ComObjectTable is the data-structure of this message
 type _ComObjectTable struct {
-       _SubType ComObjectTable
+       _SubType interface {
+               ComObjectTableContract
+               ComObjectTableRequirements
+       }
 }
 
 var _ ComObjectTableContract = (*_ComObjectTable)(nil)
diff --git 
a/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go 
b/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go
index fa1bc0a624..4e61b564b9 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -65,7 +65,10 @@ type ConnectionRequestInformationRequirements interface {
 
 // _ConnectionRequestInformation is the data-structure of this message
 type _ConnectionRequestInformation struct {
-       _SubType ConnectionRequestInformation
+       _SubType interface {
+               ConnectionRequestInformationContract
+               ConnectionRequestInformationRequirements
+       }
 }
 
 var _ ConnectionRequestInformationContract = 
(*_ConnectionRequestInformation)(nil)
diff --git 
a/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go 
b/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 45e5b93620..f580dbcedc 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -65,7 +65,10 @@ type ConnectionResponseDataBlockRequirements interface {
 
 // _ConnectionResponseDataBlock is the data-structure of this message
 type _ConnectionResponseDataBlock struct {
-       _SubType ConnectionResponseDataBlock
+       _SubType interface {
+               ConnectionResponseDataBlockContract
+               ConnectionResponseDataBlockRequirements
+       }
 }
 
 var _ ConnectionResponseDataBlockContract = 
(*_ConnectionResponseDataBlock)(nil)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go 
b/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go
index 6c1f79998f..93fc916550 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxGroupAddress.go
@@ -63,7 +63,10 @@ type KnxGroupAddressRequirements interface {
 
 // _KnxGroupAddress is the data-structure of this message
 type _KnxGroupAddress struct {
-       _SubType KnxGroupAddress
+       _SubType interface {
+               KnxGroupAddressContract
+               KnxGroupAddressRequirements
+       }
 }
 
 var _ KnxGroupAddressContract = (*_KnxGroupAddress)(nil)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go 
b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
index e7e0e82b44..92fa8e6aad 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
@@ -734,8 +734,9 @@ const (
        KnxManufacturer_M_ITALIANA_CONDUTTORI_SRL                            
KnxManufacturer = 688
        KnxManufacturer_M_XIAMEN_LEELEN_TECHNOLOGY_CO__LTD_                  
KnxManufacturer = 689
        KnxManufacturer_M_LEDNX                                              
KnxManufacturer = 690
-       KnxManufacturer_M_ABB___RESERVED                                     
KnxManufacturer = 691
-       KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    
KnxManufacturer = 692
+       KnxManufacturer_M_EBELONG                                            
KnxManufacturer = 691
+       KnxManufacturer_M_ABB___RESERVED                                     
KnxManufacturer = 692
+       KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    
KnxManufacturer = 693
 )
 
 var KnxManufacturerValues []KnxManufacturer
@@ -1434,6 +1435,7 @@ func init() {
                KnxManufacturer_M_ITALIANA_CONDUTTORI_SRL,
                KnxManufacturer_M_XIAMEN_LEELEN_TECHNOLOGY_CO__LTD_,
                KnxManufacturer_M_LEDNX,
+               KnxManufacturer_M_EBELONG,
                KnxManufacturer_M_ABB___RESERVED,
                KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
        }
@@ -4075,10 +4077,14 @@ func (e KnxManufacturer) Number() uint16 {
                }
        case 691:
                { /* '691' */
-                       return 43954
+                       return 749
                }
        case 692:
                { /* '692' */
+                       return 43954
+               }
+       case 693:
+               { /* '693' */
                        return 43959
                }
        case 7:
@@ -6865,10 +6871,14 @@ func (e KnxManufacturer) Name() string {
                }
        case 691:
                { /* '691' */
-                       return "ABB - reserved"
+                       return "ebelong"
                }
        case 692:
                { /* '692' */
+                       return "ABB - reserved"
+               }
+       case 693:
+               { /* '693' */
                        return "Busch-Jaeger Elektro - reserved"
                }
        case 7:
@@ -8337,8 +8347,10 @@ func KnxManufacturerByValue(value uint16) (enum 
KnxManufacturer, ok bool) {
        case 690:
                return KnxManufacturer_M_LEDNX, true
        case 691:
-               return KnxManufacturer_M_ABB___RESERVED, true
+               return KnxManufacturer_M_EBELONG, true
        case 692:
+               return KnxManufacturer_M_ABB___RESERVED, true
+       case 693:
                return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED, true
        case 7:
                return KnxManufacturer_M_GIRA_GIERSIEPEN, true
@@ -9728,6 +9740,8 @@ func KnxManufacturerByName(value string) (enum 
KnxManufacturer, ok bool) {
                return KnxManufacturer_M_EELECTRON, true
        case "M_LEDNX":
                return KnxManufacturer_M_LEDNX, true
+       case "M_EBELONG":
+               return KnxManufacturer_M_EBELONG, true
        case "M_ABB___RESERVED":
                return KnxManufacturer_M_ABB___RESERVED, true
        case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
@@ -11192,6 +11206,8 @@ func (e KnxManufacturer) PLC4XEnumName() string {
                return "M_EELECTRON"
        case KnxManufacturer_M_LEDNX:
                return "M_LEDNX"
+       case KnxManufacturer_M_EBELONG:
+               return "M_EBELONG"
        case KnxManufacturer_M_ABB___RESERVED:
                return "M_ABB___RESERVED"
        case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go 
b/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go
index da6c595f59..43bdcf1a0c 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxNetIpMessage.go
@@ -70,7 +70,10 @@ type KnxNetIpMessageRequirements interface {
 
 // _KnxNetIpMessage is the data-structure of this message
 type _KnxNetIpMessage struct {
-       _SubType KnxNetIpMessage
+       _SubType interface {
+               KnxNetIpMessageContract
+               KnxNetIpMessageRequirements
+       }
 }
 
 var _ KnxNetIpMessageContract = (*_KnxNetIpMessage)(nil)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go 
b/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go
index 0a13164ce4..d41d7fb339 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LDataFrame.go
@@ -77,7 +77,10 @@ type LDataFrameRequirements interface {
 
 // _LDataFrame is the data-structure of this message
 type _LDataFrame struct {
-       _SubType             LDataFrame
+       _SubType interface {
+               LDataFrameContract
+               LDataFrameRequirements
+       }
        FrameType            bool
        NotRepeated          bool
        Priority             CEMIPriority
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go 
b/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go
index e0b8f289d3..ce1f2ec81c 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ServiceId.go
@@ -65,7 +65,10 @@ type ServiceIdRequirements interface {
 
 // _ServiceId is the data-structure of this message
 type _ServiceId struct {
-       _SubType ServiceId
+       _SubType interface {
+               ServiceIdContract
+               ServiceIdRequirements
+       }
 }
 
 var _ ServiceIdContract = (*_ServiceId)(nil)
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusADU.go 
b/plc4go/protocols/modbus/readwrite/model/ModbusADU.go
index c8033eac51..2d6b25f56a 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusADU.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusADU.go
@@ -66,7 +66,10 @@ type ModbusADURequirements interface {
 
 // _ModbusADU is the data-structure of this message
 type _ModbusADU struct {
-       _SubType ModbusADU
+       _SubType interface {
+               ModbusADUContract
+               ModbusADURequirements
+       }
 
        // Arguments.
        Response bool
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go 
b/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go
index 11393507ee..d8840ce577 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDU.go
@@ -69,7 +69,10 @@ type ModbusPDURequirements interface {
 
 // _ModbusPDU is the data-structure of this message
 type _ModbusPDU struct {
-       _SubType ModbusPDU
+       _SubType interface {
+               ModbusPDUContract
+               ModbusPDURequirements
+       }
 }
 
 var _ ModbusPDUContract = (*_ModbusPDU)(nil)
diff --git 
a/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go 
b/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go
index 74363c25dd..42fd29c639 100644
--- a/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go
+++ b/plc4go/protocols/opcua/readwrite/model/ExtensionObjectDefinition.go
@@ -63,7 +63,10 @@ type ExtensionObjectDefinitionRequirements interface {
 
 // _ExtensionObjectDefinition is the data-structure of this message
 type _ExtensionObjectDefinition struct {
-       _SubType ExtensionObjectDefinition
+       _SubType interface {
+               ExtensionObjectDefinitionContract
+               ExtensionObjectDefinitionRequirements
+       }
 }
 
 var _ ExtensionObjectDefinitionContract = (*_ExtensionObjectDefinition)(nil)
diff --git a/plc4go/protocols/opcua/readwrite/model/MessagePDU.go 
b/plc4go/protocols/opcua/readwrite/model/MessagePDU.go
index 429f4e097b..b3ca4aad8e 100644
--- a/plc4go/protocols/opcua/readwrite/model/MessagePDU.go
+++ b/plc4go/protocols/opcua/readwrite/model/MessagePDU.go
@@ -69,8 +69,11 @@ type MessagePDURequirements interface {
 
 // _MessagePDU is the data-structure of this message
 type _MessagePDU struct {
-       _SubType MessagePDU
-       Chunk    ChunkType
+       _SubType interface {
+               MessagePDUContract
+               MessagePDURequirements
+       }
+       Chunk ChunkType
 }
 
 var _ MessagePDUContract = (*_MessagePDU)(nil)
diff --git a/plc4go/protocols/opcua/readwrite/model/NodeIdTypeDefinition.go 
b/plc4go/protocols/opcua/readwrite/model/NodeIdTypeDefinition.go
index 8b81409aae..8958237c50 100644
--- a/plc4go/protocols/opcua/readwrite/model/NodeIdTypeDefinition.go
+++ b/plc4go/protocols/opcua/readwrite/model/NodeIdTypeDefinition.go
@@ -69,7 +69,10 @@ type NodeIdTypeDefinitionRequirements interface {
 
 // _NodeIdTypeDefinition is the data-structure of this message
 type _NodeIdTypeDefinition struct {
-       _SubType NodeIdTypeDefinition
+       _SubType interface {
+               NodeIdTypeDefinitionContract
+               NodeIdTypeDefinitionRequirements
+       }
 }
 
 var _ NodeIdTypeDefinitionContract = (*_NodeIdTypeDefinition)(nil)
diff --git a/plc4go/protocols/opcua/readwrite/model/OpenChannelMessage.go 
b/plc4go/protocols/opcua/readwrite/model/OpenChannelMessage.go
index 31bfcc871e..faf89033f9 100644
--- a/plc4go/protocols/opcua/readwrite/model/OpenChannelMessage.go
+++ b/plc4go/protocols/opcua/readwrite/model/OpenChannelMessage.go
@@ -63,7 +63,10 @@ type OpenChannelMessageRequirements interface {
 
 // _OpenChannelMessage is the data-structure of this message
 type _OpenChannelMessage struct {
-       _SubType OpenChannelMessage
+       _SubType interface {
+               OpenChannelMessageContract
+               OpenChannelMessageRequirements
+       }
 }
 
 var _ OpenChannelMessageContract = (*_OpenChannelMessage)(nil)
diff --git a/plc4go/protocols/opcua/readwrite/model/Payload.go 
b/plc4go/protocols/opcua/readwrite/model/Payload.go
index 7fa072452f..e738012482 100644
--- a/plc4go/protocols/opcua/readwrite/model/Payload.go
+++ b/plc4go/protocols/opcua/readwrite/model/Payload.go
@@ -69,7 +69,10 @@ type PayloadRequirements interface {
 
 // _Payload is the data-structure of this message
 type _Payload struct {
-       _SubType       Payload
+       _SubType interface {
+               PayloadContract
+               PayloadRequirements
+       }
        SequenceHeader SequenceHeader
 
        // Arguments.
diff --git 
a/plc4go/protocols/opcua/readwrite/model/UserIdentityTokenDefinition.go 
b/plc4go/protocols/opcua/readwrite/model/UserIdentityTokenDefinition.go
index b08290150b..112c512525 100644
--- a/plc4go/protocols/opcua/readwrite/model/UserIdentityTokenDefinition.go
+++ b/plc4go/protocols/opcua/readwrite/model/UserIdentityTokenDefinition.go
@@ -63,7 +63,10 @@ type UserIdentityTokenDefinitionRequirements interface {
 
 // _UserIdentityTokenDefinition is the data-structure of this message
 type _UserIdentityTokenDefinition struct {
-       _SubType UserIdentityTokenDefinition
+       _SubType interface {
+               UserIdentityTokenDefinitionContract
+               UserIdentityTokenDefinitionRequirements
+       }
 }
 
 var _ UserIdentityTokenDefinitionContract = 
(*_UserIdentityTokenDefinition)(nil)
diff --git a/plc4go/protocols/opcua/readwrite/model/Variant.go 
b/plc4go/protocols/opcua/readwrite/model/Variant.go
index 19bab5f54a..0efb24d2c5 100644
--- a/plc4go/protocols/opcua/readwrite/model/Variant.go
+++ b/plc4go/protocols/opcua/readwrite/model/Variant.go
@@ -75,7 +75,10 @@ type VariantRequirements interface {
 
 // _Variant is the data-structure of this message
 type _Variant struct {
-       _SubType                 Variant
+       _SubType interface {
+               VariantContract
+               VariantRequirements
+       }
        ArrayLengthSpecified     bool
        ArrayDimensionsSpecified bool
        NoOfArrayDimensions      *int32
diff --git a/plc4go/protocols/s7/readwrite/model/COTPPacket.go 
b/plc4go/protocols/s7/readwrite/model/COTPPacket.go
index 636232487b..84c06f27d4 100644
--- a/plc4go/protocols/s7/readwrite/model/COTPPacket.go
+++ b/plc4go/protocols/s7/readwrite/model/COTPPacket.go
@@ -71,7 +71,10 @@ type COTPPacketRequirements interface {
 
 // _COTPPacket is the data-structure of this message
 type _COTPPacket struct {
-       _SubType   COTPPacket
+       _SubType interface {
+               COTPPacketContract
+               COTPPacketRequirements
+       }
        Parameters []COTPParameter
        Payload    S7Message
 
diff --git a/plc4go/protocols/s7/readwrite/model/COTPParameter.go 
b/plc4go/protocols/s7/readwrite/model/COTPParameter.go
index d2a386366f..cb2986d34c 100644
--- a/plc4go/protocols/s7/readwrite/model/COTPParameter.go
+++ b/plc4go/protocols/s7/readwrite/model/COTPParameter.go
@@ -67,7 +67,10 @@ type COTPParameterRequirements interface {
 
 // _COTPParameter is the data-structure of this message
 type _COTPParameter struct {
-       _SubType COTPParameter
+       _SubType interface {
+               COTPParameterContract
+               COTPParameterRequirements
+       }
 
        // Arguments.
        Rest uint8
diff --git a/plc4go/protocols/s7/readwrite/model/CycServiceItemType.go 
b/plc4go/protocols/s7/readwrite/model/CycServiceItemType.go
index d4a6583f65..dc1328301e 100644
--- a/plc4go/protocols/s7/readwrite/model/CycServiceItemType.go
+++ b/plc4go/protocols/s7/readwrite/model/CycServiceItemType.go
@@ -72,7 +72,10 @@ type CycServiceItemTypeRequirements interface {
 
 // _CycServiceItemType is the data-structure of this message
 type _CycServiceItemType struct {
-       _SubType   CycServiceItemType
+       _SubType interface {
+               CycServiceItemTypeContract
+               CycServiceItemTypeRequirements
+       }
        ByteLength uint8
        SyntaxId   uint8
 }
diff --git a/plc4go/protocols/s7/readwrite/model/S7Address.go 
b/plc4go/protocols/s7/readwrite/model/S7Address.go
index 7e651060f1..1b3073ffa9 100644
--- a/plc4go/protocols/s7/readwrite/model/S7Address.go
+++ b/plc4go/protocols/s7/readwrite/model/S7Address.go
@@ -65,7 +65,10 @@ type S7AddressRequirements interface {
 
 // _S7Address is the data-structure of this message
 type _S7Address struct {
-       _SubType S7Address
+       _SubType interface {
+               S7AddressContract
+               S7AddressRequirements
+       }
 }
 
 var _ S7AddressContract = (*_S7Address)(nil)
diff --git a/plc4go/protocols/s7/readwrite/model/S7DataAlarmMessage.go 
b/plc4go/protocols/s7/readwrite/model/S7DataAlarmMessage.go
index eb532f2f50..eed0881c7c 100644
--- a/plc4go/protocols/s7/readwrite/model/S7DataAlarmMessage.go
+++ b/plc4go/protocols/s7/readwrite/model/S7DataAlarmMessage.go
@@ -69,7 +69,10 @@ type S7DataAlarmMessageRequirements interface {
 
 // _S7DataAlarmMessage is the data-structure of this message
 type _S7DataAlarmMessage struct {
-       _SubType S7DataAlarmMessage
+       _SubType interface {
+               S7DataAlarmMessageContract
+               S7DataAlarmMessageRequirements
+       }
 }
 
 var _ S7DataAlarmMessageContract = (*_S7DataAlarmMessage)(nil)
diff --git a/plc4go/protocols/s7/readwrite/model/S7Message.go 
b/plc4go/protocols/s7/readwrite/model/S7Message.go
index 8b8d88a4a6..85ab659384 100644
--- a/plc4go/protocols/s7/readwrite/model/S7Message.go
+++ b/plc4go/protocols/s7/readwrite/model/S7Message.go
@@ -74,7 +74,10 @@ type S7MessageRequirements interface {
 
 // _S7Message is the data-structure of this message
 type _S7Message struct {
-       _SubType      S7Message
+       _SubType interface {
+               S7MessageContract
+               S7MessageRequirements
+       }
        TpduReference uint16
        Parameter     S7Parameter
        Payload       S7Payload
diff --git a/plc4go/protocols/s7/readwrite/model/S7Parameter.go 
b/plc4go/protocols/s7/readwrite/model/S7Parameter.go
index 2f7e06161b..fb26868d5c 100644
--- a/plc4go/protocols/s7/readwrite/model/S7Parameter.go
+++ b/plc4go/protocols/s7/readwrite/model/S7Parameter.go
@@ -67,7 +67,10 @@ type S7ParameterRequirements interface {
 
 // _S7Parameter is the data-structure of this message
 type _S7Parameter struct {
-       _SubType S7Parameter
+       _SubType interface {
+               S7ParameterContract
+               S7ParameterRequirements
+       }
 }
 
 var _ S7ParameterContract = (*_S7Parameter)(nil)
diff --git a/plc4go/protocols/s7/readwrite/model/S7ParameterUserDataItem.go 
b/plc4go/protocols/s7/readwrite/model/S7ParameterUserDataItem.go
index 9608b095d3..c812ca3186 100644
--- a/plc4go/protocols/s7/readwrite/model/S7ParameterUserDataItem.go
+++ b/plc4go/protocols/s7/readwrite/model/S7ParameterUserDataItem.go
@@ -65,7 +65,10 @@ type S7ParameterUserDataItemRequirements interface {
 
 // _S7ParameterUserDataItem is the data-structure of this message
 type _S7ParameterUserDataItem struct {
-       _SubType S7ParameterUserDataItem
+       _SubType interface {
+               S7ParameterUserDataItemContract
+               S7ParameterUserDataItemRequirements
+       }
 }
 
 var _ S7ParameterUserDataItemContract = (*_S7ParameterUserDataItem)(nil)
diff --git a/plc4go/protocols/s7/readwrite/model/S7Payload.go 
b/plc4go/protocols/s7/readwrite/model/S7Payload.go
index a54e7038ef..bfb79e6eaa 100644
--- a/plc4go/protocols/s7/readwrite/model/S7Payload.go
+++ b/plc4go/protocols/s7/readwrite/model/S7Payload.go
@@ -67,7 +67,10 @@ type S7PayloadRequirements interface {
 
 // _S7Payload is the data-structure of this message
 type _S7Payload struct {
-       _SubType S7Payload
+       _SubType interface {
+               S7PayloadContract
+               S7PayloadRequirements
+       }
 
        // Arguments.
        Parameter S7Parameter
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItem.go 
b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItem.go
index 4e626a2a93..d2b56fabe7 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItem.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItem.go
@@ -77,7 +77,10 @@ type S7PayloadUserDataItemRequirements interface {
 
 // _S7PayloadUserDataItem is the data-structure of this message
 type _S7PayloadUserDataItem struct {
-       _SubType      S7PayloadUserDataItem
+       _SubType interface {
+               S7PayloadUserDataItemContract
+               S7PayloadUserDataItemRequirements
+       }
        ReturnCode    DataTransportErrorCode
        TransportSize DataTransportSize
        DataLength    uint16
diff --git a/plc4go/protocols/s7/readwrite/model/S7VarRequestParameterItem.go 
b/plc4go/protocols/s7/readwrite/model/S7VarRequestParameterItem.go
index 00a78bca6a..0cc77c6e01 100644
--- a/plc4go/protocols/s7/readwrite/model/S7VarRequestParameterItem.go
+++ b/plc4go/protocols/s7/readwrite/model/S7VarRequestParameterItem.go
@@ -65,7 +65,10 @@ type S7VarRequestParameterItemRequirements interface {
 
 // _S7VarRequestParameterItem is the data-structure of this message
 type _S7VarRequestParameterItem struct {
-       _SubType S7VarRequestParameterItem
+       _SubType interface {
+               S7VarRequestParameterItemContract
+               S7VarRequestParameterItemRequirements
+       }
 }
 
 var _ S7VarRequestParameterItemContract = (*_S7VarRequestParameterItem)(nil)
diff --git 
a/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
 
b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
index 1af52d8eb5..d0647c1874 100644
--- 
a/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
+++ 
b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
@@ -1440,8 +1440,9 @@
     ['688' M_ITALIANA_CONDUTTORI_SRL ['746', '"Italiana Conduttori srl"']]
     ['689' M_XIAMEN_LEELEN_TECHNOLOGY_CO__LTD_ ['747', '"Xiamen Leelen 
Technology Co.,Ltd."']]
     ['690' M_LEDNX ['748', '"LedNX"']]
-    ['691' M_ABB___RESERVED ['43954', '"ABB - reserved"']]
-    ['692' M_BUSCH_JAEGER_ELEKTRO___RESERVED ['43959', '"Busch-Jaeger Elektro 
- reserved"']]
+    ['691' M_EBELONG ['749', '"ebelong"']]
+    ['692' M_ABB___RESERVED ['43954', '"ABB - reserved"']]
+    ['693' M_BUSCH_JAEGER_ELEKTRO___RESERVED ['43959', '"Busch-Jaeger Elektro 
- reserved"']]
     
 ]
 

Reply via email to