You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/11/02 16:37:18 UTC

[plc4x] branch feature/plc4go updated: - Implemented the write support in PLC4Go Modbus

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

cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/feature/plc4go by this push:
     new 46a4dc2  - Implemented the write support in PLC4Go Modbus
46a4dc2 is described below

commit 46a4dc2d779c169cf6d5270b520f30f80dee8468
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Nov 2 17:37:09 2020 +0100

    - Implemented the write support in PLC4Go Modbus
---
 .../language/go/GoLanguageTemplateHelper.java      |   13 +-
 .../resources/templates/go/data-io-template.ftlh   |   61 +-
 .../java/modbus/protocol/ModbusProtocolLogic.java  |   23 +-
 .../java/spi/messages/DefaultPlcWriteRequest.java  |   31 +-
 .../java/spi/messages/DefaultPlcWriteResponse.java |   19 +-
 .../plc4x/test/driver/DriverTestsuiteRunner.java   |   63 +-
 .../plc4x/test/driver/model/api/TestField.java     |    8 +-
 .../api/{TestField.java => TestValueField.java}    |   25 +-
 .../resources/protocols/modbus/DriverTestsuite.xml |  222 +--
 .../generated-sources/modbus/include/modbus_pdu.h  |    3 +-
 .../generated-sources/modbus/src/modbus_pdu.c      |    8 +-
 .../testing/protocols/modbus/DriverTestsuite.xml   |  144 +-
 sandbox/plc4go/cmd/main/drivers/bacnetip_test.go   |    2 +-
 sandbox/plc4go/cmd/main/drivers/knxnetip_test.go   |   10 +-
 sandbox/plc4go/cmd/main/drivers/modbus_test.go     |   42 +-
 sandbox/plc4go/cmd/main/drivers/s7_test.go         |   10 +-
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |  325 ++--
 .../bacnetip/readwrite/model/APDUComplexAck.go     |  689 +++++----
 .../readwrite/model/APDUConfirmedRequest.go        | 1043 +++++++------
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |  425 +++---
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |  635 ++++----
 .../plc4go/bacnetip/readwrite/model/NPDU.go        | 1295 ++++++++--------
 .../CEMIAdditionalInformationBusmonitorInfo.go     |  461 +++---
 .../knxnetip/readwrite/model/CEMIDataFrame.go      | 1099 +++++++-------
 .../plc4go/knxnetip/readwrite/model/CEMIFrame.go   |  467 +++---
 .../knxnetip/readwrite/model/CEMIFrameData.go      |  773 +++++-----
 .../knxnetip/readwrite/model/CEMIFrameDataExt.go   |  823 +++++-----
 .../knxnetip/readwrite/model/DeviceStatus.go       |  213 ++-
 .../knxnetip/readwrite/model/KnxDatapoint.go       | 1596 +++++++++++++-------
 .../internal/plc4go/modbus/ModbusConnection.go     |   44 +-
 .../plc4go/internal/plc4go/modbus/ModbusDriver.go  |   16 +-
 .../plc4go/internal/plc4go/modbus/ModbusField.go   |    6 +-
 .../internal/plc4go/modbus/ModbusMessageCodec.go   |  210 +--
 .../plc4go/internal/plc4go/modbus/ModbusReader.go  |   36 +-
 .../internal/plc4go/modbus/ModbusValueHandler.go   |    4 +-
 .../plc4go/internal/plc4go/modbus/ModbusWriter.go  |  190 ++-
 .../plc4go/modbus/readwrite/model/DataItem.go      |  970 +++++++-----
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |  361 +++--
 .../plc4go/model/DefaultPlcWriteRequest.go         |   53 +-
 .../plc4go/model/DefaultPlcWriteResponse.go        |   86 ++
 .../plc4go/internal/plc4go/model/values/BOOL.go    |   26 +-
 .../plc4go/internal/plc4go/model/values/BYTE.go    |   29 +-
 .../plc4go/internal/plc4go/model/values/DINT.go    |    5 +
 .../plc4go/internal/plc4go/model/values/DWORD.go   |   29 +-
 .../plc4go/model/values/IEC61131ValueHandler.go    |  377 +++--
 sandbox/plc4go/internal/plc4go/model/values/INT.go |    5 +
 .../plc4go/internal/plc4go/model/values/LINT.go    |    5 +
 .../plc4go/internal/plc4go/model/values/LREAL.go   |    9 +
 .../plc4go/internal/plc4go/model/values/LWORD.go   |   29 +-
 .../plc4go/internal/plc4go/model/values/PlcList.go |   12 +-
 .../plc4go/model/values/PlcSimpleValueAdapter.go   |    6 +-
 .../plc4go/model/values/PlcValueAdapter.go         |   12 +-
 .../plc4go/internal/plc4go/model/values/REAL.go    |    9 +
 .../plc4go/internal/plc4go/model/values/SINT.go    |    9 +-
 .../plc4go/internal/plc4go/model/values/UDINT.go   |    5 +
 .../plc4go/internal/plc4go/model/values/UINT.go    |    5 +
 .../plc4go/internal/plc4go/model/values/ULINT.go   |    5 +
 .../plc4go/internal/plc4go/model/values/USINT.go   |    5 +
 .../plc4go/internal/plc4go/model/values/WORD.go    |   29 +-
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |  225 ++-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |  190 ++-
 .../plc4go/s7/readwrite/model/S7StaticHelper.go    |  160 +-
 .../plc4go/spi/HandlerExposer.go}                  |    7 +-
 .../plc4go/internal/plc4go/spi/PlcValueHandler.go  |    7 +-
 .../internal/plc4go/testutils/DriverTestRunner.go  |   32 +-
 .../plc4go/testutils/ParserSerializerTestRunner.go |    4 +-
 .../plc4go/transports/TransportInstance.go         |    1 +
 .../plc4go/transports/test/TestTransport.go        |    4 +
 sandbox/plc4go/internal/plc4go/utils/CastUtils.go  |   68 +-
 sandbox/plc4go/internal/plc4go/utils/ReadBuffer.go |    8 +-
 .../plc4go/internal/plc4go/utils/WriteBuffer.go    |    9 +-
 sandbox/plc4go/pkg/plc4go/model/plc_field.go       |    1 +
 .../plc4go/pkg/plc4go/model/plc_write_request.go   |    5 +
 sandbox/plc4go/pkg/plc4go/values/plc_value.go      |   10 +-
 74 files changed, 7924 insertions(+), 5922 deletions(-)

diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index f59e51e..602403e 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -244,7 +244,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
     public String getWriteBufferWriteMethodCall(SimpleTypeReference simpleTypeReference, String fieldName) {
         switch (simpleTypeReference.getBaseType()) {
             case BIT: {
-                return "io.WriteBit((bool) " + fieldName + ")";
+                return "io.WriteBit(" + fieldName + ")";
             }
             case UINT: {
                 IntegerTypeReference integerTypeReference = (IntegerTypeReference) simpleTypeReference;
@@ -477,7 +477,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                 if (arg instanceof VariableLiteral) {
                     VariableLiteral va = (VariableLiteral) arg;
                     // "io" is the default name of the reader argument which is always available.
-                    boolean isParserArg = "io".equals(va.getName());
+                    boolean isParserArg = "io".equals(va.getName()) || ((getThisTypeDefinition() instanceof DataIoTypeDefinition) && "_value".equals(va.getName()));
                     boolean isTypeArg = "_type".equals(va.getName());
                     if (!isParserArg && !isTypeArg && parserArguments != null) {
                         for (Argument parserArgument : parserArguments) {
@@ -488,8 +488,13 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                         }
                     }
                     if (isParserArg) {
-                        sb.append(va.getName() + ((va.getChild() != null) ?
-                            "." + toVariableExpression(typeReference, vl.getChild(), parserArguments, serializerArguments, false, suppressPointerAccess) : ""));
+                        if(va.getName().equals("_value")) {
+                            sb.append(va.getName().substring(1) + ((va.getChild() != null) ?
+                                "." + toVariableExpression(typeReference, vl.getChild(), parserArguments, serializerArguments, false, suppressPointerAccess) : ""));
+                        } else {
+                            sb.append(va.getName() + ((va.getChild() != null) ?
+                                "." + toVariableExpression(typeReference, vl.getChild(), parserArguments, serializerArguments, false, suppressPointerAccess) : ""));
+                        }
                     }
                     // We have to manually evaluate the type information at code-generation time.
                     else if (isTypeArg) {
diff --git a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
index f52ea05..2f03720 100644
--- a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
@@ -111,13 +111,15 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
                     <#assign reservedField = field>
 
             // Reserved Field (Just skip the bytes)
-            ${helper.getReadBufferReadMethodCall(field.type)}
+            if _, _err := ${helper.getReadBufferReadMethodCall(field.type)}; _err != nil {
+                return nil, errors.New("Error parsing reserved field " + _err.Error())
+            }
                     <#break>
                 <#case "simple">
                     <#assign simpleField = field>
 
             // Simple Field (${field.name})
-            <#if case.name == "Struct" || field.name == "value">${field.name}<#else>_</#if>, _${field.name}Err := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.par [...]
+            <#if case.name == "Struct" || field.name == "value">${field.name}<#else>_</#if>, _${field.name}Err := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserArgume [...]
             if _${field.name}Err != nil {
                 return nil, errors.New("Error parsing '${field.name}' field " + _${field.name}Err.Error())
             }
@@ -164,4 +166,59 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
     return nil, errors.New("unsupported type")
 }
 
+func ${type.name}Serialize(io *utils.WriteBuffer, value api.PlcValue<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type)>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
+    switch {
+    <#list type.switchField.cases as case>
+        case <#if case.discriminatorValues?has_content><#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == <#if helper.discriminatorValueNeedsStringEqualityCheck(type.switchField.discriminatorExpressions[discriminatorValue?index])>"${discriminatorValue}"<#else>${discriminatorValue}</#if><#sep> && </#sep></#list></#if>: // ${case.name}
+        <#if case.name == "Struct">
+            _map := map[string]interface{}{}
+        </#if>
+        <#list case.fields as field>
+            <#switch field.typeName>
+                <#case "array">
+                    <#assign arrayField = field>
+
+            // Array Field (${field.name})
+            for i := uint32(0); i < uint32(${helper.toSerializationExpression(null, field.loopExpression, type.parserArguments)}); i++ {
+                _itemErr := DataItemSerialize(io, value.GetIndex(i), ${type.parserArguments[0].name}, ${helper.getLanguageTypeNameForTypeReference(type.parserArguments[1].type)}(1))
+                if _itemErr != nil {
+                    return errors.New("Error serializing 'value' field " + _itemErr.Error())
+                }
+            }
+                    <#break>
+                <#case "manual">
+                    <#assign manualField = field>
+
+            // Manual Field (${field.name})
+            _${field.name}Err := ${helper.toSerializationExpression(field, manualField.serializeExpression, type.parserArguments)}
+            if _${field.name}Err != nil {
+                return errors.New("Error serializing '${field.name}' field " + _${field.name}Err.Error())
+            }
+                    <#break>
+                <#case "reserved">
+                    <#assign reservedField = field>
+
+            // Reserved Field (Just skip the bytes)
+            if _err := ${helper.getWriteBufferWriteMethodCall(field.type, helper.getReservedValue(field))}; _err != nil {
+                return errors.New("Error serializing reserved field " + _err.Error())
+            }
+                    <#break>
+                <#case "simple">
+                    <#assign simpleField = field>
+
+            // Simple Field (${field.name})
+            if _err := <#if helper.isSimpleTypeReference(field.type)>${helper.getWriteBufferWriteMethodCall(field.type, "value.Get" + helper.getLanguageTypeNameForTypeReference(field.type)?cap_first + "()")}<#else>${field.type.name}Serialize(io, <#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.parserAr [...]
+                return errors.New("Error serializing '${field.name}' field " + _err.Error())
+            }
+                    <#break>
+            </#switch>
+        </#list>
+    </#list>
+        default:
+
+            return errors.New("unsupported type")
+    }
+    return nil
+}
+
 </#outputformat>
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
index 0b20229..6be50c8 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
@@ -147,19 +147,28 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
 
     private PlcResponseCode getErrorCode(ModbusPDUError errorResponse) {
         switch (errorResponse.getExceptionCode()) {
-            case 1:
-                // This implies the received function code is not supported.
+            case ILLEGAL_FUNCTION:
                 return PlcResponseCode.UNSUPPORTED;
-            case 2:
+            case ILLEGAL_DATA_ADDRESS:
                 return PlcResponseCode.INVALID_ADDRESS;
-            case 3:
+            case ILLEGAL_DATA_VALUE:
                 return PlcResponseCode.INVALID_DATA;
-            case 4:
+            case SLAVE_DEVICE_FAILURE:
                 return PlcResponseCode.REMOTE_ERROR;
-            case 6:
+            case ACKNOWLEDGE:
+                return PlcResponseCode.OK;
+            case SLAVE_DEVICE_BUSY:
                 return PlcResponseCode.REMOTE_BUSY;
+            case NEGATIVE_ACKNOWLEDGE:
+                return PlcResponseCode.REMOTE_ERROR;
+            case MEMORY_PARITY_ERROR:
+                return PlcResponseCode.INTERNAL_ERROR;
+            case GATEWAY_PATH_UNAVAILABLE:
+                return PlcResponseCode.INTERNAL_ERROR;
+            case GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
+                return PlcResponseCode.REMOTE_ERROR;
             default:
-                // This generally implies that something wen't wrong which we didn't anticipate.
+                // This generally implies that something went wrong which we didn't anticipate.
                 return PlcResponseCode.INTERNAL_ERROR;
         }
     }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
index 34b7ac7..c010ff0 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
@@ -34,6 +34,7 @@ import org.apache.plc4x.java.api.value.PlcValue;
 import org.apache.plc4x.java.api.value.PlcValueHandler;
 import org.apache.plc4x.java.spi.connection.PlcFieldHandler;
 import org.apache.plc4x.java.spi.messages.utils.FieldValueItem;
+import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import java.util.LinkedHashMap;
@@ -142,7 +143,35 @@ public class DefaultPlcWriteRequest implements PlcWriteRequest, XmlSerializable
 
     @Override
     public void xmlSerialize(Element parent) {
-        // TODO: Implement
+        Document doc = parent.getOwnerDocument();
+        Element messageElement = doc.createElement("PlcWriteRequest");
+        Element fieldsElement = doc.createElement("fields");
+        messageElement.appendChild(fieldsElement);
+        for (Map.Entry<String, FieldValueItem> fieldEntry : fields.entrySet()) {
+            FieldValueItem fieldValueItem = fieldEntry.getValue();
+            String fieldName = fieldEntry.getKey();
+            Element fieldNameElement = doc.createElement(fieldName);
+            fieldsElement.appendChild(fieldNameElement);
+            PlcField field = fieldValueItem.getField();
+            if(!(field instanceof XmlSerializable)) {
+                throw new RuntimeException("Error serializing. Field doesn't implement XmlSerializable");
+            }
+            ((XmlSerializable) field).xmlSerialize(fieldNameElement);
+            final PlcValue value = fieldValueItem.getValue();
+            if(value instanceof PlcList) {
+                PlcList list = (PlcList) value;
+                for (PlcValue plcValue : list.getList()) {
+                    Element fieldValueElement = doc.createElement("value");
+                    fieldValueElement.setTextContent(plcValue.getString());
+                    fieldNameElement.appendChild(fieldValueElement);
+                }
+            } else {
+                Element fieldValueElement = doc.createElement("value");
+                fieldValueElement.setTextContent(value.getString());
+                fieldNameElement.appendChild(fieldValueElement);
+            }
+        }
+        parent.appendChild(messageElement);
     }
 
     public static class Builder implements PlcWriteRequest.Builder {
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
index 9ea0807..6d8f3d7 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
@@ -26,7 +26,10 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.messages.PlcWriteResponse;
 import org.apache.plc4x.java.api.model.PlcField;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
+import org.apache.plc4x.java.api.value.PlcValue;
+import org.apache.plc4x.java.spi.messages.utils.ResponseItem;
 import org.apache.plc4x.java.spi.utils.XmlSerializable;
+import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import java.util.Collection;
@@ -70,7 +73,21 @@ public class DefaultPlcWriteResponse implements PlcWriteResponse, XmlSerializabl
 
     @Override
     public void xmlSerialize(Element parent) {
-        // TODO: Implement
+        Document doc = parent.getOwnerDocument();
+        Element messageElement = doc.createElement("PlcWriteResponse");
+        if(request instanceof XmlSerializable) {
+            ((XmlSerializable) request).xmlSerialize(messageElement);
+        }
+        Element fieldsElement = doc.createElement("fields");
+        messageElement.appendChild(fieldsElement);
+        for (Map.Entry<String, PlcResponseCode> fieldEntry : values.entrySet()) {
+            String fieldName = fieldEntry.getKey();
+            final PlcResponseCode fieldResponseCode = fieldEntry.getValue();
+            Element fieldNameElement = doc.createElement(fieldName);
+            fieldNameElement.setAttribute("result", fieldResponseCode.name());
+            fieldsElement.appendChild(fieldNameElement);
+        }
+        parent.appendChild(messageElement);
     }
 
 }
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java
index b4fce42..a4dfe57 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/DriverTestsuiteRunner.java
@@ -32,6 +32,7 @@ import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.PlcResponse;
+import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.spi.connection.ChannelExposingConnection;
 import org.apache.plc4x.java.spi.connection.GeneratedDriverBase;
 import org.apache.plc4x.java.spi.generation.*;
@@ -211,7 +212,6 @@ public class DriverTestsuiteRunner {
 
     private void executeStep(TestStep testStep, PlcConnection plcConnection, Plc4xEmbeddedChannel embeddedChannel, boolean bigEndian) throws DriverTestsuiteException {
         LOGGER.info(String.format("  - Running step: '%s' - %s", testStep.getName(), testStep.getType()));
-        final ObjectMapper mapper = new XmlMapper().enableDefaultTyping();
         final Element payload = testStep.getPayload();
         try {
             switch (testStep.getType()) {
@@ -245,26 +245,49 @@ public class DriverTestsuiteRunner {
                     break;
                 }
                 case API_REQUEST: {
-                    final String referenceXml = payload.asXML();
-                    final TestRequest request = mapper.readValue(referenceXml, TestRequest.class);
-                    if(request instanceof TestReadRequest) {
-                        final TestReadRequest readRequest = (TestReadRequest) request;
-                        final PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
-                        for (TestField testField : readRequest.getFields()) {
-                            builder.addItem(testField.getName(), testField.getAddress());
+                    switch(payload.attributeValue("className")) {
+                        case "org.apache.plc4x.test.driver.model.api.TestReadRequest": {
+                            final PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
+                            if(payload.element("fields") != null) {
+                                for (Element fieldElement : payload.element("fields").elements("field")) {
+                                    builder.addItem(fieldElement.elementText("name"), fieldElement.elementText("address"));
+                                }
+                            }
+                            final PlcReadRequest plc4xRequest = builder.build();
+                            // Currently we can only process one response at at time, throw an error if more
+                            // are submitted.
+                            if (responseFuture != null) {
+                                throw new DriverTestsuiteException("Previous response not handled.");
+                            }
+                            // Save the response for being used later on.
+                            responseFuture = plc4xRequest.execute();
+                            break;
                         }
-                        final PlcReadRequest plc4xRequest = builder.build();
-                        // Currently we can only process one response at at time, throw an error if more
-                        // are submitted.
-                        if(responseFuture != null) {
-                            throw new DriverTestsuiteException("Previous response not handled.");
+                        case "org.apache.plc4x.test.driver.model.api.TestWriteRequest": {
+                            final PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder();
+                            if(payload.element("fields") != null) {
+                                for (Element fieldElement : payload.element("fields").elements("field")) {
+                                    List<Element> valueElements = fieldElement.elements("value");
+                                    List<String> valueStrings = new ArrayList<>(valueElements.size());
+                                    for (Element valueElement : valueElements) {
+                                        valueStrings.add(valueElement.getTextTrim());
+                                    }
+                                    builder.addItem(fieldElement.elementText("name"),
+                                        fieldElement.elementText("address"), valueStrings.toArray(new Object[0]));
+                                }
+                            }
+                            final PlcWriteRequest plc4xRequest = builder.build();
+                            // Currently we can only process one response at at time, throw an error if more
+                            // are submitted.
+                            if (responseFuture != null) {
+                                throw new DriverTestsuiteException("Previous response not handled.");
+                            }
+                            // Save the response for being used later on.
+                            responseFuture = plc4xRequest.execute();
+                            break;
                         }
-                        // Save the response for being used later on.
-                        responseFuture = plc4xRequest.execute();
-                    } else if(request instanceof TestWriteRequest) {
-                        // TODO: Implement ...
-                        throw new NotImplementedException("api-write-request not implemented yet");
                     }
+
                     break;
                 }
                 case API_RESPONSE: {
@@ -293,7 +316,7 @@ public class DriverTestsuiteRunner {
                     embeddedChannel.close();
                 }
             }
-        } catch (IOException e) {
+        } catch (Exception e) {
             throw new DriverTestsuiteException("Error processing the xml", e);
         }
         LOGGER.info("    Done");
@@ -479,4 +502,6 @@ public class DriverTestsuiteRunner {
         }
     }
 
+
+
 }
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
index 2bd1c06..3dd0cfb 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
@@ -18,18 +18,12 @@ under the License.
 */
 package org.apache.plc4x.test.driver.model.api;
 
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
 public class TestField {
 
     private final String name;
     private final String address;
 
-    @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
-    public TestField(@JsonProperty("name") String name, @JsonProperty("address") String address) {
+    public TestField(String name, String address) {
         this.name = name;
         this.address = address;
     }
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestValueField.java
similarity index 56%
copy from plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
copy to plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestValueField.java
index 2bd1c06..6ca866d 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestField.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/driver/model/api/TestValueField.java
@@ -18,28 +18,17 @@ under the License.
 */
 package org.apache.plc4x.test.driver.model.api;
 
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
+public class TestValueField extends TestField {
 
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class TestField {
+    private final String[] values;
 
-    private final String name;
-    private final String address;
-
-    @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
-    public TestField(@JsonProperty("name") String name, @JsonProperty("address") String address) {
-        this.name = name;
-        this.address = address;
-    }
-
-    public String getName() {
-        return name;
+    public TestValueField(String name, String address, String[] values) {
+        super(name, address);
+        this.values = values;
     }
 
-    public String getAddress() {
-        return address;
+    public String[] getValues() {
+        return values;
     }
 
 }
diff --git a/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml b/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml
index 4d8f8cb..ed35a3f 100644
--- a/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml
+++ b/protocols/modbus/src/test/resources/protocols/modbus/DriverTestsuite.xml
@@ -26,80 +26,6 @@
 
   <driver-name>modbus</driver-name>
 
-  <!-- Single element read BOOL (Coil) -->
-
-
-  <!--testcase>
-    <name>Single element read BOOL</name>
-    <steps>
-      <api-request name="Receive Read Request from application">
-        <TestReadRequest className="org.apache.plc4x.test.driver.model.api.TestReadRequest">
-          <fields>
-            <field className="org.apache.plc4x.test.driver.model.api.TestField">
-              <name>hurz</name>
-              <address>holding-register:1:BOOL</address>
-            </field>
-          </fields>
-        </TestReadRequest>
-      </api-request>
-      <outgoing-plc-message name="Send Modbus Input-Register Read Request">
-        <parser-arguments>
-          <response>false</response>
-        </parser-arguments>
-        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
-          <transactionIdentifier>10</transactionIdentifier>
-          <unitIdentifier>1</unitIdentifier>
-          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersRequest">
-            <startingAddress>0</startingAddress>
-            <quantity>4</quantity>
-          </pdu>
-        </ModbusTcpADU>
-      </outgoing-plc-message>
-      <incoming-plc-message name="Receive Modbus Input-Register Read Response">
-        <parser-arguments>
-          <response>true</response>
-        </parser-arguments>
-        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
-          <transactionIdentifier>10</transactionIdentifier>
-          <unitIdentifier>1</unitIdentifier>
-          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
-          </pdu>
-        </ModbusTcpADU>
-      </incoming-plc-message>
-      <api-response name="Report Read Response to application">
-        <DefaultPlcReadResponse className="org.apache.plc4x.java.spi.messages.DefaultPlcReadResponse">
-          <request className="org.apache.plc4x.java.spi.messages.DefaultPlcReadRequest">
-            <hurz className="org.apache.plc4x.java.modbus.field.ModbusFieldHoldingRegister">
-              <address>0</address>
-              <dataType>IEC61131_REAL</dataType>
-              <lengthBytes>8</lengthBytes>
-              <lengthWords>4</lengthWords>
-              <dataTypeSize>4</dataTypeSize>
-            </hurz>
-          </request>
-          <hurz>
-            <code>OK</code>
-            <value className="org.apache.plc4x.java.api.value.PlcList">
-              <object>java.util.Collections..UnmodifiableRandomAccessList</object>
-              <object>org.apache.plc4x.java.api.value.PlcREAL</object>
-              <object>
-                <object>java.lang.Float</object>
-                <object>3.1415927</object>
-              </object>
-              <object>org.apache.plc4x.java.api.value.PlcREAL</object>
-              <object>
-                <object>java.lang.Float</object>
-                <object>3.1415927</object>
-              </object>
-            </value>
-          </hurz>
-        </DefaultPlcReadResponse>
-      </api-response>
-    </steps>
-  </testcase-->
-
-
   <testcase>
     <name>Single element read request</name>
     <steps>
@@ -114,7 +40,6 @@
         </TestReadRequest>
       </api-request>
       <outgoing-plc-message name="Send Modbus Input-Register Read Request">
-        <!-- 000a00000006010300000004 -->
         <parser-arguments>
           <response>false</response>
         </parser-arguments>
@@ -128,7 +53,6 @@
         </ModbusTcpADU>
       </outgoing-plc-message>
       <incoming-plc-message name="Receive Modbus Input-Register Read Response">
-        <!-- 000b0000000b0103080000000000000000 -->
         <parser-arguments>
           <response>true</response>
         </parser-arguments>
@@ -136,7 +60,7 @@
           <transactionIdentifier>1</transactionIdentifier>
           <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
+            <value>QEkP2w==</value>
           </pdu>
         </ModbusTcpADU>
       </incoming-plc-message>
@@ -177,7 +101,6 @@
         </TestReadRequest>
       </api-request>
       <outgoing-plc-message name="Send Modbus Input-Register Read Request">
-        <!-- 000a00000006010300000004 -->
         <parser-arguments>
           <response>false</response>
         </parser-arguments>
@@ -191,7 +114,6 @@
         </ModbusTcpADU>
       </outgoing-plc-message>
       <incoming-plc-message name="Receive Modbus Input-Register Read Response">
-        <!-- 000b0000000b0103080000000000000000 -->
         <parser-arguments>
           <response>true</response>
         </parser-arguments>
@@ -247,7 +169,6 @@
         </TestReadRequest>
       </api-request>
       <outgoing-plc-message name="Send First Item Modbus Input-Register Read Request">
-        <!-- 000a00000006010300000004 -->
         <parser-arguments>
           <response>false</response>
         </parser-arguments>
@@ -261,7 +182,6 @@
         </ModbusTcpADU>
       </outgoing-plc-message>
       <incoming-plc-message name="Receive First Item Modbus Input-Register Read Response">
-        <!-- 000b0000000b0103080000000000000000 -->
         <parser-arguments>
           <response>true</response>
         </parser-arguments>
@@ -269,7 +189,7 @@
           <transactionIdentifier>1</transactionIdentifier>
           <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
+            <value>QEkP2w==</value>
           </pdu>
         </ModbusTcpADU>
       </incoming-plc-message>
@@ -278,8 +198,8 @@
           <response>false</response>
         </parser-arguments>
         <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
-          <transactionIdentifier>1</transactionIdentifier>
-          <unitIdentifier>2</unitIdentifier>
+          <transactionIdentifier>2</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersRequest">
             <startingAddress>2</startingAddress>
             <quantity>2</quantity>
@@ -291,10 +211,10 @@
           <response>true</response>
         </parser-arguments>
         <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
-          <transactionIdentifier>1</transactionIdentifier>
-          <unitIdentifier>2</unitIdentifier>
+          <transactionIdentifier>2</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
+            <value>QEkP2w==</value>
           </pdu>
         </ModbusTcpADU>
       </incoming-plc-message>
@@ -331,4 +251,132 @@
     </steps>
   </testcase>
 
+  <testcase>
+    <name>Single element write request</name>
+    <steps>
+      <api-request name="Receive Write Request from application">
+        <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+          <fields>
+            <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+              <name>hurz</name>
+              <address>holding-register:1:REAL</address>
+              <value>3.1415927</value>
+            </field>
+          </fields>
+        </TestWriteRequest>
+      </api-request>
+      <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+        <parser-arguments>
+          <response>false</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+            <startingAddress>0</startingAddress>
+            <quantity>2</quantity>
+            <value>QEkP2w==</value>
+          </pdu>
+        </ModbusTcpADU>
+      </outgoing-plc-message>
+      <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+        <parser-arguments>
+          <response>true</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+            <startingAddress>0</startingAddress>
+            <quantity>2</quantity>
+          </pdu>
+        </ModbusTcpADU>
+      </incoming-plc-message>
+      <api-response name="Report Write Response to application">
+        <PlcWriteResponse>
+          <PlcWriteRequest>
+            <fields>
+              <hurz>
+                <ModbusFieldHoldingRegister>
+                  <address>0</address>
+                  <numberOfElements>1</numberOfElements>
+                  <dataType>IEC61131_REAL</dataType>
+                </ModbusFieldHoldingRegister>
+                <value>3.1415927</value>
+              </hurz>
+            </fields>
+          </PlcWriteRequest>
+          <fields>
+            <hurz result="OK"/>
+          </fields>
+        </PlcWriteResponse>
+      </api-response>
+    </steps>
+  </testcase>
+
+  <testcase>
+    <name>Array element write request</name>
+    <steps>
+      <api-request name="Receive Write Request from application">
+        <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+          <fields>
+            <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+              <name>hurz</name>
+              <address>holding-register:1:REAL[2]</address>
+              <value>3.1415927</value>
+              <value>3.1415927</value>
+            </field>
+          </fields>
+        </TestWriteRequest>
+      </api-request>
+      <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+        <parser-arguments>
+          <response>false</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+            <startingAddress>0</startingAddress>
+            <quantity>4</quantity>
+            <value>QEkP20BJD9s=</value>
+          </pdu>
+        </ModbusTcpADU>
+      </outgoing-plc-message>
+      <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+        <parser-arguments>
+          <response>true</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+            <startingAddress>0</startingAddress>
+            <quantity>4</quantity>
+          </pdu>
+        </ModbusTcpADU>
+      </incoming-plc-message>
+      <api-response name="Report Write Response to application">
+        <PlcWriteResponse>
+          <PlcWriteRequest>
+            <fields>
+              <hurz>
+                <ModbusFieldHoldingRegister>
+                  <address>0</address>
+                  <numberOfElements>2</numberOfElements>
+                  <dataType>IEC61131_REAL</dataType>
+                </ModbusFieldHoldingRegister>
+                <value>3.1415927</value>
+                <value>3.1415927</value>
+              </hurz>
+            </fields>
+          </PlcWriteRequest>
+          <fields>
+            <hurz result="OK"/>
+          </fields>
+        </PlcWriteResponse>
+      </api-response>
+    </steps>
+  </testcase>
+
 </test:driver-testsuite>
diff --git a/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h b/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
index 1ba9881..46fdefc 100644
--- a/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
+++ b/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
@@ -29,6 +29,7 @@
 #include "modbus_pdu_read_file_record_response_item.h"
 #include "modbus_pdu_write_file_record_response_item.h"
 #include "modbus_pdu.h"
+#include "modbus_error_code.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -95,7 +96,7 @@ struct plc4c_modbus_read_write_modbus_pdu {
   /* Properties */
   union {
     struct { /* ModbusPDUError */
-      uint8_t modbus_pdu_error_exception_code;
+      plc4c_modbus_read_write_modbus_error_code modbus_pdu_error_exception_code;
     };
     struct { /* ModbusPDUReadDiscreteInputsRequest */
       uint16_t modbus_pdu_read_discrete_inputs_request_starting_address;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
index c6daca6..31789e5 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -148,8 +148,8 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
   if(errorFlag == true) { /* ModbusPDUError */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error;
                     
-    // Simple Field (exceptionCode)
-    uint8_t exceptionCode = 0;
+    // Enum field (exceptionCode)
+    plc4c_modbus_read_write_modbus_error_code exceptionCode = plc4c_modbus_read_write_modbus_error_code_null();
     _res = plc4c_spi_read_unsigned_byte(io, 8, (uint8_t*) &exceptionCode);
     if(_res != OK) {
       return _res;
@@ -1195,7 +1195,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_serialize(plc4c_spi_write_b
   switch(_message->_type) {
     case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error: {
 
-      // Simple Field (exceptionCode)
+      // Enum field (exceptionCode)
       _res = plc4c_spi_write_unsigned_byte(io, 8, _message->modbus_pdu_error_exception_code);
       if(_res != OK) {
         return _res;
@@ -1905,7 +1905,7 @@ uint16_t plc4c_modbus_read_write_modbus_pdu_length_in_bits(plc4c_modbus_read_wri
   switch(_message->_type) {
     case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error: {
 
-      // Simple field (exceptionCode)
+      // Enum Field (exceptionCode)
       lengthInBits += 8;
 
       break;
diff --git a/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml b/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml
index afd165f..ec63d64 100644
--- a/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml
+++ b/sandbox/plc4go/assets/testing/protocols/modbus/DriverTestsuite.xml
@@ -60,7 +60,7 @@
           <transactionIdentifier>1</transactionIdentifier>
           <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
+            <value>QEkP2w==</value>
           </pdu>
         </ModbusTcpADU>
       </incoming-plc-message>
@@ -169,7 +169,6 @@
         </TestReadRequest>
       </api-request>
       <outgoing-plc-message name="Send First Item Modbus Input-Register Read Request">
-        <!-- 000a00000006010300000004 -->
         <parser-arguments>
           <response>false</response>
         </parser-arguments>
@@ -183,7 +182,6 @@
         </ModbusTcpADU>
       </outgoing-plc-message>
       <incoming-plc-message name="Receive First Item Modbus Input-Register Read Response">
-        <!-- 000b0000000b0103080000000000000000 -->
         <parser-arguments>
           <response>true</response>
         </parser-arguments>
@@ -191,7 +189,7 @@
           <transactionIdentifier>1</transactionIdentifier>
           <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
+            <value>QEkP2w==</value>
           </pdu>
         </ModbusTcpADU>
       </incoming-plc-message>
@@ -200,8 +198,8 @@
           <response>false</response>
         </parser-arguments>
         <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
-          <transactionIdentifier>1</transactionIdentifier>
-          <unitIdentifier>2</unitIdentifier>
+          <transactionIdentifier>2</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersRequest">
             <startingAddress>2</startingAddress>
             <quantity>2</quantity>
@@ -213,10 +211,10 @@
           <response>true</response>
         </parser-arguments>
         <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
-          <transactionIdentifier>1</transactionIdentifier>
-          <unitIdentifier>2</unitIdentifier>
+          <transactionIdentifier>2</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
           <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUReadHoldingRegistersResponse">
-            <value>QEkP20BJD9s=</value>
+            <value>QEkP2w==</value>
           </pdu>
         </ModbusTcpADU>
       </incoming-plc-message>
@@ -253,4 +251,132 @@
     </steps>
   </testcase>
 
+  <testcase>
+    <name>Single element write request</name>
+    <steps>
+      <api-request name="Receive Write Request from application">
+        <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+          <fields>
+            <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+              <name>hurz</name>
+              <address>holding-register:1:REAL</address>
+              <value>3.1415927</value>
+            </field>
+          </fields>
+        </TestWriteRequest>
+      </api-request>
+      <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+        <parser-arguments>
+          <response>false</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+            <startingAddress>0</startingAddress>
+            <quantity>2</quantity>
+            <value>QEkP2w==</value>
+          </pdu>
+        </ModbusTcpADU>
+      </outgoing-plc-message>
+      <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+        <parser-arguments>
+          <response>true</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+            <startingAddress>0</startingAddress>
+            <quantity>2</quantity>
+          </pdu>
+        </ModbusTcpADU>
+      </incoming-plc-message>
+      <api-response name="Report Write Response to application">
+        <PlcWriteResponse>
+          <PlcWriteRequest>
+            <fields>
+              <hurz>
+                <ModbusFieldHoldingRegister>
+                  <address>0</address>
+                  <numberOfElements>1</numberOfElements>
+                  <dataType>IEC61131_REAL</dataType>
+                </ModbusFieldHoldingRegister>
+                <value>3.141593</value>
+              </hurz>
+            </fields>
+          </PlcWriteRequest>
+          <fields>
+            <hurz result="OK"/>
+          </fields>
+        </PlcWriteResponse>
+      </api-response>
+    </steps>
+  </testcase>
+
+  <testcase>
+    <name>Array element write request</name>
+    <steps>
+      <api-request name="Receive Write Request from application">
+        <TestWriteRequest className="org.apache.plc4x.test.driver.model.api.TestWriteRequest">
+          <fields>
+            <field className="org.apache.plc4x.test.driver.model.api.TestValueField">
+              <name>hurz</name>
+              <address>holding-register:1:REAL[2]</address>
+              <value>3.1415927</value>
+              <value>3.1415927</value>
+            </field>
+          </fields>
+        </TestWriteRequest>
+      </api-request>
+      <outgoing-plc-message name="Send Modbus Input-Register Write Request">
+        <parser-arguments>
+          <response>false</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersRequest">
+            <startingAddress>0</startingAddress>
+            <quantity>4</quantity>
+            <value>QEkP20BJD9s=</value>
+          </pdu>
+        </ModbusTcpADU>
+      </outgoing-plc-message>
+      <incoming-plc-message name="Receive Modbus Input-Register Write Response">
+        <parser-arguments>
+          <response>true</response>
+        </parser-arguments>
+        <ModbusTcpADU className="org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU">
+          <transactionIdentifier>1</transactionIdentifier>
+          <unitIdentifier>1</unitIdentifier>
+          <pdu className="org.apache.plc4x.java.modbus.readwrite.ModbusPDUWriteMultipleHoldingRegistersResponse">
+            <startingAddress>0</startingAddress>
+            <quantity>4</quantity>
+          </pdu>
+        </ModbusTcpADU>
+      </incoming-plc-message>
+      <api-response name="Report Write Response to application">
+        <PlcWriteResponse>
+          <PlcWriteRequest>
+            <fields>
+              <hurz>
+                <ModbusFieldHoldingRegister>
+                  <address>0</address>
+                  <numberOfElements>2</numberOfElements>
+                  <dataType>IEC61131_REAL</dataType>
+                </ModbusFieldHoldingRegister>
+                <value>3.141593</value>
+                <value>3.141593</value>
+              </hurz>
+            </fields>
+          </PlcWriteRequest>
+          <fields>
+            <hurz result="OK"/>
+          </fields>
+        </PlcWriteResponse>
+      </api-response>
+    </steps>
+  </testcase>
+
 </test:driver-testsuite>
diff --git a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
index b9073e4..b7b9441 100644
--- a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
@@ -31,7 +31,7 @@ func TestBacnetIp(t *testing.T) {
 	if err != nil {
 		t.Errorf("Error decoding test input")
 	}
-	rb := utils.ReadBufferNew(request)
+	rb := utils.NewReadBuffer(request)
 	adu, err := model.BVLCParse(rb)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
index e00fd0a..15549cf 100644
--- a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
@@ -19,10 +19,10 @@
 package drivers
 
 import (
-    "encoding/hex"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "testing"
+	"encoding/hex"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"testing"
 )
 
 func TestKnxNetIp(t *testing.T) {
@@ -31,7 +31,7 @@ func TestKnxNetIp(t *testing.T) {
 	if err != nil {
 		t.Errorf("Error decoding test input")
 	}
-	rb := utils.ReadBufferNew(request)
+	rb := utils.NewReadBuffer(request)
 	adu, err := model.KNXNetIPMessageParse(rb)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/cmd/main/drivers/modbus_test.go b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
index b85b7c2..0e13563 100644
--- a/sandbox/plc4go/cmd/main/drivers/modbus_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
@@ -49,7 +49,7 @@ func test(t *testing.T, rawMessage string, response bool) {
 	if err != nil {
 		t.Errorf("Error decoding test input")
 	}
-	rb := utils.ReadBufferNew(request)
+	rb := utils.NewReadBuffer(request)
 	adu, err := model.ModbusTcpADUParse(rb, response)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
@@ -64,7 +64,7 @@ func test(t *testing.T, rawMessage string, response bool) {
 		var deserializedAdu *model.ModbusTcpADU
 		xml.Unmarshal(serialized, &deserializedAdu)
 
-		wb := utils.WriteBufferNew()
+		wb := utils.NewWriteBuffer()
 		val := model.CastIModbusTcpADU(deserializedAdu)
 		val.Serialize(*wb)
 		serializedMessage := hex.EncodeToString(wb.GetBytes())
@@ -88,7 +88,7 @@ func Connection(t *testing.T) {
 		Pdu:                   &pdu,
 	}
 
-	wb := utils.WriteBufferNew()
+	wb := utils.NewWriteBuffer()
 	adu.Serialize(*wb)
 
 	servAddr := "192.168.23.30:502"
@@ -118,7 +118,7 @@ func Connection(t *testing.T) {
 		os.Exit(1)
 	}
 
-	rb := utils.ReadBufferNew(buffer[0:numBytes])
+	rb := utils.NewReadBuffer(buffer[0:numBytes])
 	response, err := model.ModbusTcpADUParse(rb, true)
 	if err != nil {
 		println("Parsing response failed:", err.Error())
@@ -142,6 +142,7 @@ func TestPlc4goDriver(t *testing.T) {
 	connectionResult := <-crc
 	if connectionResult.Err != nil {
 		t.Errorf("error connecting to PLC: %s", connectionResult.Err.Error())
+		t.Fail()
 		return
 	}
 	connection := connectionResult.Connection
@@ -151,6 +152,7 @@ func TestPlc4goDriver(t *testing.T) {
 	pingResult := <-pingResultChannel
 	if pingResult.Err != nil {
 		t.Errorf("couldn't ping device: %s", pingResult.Err.Error())
+		t.Fail()
 		return
 	}
 
@@ -164,6 +166,7 @@ func TestPlc4goDriver(t *testing.T) {
 	readRequest, err := rrb.Build()
 	if err != nil {
 		t.Errorf("error preparing read-request: %s", connectionResult.Err.Error())
+		t.Fail()
 		return
 	}
 
@@ -174,11 +177,38 @@ func TestPlc4goDriver(t *testing.T) {
 	rrr := <-rrc
 	if rrr.Err != nil {
 		t.Errorf("error executing read-request: %s", rrr.Err.Error())
+		t.Fail()
 		return
 	}
 
 	// Do something with the response
-	value := rrr.Response.GetValue("field")
+	value1 := rrr.Response.GetValue("field1")
+	value2 := rrr.Response.GetValue("field2")
+	fmt.Printf("\n\nResult field1: %f\n", value1.GetFloat32())
+	fmt.Printf("\n\nResult field1: %f\n", value2.GetFloat32())
+
+	// Prepare a write-request
+	wrb := connection.WriteRequestBuilder()
+	wrb.AddItem("field1", "holding-register:1:REAL", 1.2345)
+	wrb.AddItem("field2", "holding-register:3:REAL", 2.3456)
+	writeRequest, err := rrb.Build()
+	if err != nil {
+		t.Errorf("error preparing read-request: %s", connectionResult.Err.Error())
+		t.Fail()
+		return
+	}
+
+	// Execute a write-request
+	wrc := writeRequest.Execute()
+
+	// Wait for the response to finish
+	wrr := <-wrc
+	if wrr.Err != nil {
+		t.Errorf("error executing read-request: %s", rrr.Err.Error())
+		t.Fail()
+		return
+	}
 
-	fmt.Printf("\n\nResult: %f\n", value)
+	fmt.Printf("\n\nResult field1: %d\n", wrr.Response.GetResponseCode("field1"))
+	fmt.Printf("\n\nResult field2: %d\n", wrr.Response.GetResponseCode("field2"))
 }
diff --git a/sandbox/plc4go/cmd/main/drivers/s7_test.go b/sandbox/plc4go/cmd/main/drivers/s7_test.go
index 6ce57fb..8856f9e 100644
--- a/sandbox/plc4go/cmd/main/drivers/s7_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/s7_test.go
@@ -19,10 +19,10 @@
 package drivers
 
 import (
-    "encoding/hex"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "testing"
+	"encoding/hex"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"testing"
 )
 
 func TestS7(t *testing.T) {
@@ -31,7 +31,7 @@ func TestS7(t *testing.T) {
 	if err != nil {
 		// Output an error ...
 	}
-	rb := utils.ReadBufferNew(request)
+	rb := utils.NewReadBuffer(request)
 	adu, err := model.TPKTPacketParse(rb)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
index 3778a5d..28f52fd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -19,215 +19,214 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    log "github.com/sirupsen/logrus"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"encoding/xml"
+	"errors"
+	log "github.com/sirupsen/logrus"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
 type APDUAbort struct {
-    Server bool
-    OriginalInvokeId uint8
-    AbortReason uint8
-    APDU
+	Server           bool
+	OriginalInvokeId uint8
+	AbortReason      uint8
+	APDU
 }
 
 // The corresponding interface
 type IAPDUAbort interface {
-    IAPDU
-    Serialize(io utils.WriteBuffer) error
+	IAPDU
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUAbort) ApduType() uint8 {
-    return 0x7
+	return 0x7
 }
 
 func (m APDUAbort) initialize() spi.Message {
-    return m
+	return m
 }
 
 func NewAPDUAbort(server bool, originalInvokeId uint8, abortReason uint8) APDUInitializer {
-    return &APDUAbort{Server: server, OriginalInvokeId: originalInvokeId, AbortReason: abortReason}
+	return &APDUAbort{Server: server, OriginalInvokeId: originalInvokeId, AbortReason: abortReason}
 }
 
 func CastIAPDUAbort(structType interface{}) IAPDUAbort {
-    castFunc := func(typ interface{}) IAPDUAbort {
-        if iAPDUAbort, ok := typ.(IAPDUAbort); ok {
-            return iAPDUAbort
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) IAPDUAbort {
+		if iAPDUAbort, ok := typ.(IAPDUAbort); ok {
+			return iAPDUAbort
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastAPDUAbort(structType interface{}) APDUAbort {
-    castFunc := func(typ interface{}) APDUAbort {
-        if sAPDUAbort, ok := typ.(APDUAbort); ok {
-            return sAPDUAbort
-        }
-        if sAPDUAbort, ok := typ.(*APDUAbort); ok {
-            return *sAPDUAbort
-        }
-        return APDUAbort{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) APDUAbort {
+		if sAPDUAbort, ok := typ.(APDUAbort); ok {
+			return sAPDUAbort
+		}
+		if sAPDUAbort, ok := typ.(*APDUAbort); ok {
+			return *sAPDUAbort
+		}
+		return APDUAbort{}
+	}
+	return castFunc(structType)
 }
 
 func (m APDUAbort) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.APDU.LengthInBits()
+	var lengthInBits uint16 = m.APDU.LengthInBits()
 
-    // Reserved Field (reserved)
-    lengthInBits += 3
+	// Reserved Field (reserved)
+	lengthInBits += 3
 
-    // Simple field (server)
-    lengthInBits += 1
+	// Simple field (server)
+	lengthInBits += 1
 
-    // Simple field (originalInvokeId)
-    lengthInBits += 8
+	// Simple field (originalInvokeId)
+	lengthInBits += 8
 
-    // Simple field (abortReason)
-    lengthInBits += 8
+	// Simple field (abortReason)
+	lengthInBits += 8
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m APDUAbort) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func APDUAbortParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := io.ReadUint8(3)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != uint8(0x00) {
-            log.WithFields(log.Fields{
-                "expected value": uint8(0x00),
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-
-    // Simple Field (server)
-    server, _serverErr := io.ReadBit()
-    if _serverErr != nil {
-        return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
-    }
-
-    // Simple Field (originalInvokeId)
-    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-    if _originalInvokeIdErr != nil {
-        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-    }
-
-    // Simple Field (abortReason)
-    abortReason, _abortReasonErr := io.ReadUint8(8)
-    if _abortReasonErr != nil {
-        return nil, errors.New("Error parsing 'abortReason' field " + _abortReasonErr.Error())
-    }
-
-    // Create the instance
-    return NewAPDUAbort(server, originalInvokeId, abortReason), nil
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := io.ReadUint8(3)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+		}
+		if reserved != uint8(0x00) {
+			log.WithFields(log.Fields{
+				"expected value": uint8(0x00),
+				"got value":      reserved,
+			}).Info("Got unexpected response.")
+		}
+	}
+
+	// Simple Field (server)
+	server, _serverErr := io.ReadBit()
+	if _serverErr != nil {
+		return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
+	}
+
+	// Simple Field (originalInvokeId)
+	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+	if _originalInvokeIdErr != nil {
+		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+	}
+
+	// Simple Field (abortReason)
+	abortReason, _abortReasonErr := io.ReadUint8(8)
+	if _abortReasonErr != nil {
+		return nil, errors.New("Error parsing 'abortReason' field " + _abortReasonErr.Error())
+	}
+
+	// Create the instance
+	return NewAPDUAbort(server, originalInvokeId, abortReason), nil
 }
 
 func (m APDUAbort) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Reserved Field (reserved)
-    {
-        _err := io.WriteUint8(3, uint8(0x00))
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-
-    // Simple Field (server)
-    server := bool(m.Server)
-    _serverErr := io.WriteBit((bool) (server))
-    if _serverErr != nil {
-        return errors.New("Error serializing 'server' field " + _serverErr.Error())
-    }
-
-    // Simple Field (originalInvokeId)
-    originalInvokeId := uint8(m.OriginalInvokeId)
-    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
-    if _originalInvokeIdErr != nil {
-        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-    }
-
-    // Simple Field (abortReason)
-    abortReason := uint8(m.AbortReason)
-    _abortReasonErr := io.WriteUint8(8, (abortReason))
-    if _abortReasonErr != nil {
-        return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
-    }
-
-        return nil
-    }
-    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	ser := func() error {
+
+		// Reserved Field (reserved)
+		{
+			_err := io.WriteUint8(3, uint8(0x00))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
+
+		// Simple Field (server)
+		server := bool(m.Server)
+		_serverErr := io.WriteBit((server))
+		if _serverErr != nil {
+			return errors.New("Error serializing 'server' field " + _serverErr.Error())
+		}
+
+		// Simple Field (originalInvokeId)
+		originalInvokeId := uint8(m.OriginalInvokeId)
+		_originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+		if _originalInvokeIdErr != nil {
+			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+		}
+
+		// Simple Field (abortReason)
+		abortReason := uint8(m.AbortReason)
+		_abortReasonErr := io.WriteUint8(8, (abortReason))
+		if _abortReasonErr != nil {
+			return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
+		}
+
+		return nil
+	}
+	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
 
 func (m *APDUAbort) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "server":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Server = data
-            case "originalInvokeId":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.OriginalInvokeId = data
-            case "abortReason":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.AbortReason = data
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "server":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Server = data
+			case "originalInvokeId":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.OriginalInvokeId = data
+			case "abortReason":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.AbortReason = data
+			}
+		}
+	}
 }
 
 func (m APDUAbort) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.AbortReason, xml.StartElement{Name: xml.Name{Local: "abortReason"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.AbortReason, xml.StartElement{Name: xml.Name{Local: "abortReason"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
index 9c91eb0..5a002f4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -19,400 +19,399 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    log "github.com/sirupsen/logrus"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "reflect"
+	"encoding/xml"
+	"errors"
+	log "github.com/sirupsen/logrus"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
 type APDUComplexAck struct {
-    SegmentedMessage bool
-    MoreFollows bool
-    OriginalInvokeId uint8
-    SequenceNumber *uint8
-    ProposedWindowSize *uint8
-    ServiceAck IBACnetServiceAck
-    APDU
+	SegmentedMessage   bool
+	MoreFollows        bool
+	OriginalInvokeId   uint8
+	SequenceNumber     *uint8
+	ProposedWindowSize *uint8
+	ServiceAck         IBACnetServiceAck
+	APDU
 }
 
 // The corresponding interface
 type IAPDUComplexAck interface {
-    IAPDU
-    Serialize(io utils.WriteBuffer) error
+	IAPDU
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUComplexAck) ApduType() uint8 {
-    return 0x3
+	return 0x3
 }
 
 func (m APDUComplexAck) initialize() spi.Message {
-    return m
+	return m
 }
 
 func NewAPDUComplexAck(segmentedMessage bool, moreFollows bool, originalInvokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceAck IBACnetServiceAck) APDUInitializer {
-    return &APDUComplexAck{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceAck: serviceAck}
+	return &APDUComplexAck{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceAck: serviceAck}
 }
 
 func CastIAPDUComplexAck(structType interface{}) IAPDUComplexAck {
-    castFunc := func(typ interface{}) IAPDUComplexAck {
-        if iAPDUComplexAck, ok := typ.(IAPDUComplexAck); ok {
-            return iAPDUComplexAck
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) IAPDUComplexAck {
+		if iAPDUComplexAck, ok := typ.(IAPDUComplexAck); ok {
+			return iAPDUComplexAck
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastAPDUComplexAck(structType interface{}) APDUComplexAck {
-    castFunc := func(typ interface{}) APDUComplexAck {
-        if sAPDUComplexAck, ok := typ.(APDUComplexAck); ok {
-            return sAPDUComplexAck
-        }
-        if sAPDUComplexAck, ok := typ.(*APDUComplexAck); ok {
-            return *sAPDUComplexAck
-        }
-        return APDUComplexAck{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) APDUComplexAck {
+		if sAPDUComplexAck, ok := typ.(APDUComplexAck); ok {
+			return sAPDUComplexAck
+		}
+		if sAPDUComplexAck, ok := typ.(*APDUComplexAck); ok {
+			return *sAPDUComplexAck
+		}
+		return APDUComplexAck{}
+	}
+	return castFunc(structType)
 }
 
 func (m APDUComplexAck) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.APDU.LengthInBits()
+	var lengthInBits uint16 = m.APDU.LengthInBits()
 
-    // Simple field (segmentedMessage)
-    lengthInBits += 1
+	// Simple field (segmentedMessage)
+	lengthInBits += 1
 
-    // Simple field (moreFollows)
-    lengthInBits += 1
+	// Simple field (moreFollows)
+	lengthInBits += 1
 
-    // Reserved Field (reserved)
-    lengthInBits += 2
+	// Reserved Field (reserved)
+	lengthInBits += 2
 
-    // Simple field (originalInvokeId)
-    lengthInBits += 8
+	// Simple field (originalInvokeId)
+	lengthInBits += 8
 
-    // Optional Field (sequenceNumber)
-    if m.SequenceNumber != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (sequenceNumber)
+	if m.SequenceNumber != nil {
+		lengthInBits += 8
+	}
 
-    // Optional Field (proposedWindowSize)
-    if m.ProposedWindowSize != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (proposedWindowSize)
+	if m.ProposedWindowSize != nil {
+		lengthInBits += 8
+	}
 
-    // Simple field (serviceAck)
-    lengthInBits += m.ServiceAck.LengthInBits()
+	// Simple field (serviceAck)
+	lengthInBits += m.ServiceAck.LengthInBits()
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m APDUComplexAck) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func APDUComplexAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
-    // Simple Field (segmentedMessage)
-    segmentedMessage, _segmentedMessageErr := io.ReadBit()
-    if _segmentedMessageErr != nil {
-        return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-    }
-
-    // Simple Field (moreFollows)
-    moreFollows, _moreFollowsErr := io.ReadBit()
-    if _moreFollowsErr != nil {
-        return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
-    }
-
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := io.ReadUint8(2)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != uint8(0) {
-            log.WithFields(log.Fields{
-                "expected value": uint8(0),
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-
-    // Simple Field (originalInvokeId)
-    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-    if _originalInvokeIdErr != nil {
-        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-    }
-
-    // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
-    var sequenceNumber *uint8 = nil
-    if segmentedMessage {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
-        }
-
-        sequenceNumber = &_val
-    }
-
-    // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
-    var proposedWindowSize *uint8 = nil
-    if segmentedMessage {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
-        }
-
-        proposedWindowSize = &_val
-    }
-
-    // Simple Field (serviceAck)
-    _serviceAckMessage, _err := BACnetServiceAckParse(io)
-    if _err != nil {
-        return nil, errors.New("Error parsing simple field 'serviceAck'. " + _err.Error())
-    }
-    var serviceAck IBACnetServiceAck
-    serviceAck, _serviceAckOk := _serviceAckMessage.(IBACnetServiceAck)
-    if !_serviceAckOk {
-        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceAckMessage).Name() + " to IBACnetServiceAck")
-    }
-
-    // Create the instance
-    return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
+	// Simple Field (segmentedMessage)
+	segmentedMessage, _segmentedMessageErr := io.ReadBit()
+	if _segmentedMessageErr != nil {
+		return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+	}
+
+	// Simple Field (moreFollows)
+	moreFollows, _moreFollowsErr := io.ReadBit()
+	if _moreFollowsErr != nil {
+		return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := io.ReadUint8(2)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+		}
+		if reserved != uint8(0) {
+			log.WithFields(log.Fields{
+				"expected value": uint8(0),
+				"got value":      reserved,
+			}).Info("Got unexpected response.")
+		}
+	}
+
+	// Simple Field (originalInvokeId)
+	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+	if _originalInvokeIdErr != nil {
+		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+	}
+
+	// Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
+	var sequenceNumber *uint8 = nil
+	if segmentedMessage {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
+		}
+
+		sequenceNumber = &_val
+	}
+
+	// Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
+	var proposedWindowSize *uint8 = nil
+	if segmentedMessage {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
+		}
+
+		proposedWindowSize = &_val
+	}
+
+	// Simple Field (serviceAck)
+	_serviceAckMessage, _err := BACnetServiceAckParse(io)
+	if _err != nil {
+		return nil, errors.New("Error parsing simple field 'serviceAck'. " + _err.Error())
+	}
+	var serviceAck IBACnetServiceAck
+	serviceAck, _serviceAckOk := _serviceAckMessage.(IBACnetServiceAck)
+	if !_serviceAckOk {
+		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceAckMessage).Name() + " to IBACnetServiceAck")
+	}
+
+	// Create the instance
+	return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
 }
 
 func (m APDUComplexAck) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Simple Field (segmentedMessage)
-    segmentedMessage := bool(m.SegmentedMessage)
-    _segmentedMessageErr := io.WriteBit((bool) (segmentedMessage))
-    if _segmentedMessageErr != nil {
-        return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-    }
-
-    // Simple Field (moreFollows)
-    moreFollows := bool(m.MoreFollows)
-    _moreFollowsErr := io.WriteBit((bool) (moreFollows))
-    if _moreFollowsErr != nil {
-        return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
-    }
-
-    // Reserved Field (reserved)
-    {
-        _err := io.WriteUint8(2, uint8(0))
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-
-    // Simple Field (originalInvokeId)
-    originalInvokeId := uint8(m.OriginalInvokeId)
-    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
-    if _originalInvokeIdErr != nil {
-        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-    }
-
-    // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
-    var sequenceNumber *uint8 = nil
-    if m.SequenceNumber != nil {
-        sequenceNumber = m.SequenceNumber
-        _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
-        if _sequenceNumberErr != nil {
-            return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-        }
-    }
-
-    // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
-    var proposedWindowSize *uint8 = nil
-    if m.ProposedWindowSize != nil {
-        proposedWindowSize = m.ProposedWindowSize
-        _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
-        if _proposedWindowSizeErr != nil {
-            return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-        }
-    }
-
-    // Simple Field (serviceAck)
-    serviceAck := CastIBACnetServiceAck(m.ServiceAck)
-    _serviceAckErr := serviceAck.Serialize(io)
-    if _serviceAckErr != nil {
-        return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
-    }
-
-        return nil
-    }
-    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	ser := func() error {
+
+		// Simple Field (segmentedMessage)
+		segmentedMessage := bool(m.SegmentedMessage)
+		_segmentedMessageErr := io.WriteBit((segmentedMessage))
+		if _segmentedMessageErr != nil {
+			return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+		}
+
+		// Simple Field (moreFollows)
+		moreFollows := bool(m.MoreFollows)
+		_moreFollowsErr := io.WriteBit((moreFollows))
+		if _moreFollowsErr != nil {
+			return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+		}
+
+		// Reserved Field (reserved)
+		{
+			_err := io.WriteUint8(2, uint8(0))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
+
+		// Simple Field (originalInvokeId)
+		originalInvokeId := uint8(m.OriginalInvokeId)
+		_originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+		if _originalInvokeIdErr != nil {
+			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+		}
+
+		// Optional Field (sequenceNumber) (Can be skipped, if the value is null)
+		var sequenceNumber *uint8 = nil
+		if m.SequenceNumber != nil {
+			sequenceNumber = m.SequenceNumber
+			_sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
+			if _sequenceNumberErr != nil {
+				return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+			}
+		}
+
+		// Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
+		var proposedWindowSize *uint8 = nil
+		if m.ProposedWindowSize != nil {
+			proposedWindowSize = m.ProposedWindowSize
+			_proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
+			if _proposedWindowSizeErr != nil {
+				return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+			}
+		}
+
+		// Simple Field (serviceAck)
+		serviceAck := CastIBACnetServiceAck(m.ServiceAck)
+		_serviceAckErr := serviceAck.Serialize(io)
+		if _serviceAckErr != nil {
+			return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
+		}
+
+		return nil
+	}
+	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
 
 func (m *APDUComplexAck) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "segmentedMessage":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SegmentedMessage = data
-            case "moreFollows":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MoreFollows = data
-            case "originalInvokeId":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.OriginalInvokeId = data
-            case "sequenceNumber":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SequenceNumber = data
-            case "proposedWindowSize":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ProposedWindowSize = data
-            case "serviceAck":
-                switch tok.Attr[0].Value {
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetAlarmSummary":
-                        var dt *BACnetServiceAckGetAlarmSummary
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEnrollmentSummary":
-                        var dt *BACnetServiceAckGetEnrollmentSummary
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEventInformation":
-                        var dt *BACnetServiceAckGetEventInformation
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicReadFile":
-                        var dt *BACnetServiceAckAtomicReadFile
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicWriteFile":
-                        var dt *BACnetServiceAckAtomicWriteFile
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckCreateObject":
-                        var dt *BACnetServiceAckCreateObject
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadProperty":
-                        var dt *BACnetServiceAckReadProperty
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadPropertyMultiple":
-                        var dt *BACnetServiceAckReadPropertyMultiple
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadRange":
-                        var dt *BACnetServiceAckReadRange
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckConfirmedPrivateTransfer":
-                        var dt *BACnetServiceAckConfirmedPrivateTransfer
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTOpen":
-                        var dt *BACnetServiceAckVTOpen
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTData":
-                        var dt *BACnetServiceAckVTData
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedAuthenticate":
-                        var dt *BACnetServiceAckRemovedAuthenticate
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedReadPropertyConditional":
-                        var dt *BACnetServiceAckRemovedReadPropertyConditional
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceAck = dt
-                    }
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "segmentedMessage":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SegmentedMessage = data
+			case "moreFollows":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MoreFollows = data
+			case "originalInvokeId":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.OriginalInvokeId = data
+			case "sequenceNumber":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SequenceNumber = data
+			case "proposedWindowSize":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ProposedWindowSize = data
+			case "serviceAck":
+				switch tok.Attr[0].Value {
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetAlarmSummary":
+					var dt *BACnetServiceAckGetAlarmSummary
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEnrollmentSummary":
+					var dt *BACnetServiceAckGetEnrollmentSummary
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckGetEventInformation":
+					var dt *BACnetServiceAckGetEventInformation
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicReadFile":
+					var dt *BACnetServiceAckAtomicReadFile
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckAtomicWriteFile":
+					var dt *BACnetServiceAckAtomicWriteFile
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckCreateObject":
+					var dt *BACnetServiceAckCreateObject
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadProperty":
+					var dt *BACnetServiceAckReadProperty
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadPropertyMultiple":
+					var dt *BACnetServiceAckReadPropertyMultiple
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckReadRange":
+					var dt *BACnetServiceAckReadRange
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckConfirmedPrivateTransfer":
+					var dt *BACnetServiceAckConfirmedPrivateTransfer
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTOpen":
+					var dt *BACnetServiceAckVTOpen
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckVTData":
+					var dt *BACnetServiceAckVTData
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedAuthenticate":
+					var dt *BACnetServiceAckRemovedAuthenticate
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetServiceAckRemovedReadPropertyConditional":
+					var dt *BACnetServiceAckRemovedReadPropertyConditional
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceAck = dt
+				}
+			}
+		}
+	}
 }
 
 func (m APDUComplexAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ServiceAck, xml.StartElement{Name: xml.Name{Local: "serviceAck"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ServiceAck, xml.StartElement{Name: xml.Name{Local: "serviceAck"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
index 2de7871..ae23051 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -19,580 +19,579 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    log "github.com/sirupsen/logrus"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "reflect"
+	"encoding/xml"
+	"errors"
+	log "github.com/sirupsen/logrus"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
 type APDUConfirmedRequest struct {
-    SegmentedMessage bool
-    MoreFollows bool
-    SegmentedResponseAccepted bool
-    MaxSegmentsAccepted uint8
-    MaxApduLengthAccepted uint8
-    InvokeId uint8
-    SequenceNumber *uint8
-    ProposedWindowSize *uint8
-    ServiceRequest IBACnetConfirmedServiceRequest
-    APDU
+	SegmentedMessage          bool
+	MoreFollows               bool
+	SegmentedResponseAccepted bool
+	MaxSegmentsAccepted       uint8
+	MaxApduLengthAccepted     uint8
+	InvokeId                  uint8
+	SequenceNumber            *uint8
+	ProposedWindowSize        *uint8
+	ServiceRequest            IBACnetConfirmedServiceRequest
+	APDU
 }
 
 // The corresponding interface
 type IAPDUConfirmedRequest interface {
-    IAPDU
-    Serialize(io utils.WriteBuffer) error
+	IAPDU
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUConfirmedRequest) ApduType() uint8 {
-    return 0x0
+	return 0x0
 }
 
 func (m APDUConfirmedRequest) initialize() spi.Message {
-    return m
+	return m
 }
 
 func NewAPDUConfirmedRequest(segmentedMessage bool, moreFollows bool, segmentedResponseAccepted bool, maxSegmentsAccepted uint8, maxApduLengthAccepted uint8, invokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceRequest IBACnetConfirmedServiceRequest) APDUInitializer {
-    return &APDUConfirmedRequest{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, SegmentedResponseAccepted: segmentedResponseAccepted, MaxSegmentsAccepted: maxSegmentsAccepted, MaxApduLengthAccepted: maxApduLengthAccepted, InvokeId: invokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceRequest: serviceRequest}
+	return &APDUConfirmedRequest{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, SegmentedResponseAccepted: segmentedResponseAccepted, MaxSegmentsAccepted: maxSegmentsAccepted, MaxApduLengthAccepted: maxApduLengthAccepted, InvokeId: invokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceRequest: serviceRequest}
 }
 
 func CastIAPDUConfirmedRequest(structType interface{}) IAPDUConfirmedRequest {
-    castFunc := func(typ interface{}) IAPDUConfirmedRequest {
-        if iAPDUConfirmedRequest, ok := typ.(IAPDUConfirmedRequest); ok {
-            return iAPDUConfirmedRequest
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) IAPDUConfirmedRequest {
+		if iAPDUConfirmedRequest, ok := typ.(IAPDUConfirmedRequest); ok {
+			return iAPDUConfirmedRequest
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastAPDUConfirmedRequest(structType interface{}) APDUConfirmedRequest {
-    castFunc := func(typ interface{}) APDUConfirmedRequest {
-        if sAPDUConfirmedRequest, ok := typ.(APDUConfirmedRequest); ok {
-            return sAPDUConfirmedRequest
-        }
-        if sAPDUConfirmedRequest, ok := typ.(*APDUConfirmedRequest); ok {
-            return *sAPDUConfirmedRequest
-        }
-        return APDUConfirmedRequest{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) APDUConfirmedRequest {
+		if sAPDUConfirmedRequest, ok := typ.(APDUConfirmedRequest); ok {
+			return sAPDUConfirmedRequest
+		}
+		if sAPDUConfirmedRequest, ok := typ.(*APDUConfirmedRequest); ok {
+			return *sAPDUConfirmedRequest
+		}
+		return APDUConfirmedRequest{}
+	}
+	return castFunc(structType)
 }
 
 func (m APDUConfirmedRequest) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.APDU.LengthInBits()
+	var lengthInBits uint16 = m.APDU.LengthInBits()
 
-    // Simple field (segmentedMessage)
-    lengthInBits += 1
+	// Simple field (segmentedMessage)
+	lengthInBits += 1
 
-    // Simple field (moreFollows)
-    lengthInBits += 1
+	// Simple field (moreFollows)
+	lengthInBits += 1
 
-    // Simple field (segmentedResponseAccepted)
-    lengthInBits += 1
+	// Simple field (segmentedResponseAccepted)
+	lengthInBits += 1
 
-    // Reserved Field (reserved)
-    lengthInBits += 2
+	// Reserved Field (reserved)
+	lengthInBits += 2
 
-    // Simple field (maxSegmentsAccepted)
-    lengthInBits += 3
+	// Simple field (maxSegmentsAccepted)
+	lengthInBits += 3
 
-    // Simple field (maxApduLengthAccepted)
-    lengthInBits += 4
+	// Simple field (maxApduLengthAccepted)
+	lengthInBits += 4
 
-    // Simple field (invokeId)
-    lengthInBits += 8
+	// Simple field (invokeId)
+	lengthInBits += 8
 
-    // Optional Field (sequenceNumber)
-    if m.SequenceNumber != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (sequenceNumber)
+	if m.SequenceNumber != nil {
+		lengthInBits += 8
+	}
 
-    // Optional Field (proposedWindowSize)
-    if m.ProposedWindowSize != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (proposedWindowSize)
+	if m.ProposedWindowSize != nil {
+		lengthInBits += 8
+	}
 
-    // Simple field (serviceRequest)
-    lengthInBits += m.ServiceRequest.LengthInBits()
+	// Simple field (serviceRequest)
+	lengthInBits += m.ServiceRequest.LengthInBits()
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m APDUConfirmedRequest) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func APDUConfirmedRequestParse(io *utils.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
 
-    // Simple Field (segmentedMessage)
-    segmentedMessage, _segmentedMessageErr := io.ReadBit()
-    if _segmentedMessageErr != nil {
-        return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-    }
-
-    // Simple Field (moreFollows)
-    moreFollows, _moreFollowsErr := io.ReadBit()
-    if _moreFollowsErr != nil {
-        return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
-    }
-
-    // Simple Field (segmentedResponseAccepted)
-    segmentedResponseAccepted, _segmentedResponseAcceptedErr := io.ReadBit()
-    if _segmentedResponseAcceptedErr != nil {
-        return nil, errors.New("Error parsing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
-    }
-
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := io.ReadUint8(2)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != uint8(0) {
-            log.WithFields(log.Fields{
-                "expected value": uint8(0),
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-
-    // Simple Field (maxSegmentsAccepted)
-    maxSegmentsAccepted, _maxSegmentsAcceptedErr := io.ReadUint8(3)
-    if _maxSegmentsAcceptedErr != nil {
-        return nil, errors.New("Error parsing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
-    }
-
-    // Simple Field (maxApduLengthAccepted)
-    maxApduLengthAccepted, _maxApduLengthAcceptedErr := io.ReadUint8(4)
-    if _maxApduLengthAcceptedErr != nil {
-        return nil, errors.New("Error parsing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
-    }
-
-    // Simple Field (invokeId)
-    invokeId, _invokeIdErr := io.ReadUint8(8)
-    if _invokeIdErr != nil {
-        return nil, errors.New("Error parsing 'invokeId' field " + _invokeIdErr.Error())
-    }
-
-    // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
-    var sequenceNumber *uint8 = nil
-    if segmentedMessage {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
-        }
-
-        sequenceNumber = &_val
-    }
-
-    // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
-    var proposedWindowSize *uint8 = nil
-    if segmentedMessage {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
-        }
-
-        proposedWindowSize = &_val
-    }
-
-    // Simple Field (serviceRequest)
-    _serviceRequestMessage, _err := BACnetConfirmedServiceRequestParse(io, uint16(apduLength) - uint16(uint16(uint16(uint16(3)) + uint16(uint16(utils.InlineIf(segmentedMessage, uint16(uint16(2)), uint16(uint16(0))))))))
-    if _err != nil {
-        return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
-    }
-    var serviceRequest IBACnetConfirmedServiceRequest
-    serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetConfirmedServiceRequest)
-    if !_serviceRequestOk {
-        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetConfirmedServiceRequest")
-    }
-
-    // Create the instance
-    return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
+	// Simple Field (segmentedMessage)
+	segmentedMessage, _segmentedMessageErr := io.ReadBit()
+	if _segmentedMessageErr != nil {
+		return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+	}
+
+	// Simple Field (moreFollows)
+	moreFollows, _moreFollowsErr := io.ReadBit()
+	if _moreFollowsErr != nil {
+		return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
+	}
+
+	// Simple Field (segmentedResponseAccepted)
+	segmentedResponseAccepted, _segmentedResponseAcceptedErr := io.ReadBit()
+	if _segmentedResponseAcceptedErr != nil {
+		return nil, errors.New("Error parsing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := io.ReadUint8(2)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+		}
+		if reserved != uint8(0) {
+			log.WithFields(log.Fields{
+				"expected value": uint8(0),
+				"got value":      reserved,
+			}).Info("Got unexpected response.")
+		}
+	}
+
+	// Simple Field (maxSegmentsAccepted)
+	maxSegmentsAccepted, _maxSegmentsAcceptedErr := io.ReadUint8(3)
+	if _maxSegmentsAcceptedErr != nil {
+		return nil, errors.New("Error parsing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
+	}
+
+	// Simple Field (maxApduLengthAccepted)
+	maxApduLengthAccepted, _maxApduLengthAcceptedErr := io.ReadUint8(4)
+	if _maxApduLengthAcceptedErr != nil {
+		return nil, errors.New("Error parsing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
+	}
+
+	// Simple Field (invokeId)
+	invokeId, _invokeIdErr := io.ReadUint8(8)
+	if _invokeIdErr != nil {
+		return nil, errors.New("Error parsing 'invokeId' field " + _invokeIdErr.Error())
+	}
+
+	// Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
+	var sequenceNumber *uint8 = nil
+	if segmentedMessage {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
+		}
+
+		sequenceNumber = &_val
+	}
+
+	// Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
+	var proposedWindowSize *uint8 = nil
+	if segmentedMessage {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
+		}
+
+		proposedWindowSize = &_val
+	}
+
+	// Simple Field (serviceRequest)
+	_serviceRequestMessage, _err := BACnetConfirmedServiceRequestParse(io, uint16(apduLength)-uint16(uint16(uint16(uint16(3))+uint16(uint16(utils.InlineIf(segmentedMessage, uint16(uint16(2)), uint16(uint16(0))))))))
+	if _err != nil {
+		return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
+	}
+	var serviceRequest IBACnetConfirmedServiceRequest
+	serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetConfirmedServiceRequest)
+	if !_serviceRequestOk {
+		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetConfirmedServiceRequest")
+	}
+
+	// Create the instance
+	return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
 }
 
 func (m APDUConfirmedRequest) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Simple Field (segmentedMessage)
-    segmentedMessage := bool(m.SegmentedMessage)
-    _segmentedMessageErr := io.WriteBit((bool) (segmentedMessage))
-    if _segmentedMessageErr != nil {
-        return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-    }
-
-    // Simple Field (moreFollows)
-    moreFollows := bool(m.MoreFollows)
-    _moreFollowsErr := io.WriteBit((bool) (moreFollows))
-    if _moreFollowsErr != nil {
-        return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
-    }
-
-    // Simple Field (segmentedResponseAccepted)
-    segmentedResponseAccepted := bool(m.SegmentedResponseAccepted)
-    _segmentedResponseAcceptedErr := io.WriteBit((bool) (segmentedResponseAccepted))
-    if _segmentedResponseAcceptedErr != nil {
-        return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
-    }
-
-    // Reserved Field (reserved)
-    {
-        _err := io.WriteUint8(2, uint8(0))
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-
-    // Simple Field (maxSegmentsAccepted)
-    maxSegmentsAccepted := uint8(m.MaxSegmentsAccepted)
-    _maxSegmentsAcceptedErr := io.WriteUint8(3, (maxSegmentsAccepted))
-    if _maxSegmentsAcceptedErr != nil {
-        return errors.New("Error serializing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
-    }
-
-    // Simple Field (maxApduLengthAccepted)
-    maxApduLengthAccepted := uint8(m.MaxApduLengthAccepted)
-    _maxApduLengthAcceptedErr := io.WriteUint8(4, (maxApduLengthAccepted))
-    if _maxApduLengthAcceptedErr != nil {
-        return errors.New("Error serializing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
-    }
-
-    // Simple Field (invokeId)
-    invokeId := uint8(m.InvokeId)
-    _invokeIdErr := io.WriteUint8(8, (invokeId))
-    if _invokeIdErr != nil {
-        return errors.New("Error serializing 'invokeId' field " + _invokeIdErr.Error())
-    }
-
-    // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
-    var sequenceNumber *uint8 = nil
-    if m.SequenceNumber != nil {
-        sequenceNumber = m.SequenceNumber
-        _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
-        if _sequenceNumberErr != nil {
-            return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-        }
-    }
-
-    // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
-    var proposedWindowSize *uint8 = nil
-    if m.ProposedWindowSize != nil {
-        proposedWindowSize = m.ProposedWindowSize
-        _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
-        if _proposedWindowSizeErr != nil {
-            return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-        }
-    }
-
-    // Simple Field (serviceRequest)
-    serviceRequest := CastIBACnetConfirmedServiceRequest(m.ServiceRequest)
-    _serviceRequestErr := serviceRequest.Serialize(io)
-    if _serviceRequestErr != nil {
-        return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
-    }
-
-        return nil
-    }
-    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	ser := func() error {
+
+		// Simple Field (segmentedMessage)
+		segmentedMessage := bool(m.SegmentedMessage)
+		_segmentedMessageErr := io.WriteBit((segmentedMessage))
+		if _segmentedMessageErr != nil {
+			return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+		}
+
+		// Simple Field (moreFollows)
+		moreFollows := bool(m.MoreFollows)
+		_moreFollowsErr := io.WriteBit((moreFollows))
+		if _moreFollowsErr != nil {
+			return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+		}
+
+		// Simple Field (segmentedResponseAccepted)
+		segmentedResponseAccepted := bool(m.SegmentedResponseAccepted)
+		_segmentedResponseAcceptedErr := io.WriteBit((segmentedResponseAccepted))
+		if _segmentedResponseAcceptedErr != nil {
+			return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+		}
+
+		// Reserved Field (reserved)
+		{
+			_err := io.WriteUint8(2, uint8(0))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
+
+		// Simple Field (maxSegmentsAccepted)
+		maxSegmentsAccepted := uint8(m.MaxSegmentsAccepted)
+		_maxSegmentsAcceptedErr := io.WriteUint8(3, (maxSegmentsAccepted))
+		if _maxSegmentsAcceptedErr != nil {
+			return errors.New("Error serializing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
+		}
+
+		// Simple Field (maxApduLengthAccepted)
+		maxApduLengthAccepted := uint8(m.MaxApduLengthAccepted)
+		_maxApduLengthAcceptedErr := io.WriteUint8(4, (maxApduLengthAccepted))
+		if _maxApduLengthAcceptedErr != nil {
+			return errors.New("Error serializing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
+		}
+
+		// Simple Field (invokeId)
+		invokeId := uint8(m.InvokeId)
+		_invokeIdErr := io.WriteUint8(8, (invokeId))
+		if _invokeIdErr != nil {
+			return errors.New("Error serializing 'invokeId' field " + _invokeIdErr.Error())
+		}
+
+		// Optional Field (sequenceNumber) (Can be skipped, if the value is null)
+		var sequenceNumber *uint8 = nil
+		if m.SequenceNumber != nil {
+			sequenceNumber = m.SequenceNumber
+			_sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
+			if _sequenceNumberErr != nil {
+				return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+			}
+		}
+
+		// Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
+		var proposedWindowSize *uint8 = nil
+		if m.ProposedWindowSize != nil {
+			proposedWindowSize = m.ProposedWindowSize
+			_proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
+			if _proposedWindowSizeErr != nil {
+				return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+			}
+		}
+
+		// Simple Field (serviceRequest)
+		serviceRequest := CastIBACnetConfirmedServiceRequest(m.ServiceRequest)
+		_serviceRequestErr := serviceRequest.Serialize(io)
+		if _serviceRequestErr != nil {
+			return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
+		}
+
+		return nil
+	}
+	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
 
 func (m *APDUConfirmedRequest) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "segmentedMessage":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SegmentedMessage = data
-            case "moreFollows":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MoreFollows = data
-            case "segmentedResponseAccepted":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SegmentedResponseAccepted = data
-            case "maxSegmentsAccepted":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MaxSegmentsAccepted = data
-            case "maxApduLengthAccepted":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MaxApduLengthAccepted = data
-            case "invokeId":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.InvokeId = data
-            case "sequenceNumber":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SequenceNumber = data
-            case "proposedWindowSize":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ProposedWindowSize = data
-            case "serviceRequest":
-                switch tok.Attr[0].Value {
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAcknowledgeAlarm":
-                        var dt *BACnetConfirmedServiceRequestAcknowledgeAlarm
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotification":
-                        var dt *BACnetConfirmedServiceRequestConfirmedCOVNotification
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedEventNotification":
-                        var dt *BACnetConfirmedServiceRequestConfirmedEventNotification
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEnrollmentSummary":
-                        var dt *BACnetConfirmedServiceRequestGetEnrollmentSummary
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV":
-                        var dt *BACnetConfirmedServiceRequestSubscribeCOV
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicReadFile":
-                        var dt *BACnetConfirmedServiceRequestAtomicReadFile
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicWriteFile":
-                        var dt *BACnetConfirmedServiceRequestAtomicWriteFile
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAddListElement":
-                        var dt *BACnetConfirmedServiceRequestAddListElement
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemoveListElement":
-                        var dt *BACnetConfirmedServiceRequestRemoveListElement
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestCreateObject":
-                        var dt *BACnetConfirmedServiceRequestCreateObject
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeleteObject":
-                        var dt *BACnetConfirmedServiceRequestDeleteObject
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadProperty":
-                        var dt *BACnetConfirmedServiceRequestReadProperty
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadPropertyMultiple":
-                        var dt *BACnetConfirmedServiceRequestReadPropertyMultiple
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWriteProperty":
-                        var dt *BACnetConfirmedServiceRequestWriteProperty
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWritePropertyMultiple":
-                        var dt *BACnetConfirmedServiceRequestWritePropertyMultiple
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeviceCommunicationControl":
-                        var dt *BACnetConfirmedServiceRequestDeviceCommunicationControl
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedPrivateTransfer":
-                        var dt *BACnetConfirmedServiceRequestConfirmedPrivateTransfer
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedTextMessage":
-                        var dt *BACnetConfirmedServiceRequestConfirmedTextMessage
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReinitializeDevice":
-                        var dt *BACnetConfirmedServiceRequestReinitializeDevice
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTOpen":
-                        var dt *BACnetConfirmedServiceRequestVTOpen
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTClose":
-                        var dt *BACnetConfirmedServiceRequestVTClose
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTData":
-                        var dt *BACnetConfirmedServiceRequestVTData
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedAuthenticate":
-                        var dt *BACnetConfirmedServiceRequestRemovedAuthenticate
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedRequestKey":
-                        var dt *BACnetConfirmedServiceRequestRemovedRequestKey
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedReadPropertyConditional":
-                        var dt *BACnetConfirmedServiceRequestRemovedReadPropertyConditional
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadRange":
-                        var dt *BACnetConfirmedServiceRequestReadRange
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestLifeSafetyOperation":
-                        var dt *BACnetConfirmedServiceRequestLifeSafetyOperation
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVProperty":
-                        var dt *BACnetConfirmedServiceRequestSubscribeCOVProperty
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEventInformation":
-                        var dt *BACnetConfirmedServiceRequestGetEventInformation
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple":
-                        var dt *BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple":
-                        var dt *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        m.ServiceRequest = dt
-                    }
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "segmentedMessage":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SegmentedMessage = data
+			case "moreFollows":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MoreFollows = data
+			case "segmentedResponseAccepted":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SegmentedResponseAccepted = data
+			case "maxSegmentsAccepted":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MaxSegmentsAccepted = data
+			case "maxApduLengthAccepted":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MaxApduLengthAccepted = data
+			case "invokeId":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.InvokeId = data
+			case "sequenceNumber":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SequenceNumber = data
+			case "proposedWindowSize":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ProposedWindowSize = data
+			case "serviceRequest":
+				switch tok.Attr[0].Value {
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAcknowledgeAlarm":
+					var dt *BACnetConfirmedServiceRequestAcknowledgeAlarm
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotification":
+					var dt *BACnetConfirmedServiceRequestConfirmedCOVNotification
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedEventNotification":
+					var dt *BACnetConfirmedServiceRequestConfirmedEventNotification
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEnrollmentSummary":
+					var dt *BACnetConfirmedServiceRequestGetEnrollmentSummary
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV":
+					var dt *BACnetConfirmedServiceRequestSubscribeCOV
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicReadFile":
+					var dt *BACnetConfirmedServiceRequestAtomicReadFile
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAtomicWriteFile":
+					var dt *BACnetConfirmedServiceRequestAtomicWriteFile
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestAddListElement":
+					var dt *BACnetConfirmedServiceRequestAddListElement
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemoveListElement":
+					var dt *BACnetConfirmedServiceRequestRemoveListElement
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestCreateObject":
+					var dt *BACnetConfirmedServiceRequestCreateObject
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeleteObject":
+					var dt *BACnetConfirmedServiceRequestDeleteObject
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadProperty":
+					var dt *BACnetConfirmedServiceRequestReadProperty
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadPropertyMultiple":
+					var dt *BACnetConfirmedServiceRequestReadPropertyMultiple
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWriteProperty":
+					var dt *BACnetConfirmedServiceRequestWriteProperty
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestWritePropertyMultiple":
+					var dt *BACnetConfirmedServiceRequestWritePropertyMultiple
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestDeviceCommunicationControl":
+					var dt *BACnetConfirmedServiceRequestDeviceCommunicationControl
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedPrivateTransfer":
+					var dt *BACnetConfirmedServiceRequestConfirmedPrivateTransfer
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedTextMessage":
+					var dt *BACnetConfirmedServiceRequestConfirmedTextMessage
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReinitializeDevice":
+					var dt *BACnetConfirmedServiceRequestReinitializeDevice
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTOpen":
+					var dt *BACnetConfirmedServiceRequestVTOpen
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTClose":
+					var dt *BACnetConfirmedServiceRequestVTClose
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestVTData":
+					var dt *BACnetConfirmedServiceRequestVTData
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedAuthenticate":
+					var dt *BACnetConfirmedServiceRequestRemovedAuthenticate
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedRequestKey":
+					var dt *BACnetConfirmedServiceRequestRemovedRequestKey
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestRemovedReadPropertyConditional":
+					var dt *BACnetConfirmedServiceRequestRemovedReadPropertyConditional
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestReadRange":
+					var dt *BACnetConfirmedServiceRequestReadRange
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestLifeSafetyOperation":
+					var dt *BACnetConfirmedServiceRequestLifeSafetyOperation
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVProperty":
+					var dt *BACnetConfirmedServiceRequestSubscribeCOVProperty
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestGetEventInformation":
+					var dt *BACnetConfirmedServiceRequestGetEventInformation
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple":
+					var dt *BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple":
+					var dt *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					m.ServiceRequest = dt
+				}
+			}
+		}
+	}
 }
 
 func (m APDUConfirmedRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SegmentedResponseAccepted, xml.StartElement{Name: xml.Name{Local: "segmentedResponseAccepted"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MaxSegmentsAccepted, xml.StartElement{Name: xml.Name{Local: "maxSegmentsAccepted"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MaxApduLengthAccepted, xml.StartElement{Name: xml.Name{Local: "maxApduLengthAccepted"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.InvokeId, xml.StartElement{Name: xml.Name{Local: "invokeId"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ServiceRequest, xml.StartElement{Name: xml.Name{Local: "serviceRequest"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SegmentedMessage, xml.StartElement{Name: xml.Name{Local: "segmentedMessage"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MoreFollows, xml.StartElement{Name: xml.Name{Local: "moreFollows"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SegmentedResponseAccepted, xml.StartElement{Name: xml.Name{Local: "segmentedResponseAccepted"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MaxSegmentsAccepted, xml.StartElement{Name: xml.Name{Local: "maxSegmentsAccepted"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MaxApduLengthAccepted, xml.StartElement{Name: xml.Name{Local: "maxApduLengthAccepted"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.InvokeId, xml.StartElement{Name: xml.Name{Local: "invokeId"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ServiceRequest, xml.StartElement{Name: xml.Name{Local: "serviceRequest"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
index 64403b2..a00c50a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -19,267 +19,266 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    log "github.com/sirupsen/logrus"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"encoding/xml"
+	"errors"
+	log "github.com/sirupsen/logrus"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
 type APDUSegmentAck struct {
-    NegativeAck bool
-    Server bool
-    OriginalInvokeId uint8
-    SequenceNumber uint8
-    ProposedWindowSize uint8
-    APDU
+	NegativeAck        bool
+	Server             bool
+	OriginalInvokeId   uint8
+	SequenceNumber     uint8
+	ProposedWindowSize uint8
+	APDU
 }
 
 // The corresponding interface
 type IAPDUSegmentAck interface {
-    IAPDU
-    Serialize(io utils.WriteBuffer) error
+	IAPDU
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUSegmentAck) ApduType() uint8 {
-    return 0x4
+	return 0x4
 }
 
 func (m APDUSegmentAck) initialize() spi.Message {
-    return m
+	return m
 }
 
 func NewAPDUSegmentAck(negativeAck bool, server bool, originalInvokeId uint8, sequenceNumber uint8, proposedWindowSize uint8) APDUInitializer {
-    return &APDUSegmentAck{NegativeAck: negativeAck, Server: server, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize}
+	return &APDUSegmentAck{NegativeAck: negativeAck, Server: server, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize}
 }
 
 func CastIAPDUSegmentAck(structType interface{}) IAPDUSegmentAck {
-    castFunc := func(typ interface{}) IAPDUSegmentAck {
-        if iAPDUSegmentAck, ok := typ.(IAPDUSegmentAck); ok {
-            return iAPDUSegmentAck
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) IAPDUSegmentAck {
+		if iAPDUSegmentAck, ok := typ.(IAPDUSegmentAck); ok {
+			return iAPDUSegmentAck
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastAPDUSegmentAck(structType interface{}) APDUSegmentAck {
-    castFunc := func(typ interface{}) APDUSegmentAck {
-        if sAPDUSegmentAck, ok := typ.(APDUSegmentAck); ok {
-            return sAPDUSegmentAck
-        }
-        if sAPDUSegmentAck, ok := typ.(*APDUSegmentAck); ok {
-            return *sAPDUSegmentAck
-        }
-        return APDUSegmentAck{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) APDUSegmentAck {
+		if sAPDUSegmentAck, ok := typ.(APDUSegmentAck); ok {
+			return sAPDUSegmentAck
+		}
+		if sAPDUSegmentAck, ok := typ.(*APDUSegmentAck); ok {
+			return *sAPDUSegmentAck
+		}
+		return APDUSegmentAck{}
+	}
+	return castFunc(structType)
 }
 
 func (m APDUSegmentAck) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.APDU.LengthInBits()
+	var lengthInBits uint16 = m.APDU.LengthInBits()
 
-    // Reserved Field (reserved)
-    lengthInBits += 2
+	// Reserved Field (reserved)
+	lengthInBits += 2
 
-    // Simple field (negativeAck)
-    lengthInBits += 1
+	// Simple field (negativeAck)
+	lengthInBits += 1
 
-    // Simple field (server)
-    lengthInBits += 1
+	// Simple field (server)
+	lengthInBits += 1
 
-    // Simple field (originalInvokeId)
-    lengthInBits += 8
+	// Simple field (originalInvokeId)
+	lengthInBits += 8
 
-    // Simple field (sequenceNumber)
-    lengthInBits += 8
+	// Simple field (sequenceNumber)
+	lengthInBits += 8
 
-    // Simple field (proposedWindowSize)
-    lengthInBits += 8
+	// Simple field (proposedWindowSize)
+	lengthInBits += 8
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m APDUSegmentAck) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func APDUSegmentAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := io.ReadUint8(2)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != uint8(0x00) {
-            log.WithFields(log.Fields{
-                "expected value": uint8(0x00),
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-
-    // Simple Field (negativeAck)
-    negativeAck, _negativeAckErr := io.ReadBit()
-    if _negativeAckErr != nil {
-        return nil, errors.New("Error parsing 'negativeAck' field " + _negativeAckErr.Error())
-    }
-
-    // Simple Field (server)
-    server, _serverErr := io.ReadBit()
-    if _serverErr != nil {
-        return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
-    }
-
-    // Simple Field (originalInvokeId)
-    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-    if _originalInvokeIdErr != nil {
-        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-    }
-
-    // Simple Field (sequenceNumber)
-    sequenceNumber, _sequenceNumberErr := io.ReadUint8(8)
-    if _sequenceNumberErr != nil {
-        return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-    }
-
-    // Simple Field (proposedWindowSize)
-    proposedWindowSize, _proposedWindowSizeErr := io.ReadUint8(8)
-    if _proposedWindowSizeErr != nil {
-        return nil, errors.New("Error parsing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-    }
-
-    // Create the instance
-    return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := io.ReadUint8(2)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+		}
+		if reserved != uint8(0x00) {
+			log.WithFields(log.Fields{
+				"expected value": uint8(0x00),
+				"got value":      reserved,
+			}).Info("Got unexpected response.")
+		}
+	}
+
+	// Simple Field (negativeAck)
+	negativeAck, _negativeAckErr := io.ReadBit()
+	if _negativeAckErr != nil {
+		return nil, errors.New("Error parsing 'negativeAck' field " + _negativeAckErr.Error())
+	}
+
+	// Simple Field (server)
+	server, _serverErr := io.ReadBit()
+	if _serverErr != nil {
+		return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
+	}
+
+	// Simple Field (originalInvokeId)
+	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+	if _originalInvokeIdErr != nil {
+		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+	}
+
+	// Simple Field (sequenceNumber)
+	sequenceNumber, _sequenceNumberErr := io.ReadUint8(8)
+	if _sequenceNumberErr != nil {
+		return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+	}
+
+	// Simple Field (proposedWindowSize)
+	proposedWindowSize, _proposedWindowSizeErr := io.ReadUint8(8)
+	if _proposedWindowSizeErr != nil {
+		return nil, errors.New("Error parsing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+	}
+
+	// Create the instance
+	return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
 }
 
 func (m APDUSegmentAck) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Reserved Field (reserved)
-    {
-        _err := io.WriteUint8(2, uint8(0x00))
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-
-    // Simple Field (negativeAck)
-    negativeAck := bool(m.NegativeAck)
-    _negativeAckErr := io.WriteBit((bool) (negativeAck))
-    if _negativeAckErr != nil {
-        return errors.New("Error serializing 'negativeAck' field " + _negativeAckErr.Error())
-    }
-
-    // Simple Field (server)
-    server := bool(m.Server)
-    _serverErr := io.WriteBit((bool) (server))
-    if _serverErr != nil {
-        return errors.New("Error serializing 'server' field " + _serverErr.Error())
-    }
-
-    // Simple Field (originalInvokeId)
-    originalInvokeId := uint8(m.OriginalInvokeId)
-    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
-    if _originalInvokeIdErr != nil {
-        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-    }
-
-    // Simple Field (sequenceNumber)
-    sequenceNumber := uint8(m.SequenceNumber)
-    _sequenceNumberErr := io.WriteUint8(8, (sequenceNumber))
-    if _sequenceNumberErr != nil {
-        return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-    }
-
-    // Simple Field (proposedWindowSize)
-    proposedWindowSize := uint8(m.ProposedWindowSize)
-    _proposedWindowSizeErr := io.WriteUint8(8, (proposedWindowSize))
-    if _proposedWindowSizeErr != nil {
-        return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-    }
-
-        return nil
-    }
-    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	ser := func() error {
+
+		// Reserved Field (reserved)
+		{
+			_err := io.WriteUint8(2, uint8(0x00))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
+
+		// Simple Field (negativeAck)
+		negativeAck := bool(m.NegativeAck)
+		_negativeAckErr := io.WriteBit((negativeAck))
+		if _negativeAckErr != nil {
+			return errors.New("Error serializing 'negativeAck' field " + _negativeAckErr.Error())
+		}
+
+		// Simple Field (server)
+		server := bool(m.Server)
+		_serverErr := io.WriteBit((server))
+		if _serverErr != nil {
+			return errors.New("Error serializing 'server' field " + _serverErr.Error())
+		}
+
+		// Simple Field (originalInvokeId)
+		originalInvokeId := uint8(m.OriginalInvokeId)
+		_originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+		if _originalInvokeIdErr != nil {
+			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+		}
+
+		// Simple Field (sequenceNumber)
+		sequenceNumber := uint8(m.SequenceNumber)
+		_sequenceNumberErr := io.WriteUint8(8, (sequenceNumber))
+		if _sequenceNumberErr != nil {
+			return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+		}
+
+		// Simple Field (proposedWindowSize)
+		proposedWindowSize := uint8(m.ProposedWindowSize)
+		_proposedWindowSizeErr := io.WriteUint8(8, (proposedWindowSize))
+		if _proposedWindowSizeErr != nil {
+			return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+		}
+
+		return nil
+	}
+	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
 
 func (m *APDUSegmentAck) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "negativeAck":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.NegativeAck = data
-            case "server":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Server = data
-            case "originalInvokeId":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.OriginalInvokeId = data
-            case "sequenceNumber":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SequenceNumber = data
-            case "proposedWindowSize":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ProposedWindowSize = data
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "negativeAck":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.NegativeAck = data
+			case "server":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Server = data
+			case "originalInvokeId":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.OriginalInvokeId = data
+			case "sequenceNumber":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SequenceNumber = data
+			case "proposedWindowSize":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ProposedWindowSize = data
+			}
+		}
+	}
 }
 
 func (m APDUSegmentAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.NegativeAck, xml.StartElement{Name: xml.Name{Local: "negativeAck"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.NegativeAck, xml.StartElement{Name: xml.Name{Local: "negativeAck"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Server, xml.StartElement{Name: xml.Name{Local: "server"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.OriginalInvokeId, xml.StartElement{Name: xml.Name{Local: "originalInvokeId"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ProposedWindowSize, xml.StartElement{Name: xml.Name{Local: "proposedWindowSize"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index e910164..075d177 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -19,13 +19,13 @@
 package model
 
 import (
-    "encoding/base64"
-    "encoding/xml"
-    "errors"
-    "io"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "strconv"
+	"encoding/base64"
+	"encoding/xml"
+	"errors"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -37,366 +37,365 @@ const BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER uint8 = 0x07
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestSubscribeCOV struct {
-    SubscriberProcessIdentifier uint8
-    MonitoredObjectType uint16
-    MonitoredObjectInstanceNumber uint32
-    IssueConfirmedNotifications bool
-    LifetimeLength uint8
-    LifetimeSeconds []int8
-    BACnetConfirmedServiceRequest
+	SubscriberProcessIdentifier   uint8
+	MonitoredObjectType           uint16
+	MonitoredObjectInstanceNumber uint32
+	IssueConfirmedNotifications   bool
+	LifetimeLength                uint8
+	LifetimeSeconds               []int8
+	BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOV interface {
-    IBACnetConfirmedServiceRequest
-    Serialize(io utils.WriteBuffer) error
+	IBACnetConfirmedServiceRequest
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestSubscribeCOV) ServiceChoice() uint8 {
-    return 0x05
+	return 0x05
 }
 
 func (m BACnetConfirmedServiceRequestSubscribeCOV) initialize() spi.Message {
-    return m
+	return m
 }
 
 func NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier uint8, monitoredObjectType uint16, monitoredObjectInstanceNumber uint32, issueConfirmedNotifications bool, lifetimeLength uint8, lifetimeSeconds []int8) BACnetConfirmedServiceRequestInitializer {
-    return &BACnetConfirmedServiceRequestSubscribeCOV{SubscriberProcessIdentifier: subscriberProcessIdentifier, MonitoredObjectType: monitoredObjectType, MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber, IssueConfirmedNotifications: issueConfirmedNotifications, LifetimeLength: lifetimeLength, LifetimeSeconds: lifetimeSeconds}
+	return &BACnetConfirmedServiceRequestSubscribeCOV{SubscriberProcessIdentifier: subscriberProcessIdentifier, MonitoredObjectType: monitoredObjectType, MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber, IssueConfirmedNotifications: issueConfirmedNotifications, LifetimeLength: lifetimeLength, LifetimeSeconds: lifetimeSeconds}
 }
 
 func CastIBACnetConfirmedServiceRequestSubscribeCOV(structType interface{}) IBACnetConfirmedServiceRequestSubscribeCOV {
-    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestSubscribeCOV {
-        if iBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(IBACnetConfirmedServiceRequestSubscribeCOV); ok {
-            return iBACnetConfirmedServiceRequestSubscribeCOV
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestSubscribeCOV {
+		if iBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(IBACnetConfirmedServiceRequestSubscribeCOV); ok {
+			return iBACnetConfirmedServiceRequestSubscribeCOV
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestSubscribeCOV(structType interface{}) BACnetConfirmedServiceRequestSubscribeCOV {
-    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestSubscribeCOV {
-        if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(BACnetConfirmedServiceRequestSubscribeCOV); ok {
-            return sBACnetConfirmedServiceRequestSubscribeCOV
-        }
-        if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(*BACnetConfirmedServiceRequestSubscribeCOV); ok {
-            return *sBACnetConfirmedServiceRequestSubscribeCOV
-        }
-        return BACnetConfirmedServiceRequestSubscribeCOV{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestSubscribeCOV {
+		if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(BACnetConfirmedServiceRequestSubscribeCOV); ok {
+			return sBACnetConfirmedServiceRequestSubscribeCOV
+		}
+		if sBACnetConfirmedServiceRequestSubscribeCOV, ok := typ.(*BACnetConfirmedServiceRequestSubscribeCOV); ok {
+			return *sBACnetConfirmedServiceRequestSubscribeCOV
+		}
+		return BACnetConfirmedServiceRequestSubscribeCOV{}
+	}
+	return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestSubscribeCOV) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
+	var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-    // Const Field (subscriberProcessIdentifierHeader)
-    lengthInBits += 8
+	// Const Field (subscriberProcessIdentifierHeader)
+	lengthInBits += 8
 
-    // Simple field (subscriberProcessIdentifier)
-    lengthInBits += 8
+	// Simple field (subscriberProcessIdentifier)
+	lengthInBits += 8
 
-    // Const Field (monitoredObjectIdentifierHeader)
-    lengthInBits += 8
+	// Const Field (monitoredObjectIdentifierHeader)
+	lengthInBits += 8
 
-    // Simple field (monitoredObjectType)
-    lengthInBits += 10
+	// Simple field (monitoredObjectType)
+	lengthInBits += 10
 
-    // Simple field (monitoredObjectInstanceNumber)
-    lengthInBits += 22
+	// Simple field (monitoredObjectInstanceNumber)
+	lengthInBits += 22
 
-    // Const Field (issueConfirmedNotificationsHeader)
-    lengthInBits += 8
+	// Const Field (issueConfirmedNotificationsHeader)
+	lengthInBits += 8
 
-    // Const Field (issueConfirmedNotificationsSkipBits)
-    lengthInBits += 7
+	// Const Field (issueConfirmedNotificationsSkipBits)
+	lengthInBits += 7
 
-    // Simple field (issueConfirmedNotifications)
-    lengthInBits += 1
+	// Simple field (issueConfirmedNotifications)
+	lengthInBits += 1
 
-    // Const Field (lifetimeHeader)
-    lengthInBits += 5
+	// Const Field (lifetimeHeader)
+	lengthInBits += 5
 
-    // Simple field (lifetimeLength)
-    lengthInBits += 3
+	// Simple field (lifetimeLength)
+	lengthInBits += 3
 
-    // Array field
-    if len(m.LifetimeSeconds) > 0 {
-        lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
-    }
+	// Array field
+	if len(m.LifetimeSeconds) > 0 {
+		lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
+	}
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestSubscribeCOV) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestSubscribeCOVParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-    // Const Field (subscriberProcessIdentifierHeader)
-    subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
-    if _subscriberProcessIdentifierHeaderErr != nil {
-        return nil, errors.New("Error parsing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
-    }
-    if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(subscriberProcessIdentifierHeader)))
-    }
-
-    // Simple Field (subscriberProcessIdentifier)
-    subscriberProcessIdentifier, _subscriberProcessIdentifierErr := io.ReadUint8(8)
-    if _subscriberProcessIdentifierErr != nil {
-        return nil, errors.New("Error parsing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
-    }
-
-    // Const Field (monitoredObjectIdentifierHeader)
-    monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := io.ReadUint8(8)
-    if _monitoredObjectIdentifierHeaderErr != nil {
-        return nil, errors.New("Error parsing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
-    }
-    if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(monitoredObjectIdentifierHeader)))
-    }
-
-    // Simple Field (monitoredObjectType)
-    monitoredObjectType, _monitoredObjectTypeErr := io.ReadUint16(10)
-    if _monitoredObjectTypeErr != nil {
-        return nil, errors.New("Error parsing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
-    }
-
-    // Simple Field (monitoredObjectInstanceNumber)
-    monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := io.ReadUint32(22)
-    if _monitoredObjectInstanceNumberErr != nil {
-        return nil, errors.New("Error parsing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
-    }
-
-    // Const Field (issueConfirmedNotificationsHeader)
-    issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := io.ReadUint8(8)
-    if _issueConfirmedNotificationsHeaderErr != nil {
-        return nil, errors.New("Error parsing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
-    }
-    if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsHeader)))
-    }
-
-    // Const Field (issueConfirmedNotificationsSkipBits)
-    issueConfirmedNotificationsSkipBits, _issueConfirmedNotificationsSkipBitsErr := io.ReadUint8(7)
-    if _issueConfirmedNotificationsSkipBitsErr != nil {
-        return nil, errors.New("Error parsing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
-    }
-    if issueConfirmedNotificationsSkipBits != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsSkipBits)))
-    }
-
-    // Simple Field (issueConfirmedNotifications)
-    issueConfirmedNotifications, _issueConfirmedNotificationsErr := io.ReadBit()
-    if _issueConfirmedNotificationsErr != nil {
-        return nil, errors.New("Error parsing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
-    }
-
-    // Const Field (lifetimeHeader)
-    lifetimeHeader, _lifetimeHeaderErr := io.ReadUint8(5)
-    if _lifetimeHeaderErr != nil {
-        return nil, errors.New("Error parsing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
-    }
-    if lifetimeHeader != BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER)) + " but got " + strconv.Itoa(int(lifetimeHeader)))
-    }
-
-    // Simple Field (lifetimeLength)
-    lifetimeLength, _lifetimeLengthErr := io.ReadUint8(3)
-    if _lifetimeLengthErr != nil {
-        return nil, errors.New("Error parsing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
-    }
-
-    // Array field (lifetimeSeconds)
-    // Count array
-    lifetimeSeconds := make([]int8, lifetimeLength)
-    for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'lifetimeSeconds' field " + _err.Error())
-        }
-        lifetimeSeconds[curItem] = _item
-    }
-
-    // Create the instance
-    return NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotifications, lifetimeLength, lifetimeSeconds), nil
+	// Const Field (subscriberProcessIdentifierHeader)
+	subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
+	if _subscriberProcessIdentifierHeaderErr != nil {
+		return nil, errors.New("Error parsing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+	}
+	if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER {
+		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(subscriberProcessIdentifierHeader)))
+	}
+
+	// Simple Field (subscriberProcessIdentifier)
+	subscriberProcessIdentifier, _subscriberProcessIdentifierErr := io.ReadUint8(8)
+	if _subscriberProcessIdentifierErr != nil {
+		return nil, errors.New("Error parsing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+	}
+
+	// Const Field (monitoredObjectIdentifierHeader)
+	monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := io.ReadUint8(8)
+	if _monitoredObjectIdentifierHeaderErr != nil {
+		return nil, errors.New("Error parsing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+	}
+	if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER {
+		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(monitoredObjectIdentifierHeader)))
+	}
+
+	// Simple Field (monitoredObjectType)
+	monitoredObjectType, _monitoredObjectTypeErr := io.ReadUint16(10)
+	if _monitoredObjectTypeErr != nil {
+		return nil, errors.New("Error parsing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
+	}
+
+	// Simple Field (monitoredObjectInstanceNumber)
+	monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := io.ReadUint32(22)
+	if _monitoredObjectInstanceNumberErr != nil {
+		return nil, errors.New("Error parsing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+	}
+
+	// Const Field (issueConfirmedNotificationsHeader)
+	issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := io.ReadUint8(8)
+	if _issueConfirmedNotificationsHeaderErr != nil {
+		return nil, errors.New("Error parsing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+	}
+	if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER {
+		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsHeader)))
+	}
+
+	// Const Field (issueConfirmedNotificationsSkipBits)
+	issueConfirmedNotificationsSkipBits, _issueConfirmedNotificationsSkipBitsErr := io.ReadUint8(7)
+	if _issueConfirmedNotificationsSkipBitsErr != nil {
+		return nil, errors.New("Error parsing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
+	}
+	if issueConfirmedNotificationsSkipBits != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS {
+		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsSkipBits)))
+	}
+
+	// Simple Field (issueConfirmedNotifications)
+	issueConfirmedNotifications, _issueConfirmedNotificationsErr := io.ReadBit()
+	if _issueConfirmedNotificationsErr != nil {
+		return nil, errors.New("Error parsing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
+	}
+
+	// Const Field (lifetimeHeader)
+	lifetimeHeader, _lifetimeHeaderErr := io.ReadUint8(5)
+	if _lifetimeHeaderErr != nil {
+		return nil, errors.New("Error parsing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+	}
+	if lifetimeHeader != BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER {
+		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER)) + " but got " + strconv.Itoa(int(lifetimeHeader)))
+	}
+
+	// Simple Field (lifetimeLength)
+	lifetimeLength, _lifetimeLengthErr := io.ReadUint8(3)
+	if _lifetimeLengthErr != nil {
+		return nil, errors.New("Error parsing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
+	}
+
+	// Array field (lifetimeSeconds)
+	// Count array
+	lifetimeSeconds := make([]int8, lifetimeLength)
+	for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'lifetimeSeconds' field " + _err.Error())
+		}
+		lifetimeSeconds[curItem] = _item
+	}
+
+	// Create the instance
+	return NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotifications, lifetimeLength, lifetimeSeconds), nil
 }
 
 func (m BACnetConfirmedServiceRequestSubscribeCOV) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Const Field (subscriberProcessIdentifierHeader)
-    _subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
-    if _subscriberProcessIdentifierHeaderErr != nil {
-        return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
-    }
-
-    // Simple Field (subscriberProcessIdentifier)
-    subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
-    _subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
-    if _subscriberProcessIdentifierErr != nil {
-        return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
-    }
-
-    // Const Field (monitoredObjectIdentifierHeader)
-    _monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
-    if _monitoredObjectIdentifierHeaderErr != nil {
-        return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
-    }
-
-    // Simple Field (monitoredObjectType)
-    monitoredObjectType := uint16(m.MonitoredObjectType)
-    _monitoredObjectTypeErr := io.WriteUint16(10, (monitoredObjectType))
-    if _monitoredObjectTypeErr != nil {
-        return errors.New("Error serializing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
-    }
-
-    // Simple Field (monitoredObjectInstanceNumber)
-    monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
-    _monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
-    if _monitoredObjectInstanceNumberErr != nil {
-        return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
-    }
-
-    // Const Field (issueConfirmedNotificationsHeader)
-    _issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x29)
-    if _issueConfirmedNotificationsHeaderErr != nil {
-        return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
-    }
-
-    // Const Field (issueConfirmedNotificationsSkipBits)
-    _issueConfirmedNotificationsSkipBitsErr := io.WriteUint8(7, 0x00)
-    if _issueConfirmedNotificationsSkipBitsErr != nil {
-        return errors.New("Error serializing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
-    }
-
-    // Simple Field (issueConfirmedNotifications)
-    issueConfirmedNotifications := bool(m.IssueConfirmedNotifications)
-    _issueConfirmedNotificationsErr := io.WriteBit((bool) (issueConfirmedNotifications))
-    if _issueConfirmedNotificationsErr != nil {
-        return errors.New("Error serializing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
-    }
-
-    // Const Field (lifetimeHeader)
-    _lifetimeHeaderErr := io.WriteUint8(5, 0x07)
-    if _lifetimeHeaderErr != nil {
-        return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
-    }
-
-    // Simple Field (lifetimeLength)
-    lifetimeLength := uint8(m.LifetimeLength)
-    _lifetimeLengthErr := io.WriteUint8(3, (lifetimeLength))
-    if _lifetimeLengthErr != nil {
-        return errors.New("Error serializing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
-    }
-
-    // Array Field (lifetimeSeconds)
-    if m.LifetimeSeconds != nil {
-        for _, _element := range m.LifetimeSeconds {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
-            }
-        }
-    }
-
-        return nil
-    }
-    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	ser := func() error {
+
+		// Const Field (subscriberProcessIdentifierHeader)
+		_subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
+		if _subscriberProcessIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+		}
+
+		// Simple Field (subscriberProcessIdentifier)
+		subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
+		_subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
+		if _subscriberProcessIdentifierErr != nil {
+			return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+		}
+
+		// Const Field (monitoredObjectIdentifierHeader)
+		_monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
+		if _monitoredObjectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+		}
+
+		// Simple Field (monitoredObjectType)
+		monitoredObjectType := uint16(m.MonitoredObjectType)
+		_monitoredObjectTypeErr := io.WriteUint16(10, (monitoredObjectType))
+		if _monitoredObjectTypeErr != nil {
+			return errors.New("Error serializing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
+		}
+
+		// Simple Field (monitoredObjectInstanceNumber)
+		monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
+		_monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
+		if _monitoredObjectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+		}
+
+		// Const Field (issueConfirmedNotificationsHeader)
+		_issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x29)
+		if _issueConfirmedNotificationsHeaderErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+		}
+
+		// Const Field (issueConfirmedNotificationsSkipBits)
+		_issueConfirmedNotificationsSkipBitsErr := io.WriteUint8(7, 0x00)
+		if _issueConfirmedNotificationsSkipBitsErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
+		}
+
+		// Simple Field (issueConfirmedNotifications)
+		issueConfirmedNotifications := bool(m.IssueConfirmedNotifications)
+		_issueConfirmedNotificationsErr := io.WriteBit((issueConfirmedNotifications))
+		if _issueConfirmedNotificationsErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
+		}
+
+		// Const Field (lifetimeHeader)
+		_lifetimeHeaderErr := io.WriteUint8(5, 0x07)
+		if _lifetimeHeaderErr != nil {
+			return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+		}
+
+		// Simple Field (lifetimeLength)
+		lifetimeLength := uint8(m.LifetimeLength)
+		_lifetimeLengthErr := io.WriteUint8(3, (lifetimeLength))
+		if _lifetimeLengthErr != nil {
+			return errors.New("Error serializing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
+		}
+
+		// Array Field (lifetimeSeconds)
+		if m.LifetimeSeconds != nil {
+			for _, _element := range m.LifetimeSeconds {
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
+				}
+			}
+		}
+
+		return nil
+	}
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
 
 func (m *BACnetConfirmedServiceRequestSubscribeCOV) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "subscriberProcessIdentifier":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SubscriberProcessIdentifier = data
-            case "monitoredObjectType":
-                var data uint16
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MonitoredObjectType = data
-            case "monitoredObjectInstanceNumber":
-                var data uint32
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MonitoredObjectInstanceNumber = data
-            case "issueConfirmedNotifications":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.IssueConfirmedNotifications = data
-            case "lifetimeLength":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.LifetimeLength = data
-            case "lifetimeSeconds":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.LifetimeSeconds = utils.ByteToInt8(_decoded[0:_len])
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "subscriberProcessIdentifier":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SubscriberProcessIdentifier = data
+			case "monitoredObjectType":
+				var data uint16
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MonitoredObjectType = data
+			case "monitoredObjectInstanceNumber":
+				var data uint32
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MonitoredObjectInstanceNumber = data
+			case "issueConfirmedNotifications":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.IssueConfirmedNotifications = data
+			case "lifetimeLength":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.LifetimeLength = data
+			case "lifetimeSeconds":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.LifetimeSeconds = utils.ByteToInt8(_decoded[0:_len])
+			}
+		}
+	}
 }
 
 func (m BACnetConfirmedServiceRequestSubscribeCOV) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SubscriberProcessIdentifier, xml.StartElement{Name: xml.Name{Local: "subscriberProcessIdentifier"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MonitoredObjectType, xml.StartElement{Name: xml.Name{Local: "monitoredObjectType"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MonitoredObjectInstanceNumber, xml.StartElement{Name: xml.Name{Local: "monitoredObjectInstanceNumber"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.IssueConfirmedNotifications, xml.StartElement{Name: xml.Name{Local: "issueConfirmedNotifications"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.LifetimeLength, xml.StartElement{Name: xml.Name{Local: "lifetimeLength"}}); err != nil {
-        return err
-    }
-    _encodedLifetimeSeconds := make([]byte, base64.StdEncoding.EncodedLen(len(m.LifetimeSeconds)))
-    base64.StdEncoding.Encode(_encodedLifetimeSeconds, utils.Int8ToByte(m.LifetimeSeconds))
-    if err := e.EncodeElement(_encodedLifetimeSeconds, xml.StartElement{Name: xml.Name{Local: "lifetimeSeconds"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.BACnetConfirmedServiceRequestSubscribeCOV"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SubscriberProcessIdentifier, xml.StartElement{Name: xml.Name{Local: "subscriberProcessIdentifier"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MonitoredObjectType, xml.StartElement{Name: xml.Name{Local: "monitoredObjectType"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MonitoredObjectInstanceNumber, xml.StartElement{Name: xml.Name{Local: "monitoredObjectInstanceNumber"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.IssueConfirmedNotifications, xml.StartElement{Name: xml.Name{Local: "issueConfirmedNotifications"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.LifetimeLength, xml.StartElement{Name: xml.Name{Local: "lifetimeLength"}}); err != nil {
+		return err
+	}
+	_encodedLifetimeSeconds := make([]byte, base64.StdEncoding.EncodedLen(len(m.LifetimeSeconds)))
+	base64.StdEncoding.Encode(_encodedLifetimeSeconds, utils.Int8ToByte(m.LifetimeSeconds))
+	if err := e.EncodeElement(_encodedLifetimeSeconds, xml.StartElement{Name: xml.Name{Local: "lifetimeSeconds"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
index a3b8f3a..18c2751 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
@@ -19,708 +19,705 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    log "github.com/sirupsen/logrus"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "reflect"
+	"encoding/xml"
+	"errors"
+	log "github.com/sirupsen/logrus"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
 type NPDU struct {
-    ProtocolVersionNumber uint8
-    MessageTypeFieldPresent bool
-    DestinationSpecified bool
-    SourceSpecified bool
-    ExpectingReply bool
-    NetworkPriority uint8
-    DestinationNetworkAddress *uint16
-    DestinationLength *uint8
-    DestinationAddress []uint8
-    SourceNetworkAddress *uint16
-    SourceLength *uint8
-    SourceAddress []uint8
-    HopCount *uint8
-    Nlm *INLM
-    Apdu *IAPDU
-
+	ProtocolVersionNumber     uint8
+	MessageTypeFieldPresent   bool
+	DestinationSpecified      bool
+	SourceSpecified           bool
+	ExpectingReply            bool
+	NetworkPriority           uint8
+	DestinationNetworkAddress *uint16
+	DestinationLength         *uint8
+	DestinationAddress        []uint8
+	SourceNetworkAddress      *uint16
+	SourceLength              *uint8
+	SourceAddress             []uint8
+	HopCount                  *uint8
+	Nlm                       *INLM
+	Apdu                      *IAPDU
 }
 
 // The corresponding interface
 type INPDU interface {
-    spi.Message
-    Serialize(io utils.WriteBuffer) error
+	spi.Message
+	Serialize(io utils.WriteBuffer) error
 }
 
-
 func NewNPDU(protocolVersionNumber uint8, messageTypeFieldPresent bool, destinationSpecified bool, sourceSpecified bool, expectingReply bool, networkPriority uint8, destinationNetworkAddress *uint16, destinationLength *uint8, destinationAddress []uint8, sourceNetworkAddress *uint16, sourceLength *uint8, sourceAddress []uint8, hopCount *uint8, nlm *INLM, apdu *IAPDU) spi.Message {
-    return &NPDU{ProtocolVersionNumber: protocolVersionNumber, MessageTypeFieldPresent: messageTypeFieldPresent, DestinationSpecified: destinationSpecified, SourceSpecified: sourceSpecified, ExpectingReply: expectingReply, NetworkPriority: networkPriority, DestinationNetworkAddress: destinationNetworkAddress, DestinationLength: destinationLength, DestinationAddress: destinationAddress, SourceNetworkAddress: sourceNetworkAddress, SourceLength: sourceLength, SourceAddress: sourceAddress, H [...]
+	return &NPDU{ProtocolVersionNumber: protocolVersionNumber, MessageTypeFieldPresent: messageTypeFieldPresent, DestinationSpecified: destinationSpecified, SourceSpecified: sourceSpecified, ExpectingReply: expectingReply, NetworkPriority: networkPriority, DestinationNetworkAddress: destinationNetworkAddress, DestinationLength: destinationLength, DestinationAddress: destinationAddress, SourceNetworkAddress: sourceNetworkAddress, SourceLength: sourceLength, SourceAddress: sourceAddress, HopC [...]
 }
 
 func CastINPDU(structType interface{}) INPDU {
-    castFunc := func(typ interface{}) INPDU {
-        if iNPDU, ok := typ.(INPDU); ok {
-            return iNPDU
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) INPDU {
+		if iNPDU, ok := typ.(INPDU); ok {
+			return iNPDU
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastNPDU(structType interface{}) NPDU {
-    castFunc := func(typ interface{}) NPDU {
-        if sNPDU, ok := typ.(NPDU); ok {
-            return sNPDU
-        }
-        if sNPDU, ok := typ.(*NPDU); ok {
-            return *sNPDU
-        }
-        return NPDU{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) NPDU {
+		if sNPDU, ok := typ.(NPDU); ok {
+			return sNPDU
+		}
+		if sNPDU, ok := typ.(*NPDU); ok {
+			return *sNPDU
+		}
+		return NPDU{}
+	}
+	return castFunc(structType)
 }
 
 func (m NPDU) LengthInBits() uint16 {
-    var lengthInBits uint16 = 0
+	var lengthInBits uint16 = 0
 
-    // Simple field (protocolVersionNumber)
-    lengthInBits += 8
+	// Simple field (protocolVersionNumber)
+	lengthInBits += 8
 
-    // Simple field (messageTypeFieldPresent)
-    lengthInBits += 1
+	// Simple field (messageTypeFieldPresent)
+	lengthInBits += 1
 
-    // Reserved Field (reserved)
-    lengthInBits += 1
+	// Reserved Field (reserved)
+	lengthInBits += 1
 
-    // Simple field (destinationSpecified)
-    lengthInBits += 1
+	// Simple field (destinationSpecified)
+	lengthInBits += 1
 
-    // Reserved Field (reserved)
-    lengthInBits += 1
+	// Reserved Field (reserved)
+	lengthInBits += 1
 
-    // Simple field (sourceSpecified)
-    lengthInBits += 1
+	// Simple field (sourceSpecified)
+	lengthInBits += 1
 
-    // Simple field (expectingReply)
-    lengthInBits += 1
+	// Simple field (expectingReply)
+	lengthInBits += 1
 
-    // Simple field (networkPriority)
-    lengthInBits += 2
+	// Simple field (networkPriority)
+	lengthInBits += 2
 
-    // Optional Field (destinationNetworkAddress)
-    if m.DestinationNetworkAddress != nil {
-        lengthInBits += 16
-    }
+	// Optional Field (destinationNetworkAddress)
+	if m.DestinationNetworkAddress != nil {
+		lengthInBits += 16
+	}
 
-    // Optional Field (destinationLength)
-    if m.DestinationLength != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (destinationLength)
+	if m.DestinationLength != nil {
+		lengthInBits += 8
+	}
 
-    // Array field
-    if len(m.DestinationAddress) > 0 {
-        lengthInBits += 8 * uint16(len(m.DestinationAddress))
-    }
+	// Array field
+	if len(m.DestinationAddress) > 0 {
+		lengthInBits += 8 * uint16(len(m.DestinationAddress))
+	}
 
-    // Optional Field (sourceNetworkAddress)
-    if m.SourceNetworkAddress != nil {
-        lengthInBits += 16
-    }
+	// Optional Field (sourceNetworkAddress)
+	if m.SourceNetworkAddress != nil {
+		lengthInBits += 16
+	}
 
-    // Optional Field (sourceLength)
-    if m.SourceLength != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (sourceLength)
+	if m.SourceLength != nil {
+		lengthInBits += 8
+	}
 
-    // Array field
-    if len(m.SourceAddress) > 0 {
-        lengthInBits += 8 * uint16(len(m.SourceAddress))
-    }
+	// Array field
+	if len(m.SourceAddress) > 0 {
+		lengthInBits += 8 * uint16(len(m.SourceAddress))
+	}
 
-    // Optional Field (hopCount)
-    if m.HopCount != nil {
-        lengthInBits += 8
-    }
+	// Optional Field (hopCount)
+	if m.HopCount != nil {
+		lengthInBits += 8
+	}
 
-    // Optional Field (nlm)
-    if m.Nlm != nil {
-        lengthInBits += (*m.Nlm).LengthInBits()
-    }
+	// Optional Field (nlm)
+	if m.Nlm != nil {
+		lengthInBits += (*m.Nlm).LengthInBits()
+	}
 
-    // Optional Field (apdu)
-    if m.Apdu != nil {
-        lengthInBits += (*m.Apdu).LengthInBits()
-    }
+	// Optional Field (apdu)
+	if m.Apdu != nil {
+		lengthInBits += (*m.Apdu).LengthInBits()
+	}
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m NPDU) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func NPDUParse(io *utils.ReadBuffer, npduLength uint16) (spi.Message, error) {
 
-    // Simple Field (protocolVersionNumber)
-    protocolVersionNumber, _protocolVersionNumberErr := io.ReadUint8(8)
-    if _protocolVersionNumberErr != nil {
-        return nil, errors.New("Error parsing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
-    }
-
-    // Simple Field (messageTypeFieldPresent)
-    messageTypeFieldPresent, _messageTypeFieldPresentErr := io.ReadBit()
-    if _messageTypeFieldPresentErr != nil {
-        return nil, errors.New("Error parsing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
-    }
-
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := io.ReadUint8(1)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != uint8(0) {
-            log.WithFields(log.Fields{
-                "expected value": uint8(0),
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-
-    // Simple Field (destinationSpecified)
-    destinationSpecified, _destinationSpecifiedErr := io.ReadBit()
-    if _destinationSpecifiedErr != nil {
-        return nil, errors.New("Error parsing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
-    }
-
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := io.ReadUint8(1)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != uint8(0) {
-            log.WithFields(log.Fields{
-                "expected value": uint8(0),
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-
-    // Simple Field (sourceSpecified)
-    sourceSpecified, _sourceSpecifiedErr := io.ReadBit()
-    if _sourceSpecifiedErr != nil {
-        return nil, errors.New("Error parsing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
-    }
-
-    // Simple Field (expectingReply)
-    expectingReply, _expectingReplyErr := io.ReadBit()
-    if _expectingReplyErr != nil {
-        return nil, errors.New("Error parsing 'expectingReply' field " + _expectingReplyErr.Error())
-    }
-
-    // Simple Field (networkPriority)
-    networkPriority, _networkPriorityErr := io.ReadUint8(2)
-    if _networkPriorityErr != nil {
-        return nil, errors.New("Error parsing 'networkPriority' field " + _networkPriorityErr.Error())
-    }
-
-    // Optional Field (destinationNetworkAddress) (Can be skipped, if a given expression evaluates to false)
-    var destinationNetworkAddress *uint16 = nil
-    if destinationSpecified {
-        _val, _err := io.ReadUint16(16)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'destinationNetworkAddress' field " + _err.Error())
-        }
-
-        destinationNetworkAddress = &_val
-    }
-
-    // Optional Field (destinationLength) (Can be skipped, if a given expression evaluates to false)
-    var destinationLength *uint8 = nil
-    if destinationSpecified {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'destinationLength' field " + _err.Error())
-        }
-
-        destinationLength = &_val
-    }
-
-    // Array field (destinationAddress)
-    // Count array
-    destinationAddress := make([]uint8, utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0))))
-    for curItem := uint16(0); curItem < uint16(utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0)))); curItem++ {
-
-        _item, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
-        }
-        destinationAddress[curItem] = _item
-    }
-
-    // Optional Field (sourceNetworkAddress) (Can be skipped, if a given expression evaluates to false)
-    var sourceNetworkAddress *uint16 = nil
-    if sourceSpecified {
-        _val, _err := io.ReadUint16(16)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'sourceNetworkAddress' field " + _err.Error())
-        }
-
-        sourceNetworkAddress = &_val
-    }
-
-    // Optional Field (sourceLength) (Can be skipped, if a given expression evaluates to false)
-    var sourceLength *uint8 = nil
-    if sourceSpecified {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'sourceLength' field " + _err.Error())
-        }
-
-        sourceLength = &_val
-    }
-
-    // Array field (sourceAddress)
-    // Count array
-    sourceAddress := make([]uint8, utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0))))
-    for curItem := uint16(0); curItem < uint16(utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0)))); curItem++ {
-
-        _item, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'sourceAddress' field " + _err.Error())
-        }
-        sourceAddress[curItem] = _item
-    }
-
-    // Optional Field (hopCount) (Can be skipped, if a given expression evaluates to false)
-    var hopCount *uint8 = nil
-    if destinationSpecified {
-        _val, _err := io.ReadUint8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'hopCount' field " + _err.Error())
-        }
-
-        hopCount = &_val
-    }
-
-    // Optional Field (nlm) (Can be skipped, if a given expression evaluates to false)
-    var nlm *INLM = nil
-    if messageTypeFieldPresent {
-        _message, _err := NLMParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
-        if _err != nil {
-            return nil, errors.New("Error parsing 'nlm' field " + _err.Error())
-        }
-        var _item INLM
-        _item, _ok := _message.(INLM)
-        if !_ok {
-            return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to INLM")
-        }
-        nlm = &_item
-    }
-
-    // Optional Field (apdu) (Can be skipped, if a given expression evaluates to false)
-    var apdu *IAPDU = nil
-    if !(messageTypeFieldPresent) {
-        _message, _err := APDUParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
-        if _err != nil {
-            return nil, errors.New("Error parsing 'apdu' field " + _err.Error())
-        }
-        var _item IAPDU
-        _item, _ok := _message.(IAPDU)
-        if !_ok {
-            return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to IAPDU")
-        }
-        apdu = &_item
-    }
-
-    // Create the instance
-    return NewNPDU(protocolVersionNumber, messageTypeFieldPresent, destinationSpecified, sourceSpecified, expectingReply, networkPriority, destinationNetworkAddress, destinationLength, destinationAddress, sourceNetworkAddress, sourceLength, sourceAddress, hopCount, nlm, apdu), nil
+	// Simple Field (protocolVersionNumber)
+	protocolVersionNumber, _protocolVersionNumberErr := io.ReadUint8(8)
+	if _protocolVersionNumberErr != nil {
+		return nil, errors.New("Error parsing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
+	}
+
+	// Simple Field (messageTypeFieldPresent)
+	messageTypeFieldPresent, _messageTypeFieldPresentErr := io.ReadBit()
+	if _messageTypeFieldPresentErr != nil {
+		return nil, errors.New("Error parsing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := io.ReadUint8(1)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+		}
+		if reserved != uint8(0) {
+			log.WithFields(log.Fields{
+				"expected value": uint8(0),
+				"got value":      reserved,
+			}).Info("Got unexpected response.")
+		}
+	}
+
+	// Simple Field (destinationSpecified)
+	destinationSpecified, _destinationSpecifiedErr := io.ReadBit()
+	if _destinationSpecifiedErr != nil {
+		return nil, errors.New("Error parsing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := io.ReadUint8(1)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+		}
+		if reserved != uint8(0) {
+			log.WithFields(log.Fields{
+				"expected value": uint8(0),
+				"got value":      reserved,
+			}).Info("Got unexpected response.")
+		}
+	}
+
+	// Simple Field (sourceSpecified)
+	sourceSpecified, _sourceSpecifiedErr := io.ReadBit()
+	if _sourceSpecifiedErr != nil {
+		return nil, errors.New("Error parsing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
+	}
+
+	// Simple Field (expectingReply)
+	expectingReply, _expectingReplyErr := io.ReadBit()
+	if _expectingReplyErr != nil {
+		return nil, errors.New("Error parsing 'expectingReply' field " + _expectingReplyErr.Error())
+	}
+
+	// Simple Field (networkPriority)
+	networkPriority, _networkPriorityErr := io.ReadUint8(2)
+	if _networkPriorityErr != nil {
+		return nil, errors.New("Error parsing 'networkPriority' field " + _networkPriorityErr.Error())
+	}
+
+	// Optional Field (destinationNetworkAddress) (Can be skipped, if a given expression evaluates to false)
+	var destinationNetworkAddress *uint16 = nil
+	if destinationSpecified {
+		_val, _err := io.ReadUint16(16)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'destinationNetworkAddress' field " + _err.Error())
+		}
+
+		destinationNetworkAddress = &_val
+	}
+
+	// Optional Field (destinationLength) (Can be skipped, if a given expression evaluates to false)
+	var destinationLength *uint8 = nil
+	if destinationSpecified {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'destinationLength' field " + _err.Error())
+		}
+
+		destinationLength = &_val
+	}
+
+	// Array field (destinationAddress)
+	// Count array
+	destinationAddress := make([]uint8, utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0))))
+	for curItem := uint16(0); curItem < uint16(utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0)))); curItem++ {
+
+		_item, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+		}
+		destinationAddress[curItem] = _item
+	}
+
+	// Optional Field (sourceNetworkAddress) (Can be skipped, if a given expression evaluates to false)
+	var sourceNetworkAddress *uint16 = nil
+	if sourceSpecified {
+		_val, _err := io.ReadUint16(16)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'sourceNetworkAddress' field " + _err.Error())
+		}
+
+		sourceNetworkAddress = &_val
+	}
+
+	// Optional Field (sourceLength) (Can be skipped, if a given expression evaluates to false)
+	var sourceLength *uint8 = nil
+	if sourceSpecified {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'sourceLength' field " + _err.Error())
+		}
+
+		sourceLength = &_val
+	}
+
+	// Array field (sourceAddress)
+	// Count array
+	sourceAddress := make([]uint8, utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0))))
+	for curItem := uint16(0); curItem < uint16(utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0)))); curItem++ {
+
+		_item, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'sourceAddress' field " + _err.Error())
+		}
+		sourceAddress[curItem] = _item
+	}
+
+	// Optional Field (hopCount) (Can be skipped, if a given expression evaluates to false)
+	var hopCount *uint8 = nil
+	if destinationSpecified {
+		_val, _err := io.ReadUint8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'hopCount' field " + _err.Error())
+		}
+
+		hopCount = &_val
+	}
+
+	// Optional Field (nlm) (Can be skipped, if a given expression evaluates to false)
+	var nlm *INLM = nil
+	if messageTypeFieldPresent {
+		_message, _err := NLMParse(io, uint16(npduLength)-uint16(uint16(uint16(uint16(uint16(uint16(2))+uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3))+uint16((*sourceLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3))+uint16((*destinationLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
+		if _err != nil {
+			return nil, errors.New("Error parsing 'nlm' field " + _err.Error())
+		}
+		var _item INLM
+		_item, _ok := _message.(INLM)
+		if !_ok {
+			return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to INLM")
+		}
+		nlm = &_item
+	}
+
+	// Optional Field (apdu) (Can be skipped, if a given expression evaluates to false)
+	var apdu *IAPDU = nil
+	if !(messageTypeFieldPresent) {
+		_message, _err := APDUParse(io, uint16(npduLength)-uint16(uint16(uint16(uint16(uint16(uint16(2))+uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3))+uint16((*sourceLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3))+uint16((*destinationLength))), uint16(uint16(0))))))+uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
+		if _err != nil {
+			return nil, errors.New("Error parsing 'apdu' field " + _err.Error())
+		}
+		var _item IAPDU
+		_item, _ok := _message.(IAPDU)
+		if !_ok {
+			return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to IAPDU")
+		}
+		apdu = &_item
+	}
+
+	// Create the instance
+	return NewNPDU(protocolVersionNumber, messageTypeFieldPresent, destinationSpecified, sourceSpecified, expectingReply, networkPriority, destinationNetworkAddress, destinationLength, destinationAddress, sourceNetworkAddress, sourceLength, sourceAddress, hopCount, nlm, apdu), nil
 }
 
 func (m NPDU) Serialize(io utils.WriteBuffer) error {
 
-    // Simple Field (protocolVersionNumber)
-    protocolVersionNumber := uint8(m.ProtocolVersionNumber)
-    _protocolVersionNumberErr := io.WriteUint8(8, (protocolVersionNumber))
-    if _protocolVersionNumberErr != nil {
-        return errors.New("Error serializing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
-    }
-
-    // Simple Field (messageTypeFieldPresent)
-    messageTypeFieldPresent := bool(m.MessageTypeFieldPresent)
-    _messageTypeFieldPresentErr := io.WriteBit((bool) (messageTypeFieldPresent))
-    if _messageTypeFieldPresentErr != nil {
-        return errors.New("Error serializing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
-    }
-
-    // Reserved Field (reserved)
-    {
-        _err := io.WriteUint8(1, uint8(0))
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-
-    // Simple Field (destinationSpecified)
-    destinationSpecified := bool(m.DestinationSpecified)
-    _destinationSpecifiedErr := io.WriteBit((bool) (destinationSpecified))
-    if _destinationSpecifiedErr != nil {
-        return errors.New("Error serializing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
-    }
-
-    // Reserved Field (reserved)
-    {
-        _err := io.WriteUint8(1, uint8(0))
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-
-    // Simple Field (sourceSpecified)
-    sourceSpecified := bool(m.SourceSpecified)
-    _sourceSpecifiedErr := io.WriteBit((bool) (sourceSpecified))
-    if _sourceSpecifiedErr != nil {
-        return errors.New("Error serializing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
-    }
-
-    // Simple Field (expectingReply)
-    expectingReply := bool(m.ExpectingReply)
-    _expectingReplyErr := io.WriteBit((bool) (expectingReply))
-    if _expectingReplyErr != nil {
-        return errors.New("Error serializing 'expectingReply' field " + _expectingReplyErr.Error())
-    }
-
-    // Simple Field (networkPriority)
-    networkPriority := uint8(m.NetworkPriority)
-    _networkPriorityErr := io.WriteUint8(2, (networkPriority))
-    if _networkPriorityErr != nil {
-        return errors.New("Error serializing 'networkPriority' field " + _networkPriorityErr.Error())
-    }
-
-    // Optional Field (destinationNetworkAddress) (Can be skipped, if the value is null)
-    var destinationNetworkAddress *uint16 = nil
-    if m.DestinationNetworkAddress != nil {
-        destinationNetworkAddress = m.DestinationNetworkAddress
-        _destinationNetworkAddressErr := io.WriteUint16(16, *(destinationNetworkAddress))
-        if _destinationNetworkAddressErr != nil {
-            return errors.New("Error serializing 'destinationNetworkAddress' field " + _destinationNetworkAddressErr.Error())
-        }
-    }
-
-    // Optional Field (destinationLength) (Can be skipped, if the value is null)
-    var destinationLength *uint8 = nil
-    if m.DestinationLength != nil {
-        destinationLength = m.DestinationLength
-        _destinationLengthErr := io.WriteUint8(8, *(destinationLength))
-        if _destinationLengthErr != nil {
-            return errors.New("Error serializing 'destinationLength' field " + _destinationLengthErr.Error())
-        }
-    }
-
-    // Array Field (destinationAddress)
-    if m.DestinationAddress != nil {
-        for _, _element := range m.DestinationAddress {
-            _elementErr := io.WriteUint8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Optional Field (sourceNetworkAddress) (Can be skipped, if the value is null)
-    var sourceNetworkAddress *uint16 = nil
-    if m.SourceNetworkAddress != nil {
-        sourceNetworkAddress = m.SourceNetworkAddress
-        _sourceNetworkAddressErr := io.WriteUint16(16, *(sourceNetworkAddress))
-        if _sourceNetworkAddressErr != nil {
-            return errors.New("Error serializing 'sourceNetworkAddress' field " + _sourceNetworkAddressErr.Error())
-        }
-    }
-
-    // Optional Field (sourceLength) (Can be skipped, if the value is null)
-    var sourceLength *uint8 = nil
-    if m.SourceLength != nil {
-        sourceLength = m.SourceLength
-        _sourceLengthErr := io.WriteUint8(8, *(sourceLength))
-        if _sourceLengthErr != nil {
-            return errors.New("Error serializing 'sourceLength' field " + _sourceLengthErr.Error())
-        }
-    }
-
-    // Array Field (sourceAddress)
-    if m.SourceAddress != nil {
-        for _, _element := range m.SourceAddress {
-            _elementErr := io.WriteUint8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'sourceAddress' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Optional Field (hopCount) (Can be skipped, if the value is null)
-    var hopCount *uint8 = nil
-    if m.HopCount != nil {
-        hopCount = m.HopCount
-        _hopCountErr := io.WriteUint8(8, *(hopCount))
-        if _hopCountErr != nil {
-            return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
-        }
-    }
-
-    // Optional Field (nlm) (Can be skipped, if the value is null)
-    var nlm *INLM = nil
-    if m.Nlm != nil {
-        nlm = m.Nlm
-        _nlmErr := CastINLM(*nlm).Serialize(io)
-        if _nlmErr != nil {
-            return errors.New("Error serializing 'nlm' field " + _nlmErr.Error())
-        }
-    }
-
-    // Optional Field (apdu) (Can be skipped, if the value is null)
-    var apdu *IAPDU = nil
-    if m.Apdu != nil {
-        apdu = m.Apdu
-        _apduErr := CastIAPDU(*apdu).Serialize(io)
-        if _apduErr != nil {
-            return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
-        }
-    }
-
-    return nil
+	// Simple Field (protocolVersionNumber)
+	protocolVersionNumber := uint8(m.ProtocolVersionNumber)
+	_protocolVersionNumberErr := io.WriteUint8(8, (protocolVersionNumber))
+	if _protocolVersionNumberErr != nil {
+		return errors.New("Error serializing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
+	}
+
+	// Simple Field (messageTypeFieldPresent)
+	messageTypeFieldPresent := bool(m.MessageTypeFieldPresent)
+	_messageTypeFieldPresentErr := io.WriteBit((messageTypeFieldPresent))
+	if _messageTypeFieldPresentErr != nil {
+		return errors.New("Error serializing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := io.WriteUint8(1, uint8(0))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
+
+	// Simple Field (destinationSpecified)
+	destinationSpecified := bool(m.DestinationSpecified)
+	_destinationSpecifiedErr := io.WriteBit((destinationSpecified))
+	if _destinationSpecifiedErr != nil {
+		return errors.New("Error serializing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
+	}
+
+	// Reserved Field (reserved)
+	{
+		_err := io.WriteUint8(1, uint8(0))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
+
+	// Simple Field (sourceSpecified)
+	sourceSpecified := bool(m.SourceSpecified)
+	_sourceSpecifiedErr := io.WriteBit((sourceSpecified))
+	if _sourceSpecifiedErr != nil {
+		return errors.New("Error serializing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
+	}
+
+	// Simple Field (expectingReply)
+	expectingReply := bool(m.ExpectingReply)
+	_expectingReplyErr := io.WriteBit((expectingReply))
+	if _expectingReplyErr != nil {
+		return errors.New("Error serializing 'expectingReply' field " + _expectingReplyErr.Error())
+	}
+
+	// Simple Field (networkPriority)
+	networkPriority := uint8(m.NetworkPriority)
+	_networkPriorityErr := io.WriteUint8(2, (networkPriority))
+	if _networkPriorityErr != nil {
+		return errors.New("Error serializing 'networkPriority' field " + _networkPriorityErr.Error())
+	}
+
+	// Optional Field (destinationNetworkAddress) (Can be skipped, if the value is null)
+	var destinationNetworkAddress *uint16 = nil
+	if m.DestinationNetworkAddress != nil {
+		destinationNetworkAddress = m.DestinationNetworkAddress
+		_destinationNetworkAddressErr := io.WriteUint16(16, *(destinationNetworkAddress))
+		if _destinationNetworkAddressErr != nil {
+			return errors.New("Error serializing 'destinationNetworkAddress' field " + _destinationNetworkAddressErr.Error())
+		}
+	}
+
+	// Optional Field (destinationLength) (Can be skipped, if the value is null)
+	var destinationLength *uint8 = nil
+	if m.DestinationLength != nil {
+		destinationLength = m.DestinationLength
+		_destinationLengthErr := io.WriteUint8(8, *(destinationLength))
+		if _destinationLengthErr != nil {
+			return errors.New("Error serializing 'destinationLength' field " + _destinationLengthErr.Error())
+		}
+	}
+
+	// Array Field (destinationAddress)
+	if m.DestinationAddress != nil {
+		for _, _element := range m.DestinationAddress {
+			_elementErr := io.WriteUint8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+			}
+		}
+	}
+
+	// Optional Field (sourceNetworkAddress) (Can be skipped, if the value is null)
+	var sourceNetworkAddress *uint16 = nil
+	if m.SourceNetworkAddress != nil {
+		sourceNetworkAddress = m.SourceNetworkAddress
+		_sourceNetworkAddressErr := io.WriteUint16(16, *(sourceNetworkAddress))
+		if _sourceNetworkAddressErr != nil {
+			return errors.New("Error serializing 'sourceNetworkAddress' field " + _sourceNetworkAddressErr.Error())
+		}
+	}
+
+	// Optional Field (sourceLength) (Can be skipped, if the value is null)
+	var sourceLength *uint8 = nil
+	if m.SourceLength != nil {
+		sourceLength = m.SourceLength
+		_sourceLengthErr := io.WriteUint8(8, *(sourceLength))
+		if _sourceLengthErr != nil {
+			return errors.New("Error serializing 'sourceLength' field " + _sourceLengthErr.Error())
+		}
+	}
+
+	// Array Field (sourceAddress)
+	if m.SourceAddress != nil {
+		for _, _element := range m.SourceAddress {
+			_elementErr := io.WriteUint8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'sourceAddress' field " + _elementErr.Error())
+			}
+		}
+	}
+
+	// Optional Field (hopCount) (Can be skipped, if the value is null)
+	var hopCount *uint8 = nil
+	if m.HopCount != nil {
+		hopCount = m.HopCount
+		_hopCountErr := io.WriteUint8(8, *(hopCount))
+		if _hopCountErr != nil {
+			return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+		}
+	}
+
+	// Optional Field (nlm) (Can be skipped, if the value is null)
+	var nlm *INLM = nil
+	if m.Nlm != nil {
+		nlm = m.Nlm
+		_nlmErr := CastINLM(*nlm).Serialize(io)
+		if _nlmErr != nil {
+			return errors.New("Error serializing 'nlm' field " + _nlmErr.Error())
+		}
+	}
+
+	// Optional Field (apdu) (Can be skipped, if the value is null)
+	var apdu *IAPDU = nil
+	if m.Apdu != nil {
+		apdu = m.Apdu
+		_apduErr := CastIAPDU(*apdu).Serialize(io)
+		if _apduErr != nil {
+			return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
+		}
+	}
+
+	return nil
 }
 
 func (m *NPDU) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "protocolVersionNumber":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ProtocolVersionNumber = data
-            case "messageTypeFieldPresent":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.MessageTypeFieldPresent = data
-            case "destinationSpecified":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DestinationSpecified = data
-            case "sourceSpecified":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceSpecified = data
-            case "expectingReply":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ExpectingReply = data
-            case "networkPriority":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.NetworkPriority = data
-            case "destinationNetworkAddress":
-                var data *uint16
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DestinationNetworkAddress = data
-            case "destinationLength":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DestinationLength = data
-            case "destinationAddress":
-                var data []uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DestinationAddress = data
-            case "sourceNetworkAddress":
-                var data *uint16
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceNetworkAddress = data
-            case "sourceLength":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceLength = data
-            case "sourceAddress":
-                var data []uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceAddress = data
-            case "hopCount":
-                var data *uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.HopCount = data
-            case "nlm":
-                switch tok.Attr[0].Value {
-                    case "org.apache.plc4x.java.bacnetip.readwrite.NLMWhoIsRouterToNetwork":
-                        var dt *NLMWhoIsRouterToNetwork
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Nlm = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.NLMIAmRouterToNetwork":
-                        var dt *NLMIAmRouterToNetwork
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Nlm = dt
-                    }
-            case "apdu":
-                switch tok.Attr[0].Value {
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest":
-                        var dt *APDUConfirmedRequest
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUUnconfirmedRequest":
-                        var dt *APDUUnconfirmedRequest
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUSimpleAck":
-                        var dt *APDUSimpleAck
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck":
-                        var dt *APDUComplexAck
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck":
-                        var dt *APDUSegmentAck
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUError":
-                        var dt *APDUError
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUReject":
-                        var dt *APDUReject
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    case "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort":
-                        var dt *APDUAbort
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        *m.Apdu = dt
-                    }
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "protocolVersionNumber":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ProtocolVersionNumber = data
+			case "messageTypeFieldPresent":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.MessageTypeFieldPresent = data
+			case "destinationSpecified":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DestinationSpecified = data
+			case "sourceSpecified":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceSpecified = data
+			case "expectingReply":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ExpectingReply = data
+			case "networkPriority":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.NetworkPriority = data
+			case "destinationNetworkAddress":
+				var data *uint16
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DestinationNetworkAddress = data
+			case "destinationLength":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DestinationLength = data
+			case "destinationAddress":
+				var data []uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DestinationAddress = data
+			case "sourceNetworkAddress":
+				var data *uint16
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceNetworkAddress = data
+			case "sourceLength":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceLength = data
+			case "sourceAddress":
+				var data []uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceAddress = data
+			case "hopCount":
+				var data *uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.HopCount = data
+			case "nlm":
+				switch tok.Attr[0].Value {
+				case "org.apache.plc4x.java.bacnetip.readwrite.NLMWhoIsRouterToNetwork":
+					var dt *NLMWhoIsRouterToNetwork
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Nlm = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.NLMIAmRouterToNetwork":
+					var dt *NLMIAmRouterToNetwork
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Nlm = dt
+				}
+			case "apdu":
+				switch tok.Attr[0].Value {
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUConfirmedRequest":
+					var dt *APDUConfirmedRequest
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUUnconfirmedRequest":
+					var dt *APDUUnconfirmedRequest
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUSimpleAck":
+					var dt *APDUSimpleAck
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUComplexAck":
+					var dt *APDUComplexAck
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUSegmentAck":
+					var dt *APDUSegmentAck
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUError":
+					var dt *APDUError
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUReject":
+					var dt *APDUReject
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				case "org.apache.plc4x.java.bacnetip.readwrite.APDUAbort":
+					var dt *APDUAbort
+					if err := d.DecodeElement(&dt, &tok); err != nil {
+						return err
+					}
+					*m.Apdu = dt
+				}
+			}
+		}
+	}
 }
 
 func (m NPDU) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.NPDU"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ProtocolVersionNumber, xml.StartElement{Name: xml.Name{Local: "protocolVersionNumber"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.MessageTypeFieldPresent, xml.StartElement{Name: xml.Name{Local: "messageTypeFieldPresent"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DestinationSpecified, xml.StartElement{Name: xml.Name{Local: "destinationSpecified"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceSpecified, xml.StartElement{Name: xml.Name{Local: "sourceSpecified"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ExpectingReply, xml.StartElement{Name: xml.Name{Local: "expectingReply"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.NetworkPriority, xml.StartElement{Name: xml.Name{Local: "networkPriority"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DestinationNetworkAddress, xml.StartElement{Name: xml.Name{Local: "destinationNetworkAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DestinationLength, xml.StartElement{Name: xml.Name{Local: "destinationLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceNetworkAddress, xml.StartElement{Name: xml.Name{Local: "sourceNetworkAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceLength, xml.StartElement{Name: xml.Name{Local: "sourceLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Nlm, xml.StartElement{Name: xml.Name{Local: "nlm"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Apdu, xml.StartElement{Name: xml.Name{Local: "apdu"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.bacnetip.readwrite.NPDU"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ProtocolVersionNumber, xml.StartElement{Name: xml.Name{Local: "protocolVersionNumber"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.MessageTypeFieldPresent, xml.StartElement{Name: xml.Name{Local: "messageTypeFieldPresent"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DestinationSpecified, xml.StartElement{Name: xml.Name{Local: "destinationSpecified"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceSpecified, xml.StartElement{Name: xml.Name{Local: "sourceSpecified"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ExpectingReply, xml.StartElement{Name: xml.Name{Local: "expectingReply"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.NetworkPriority, xml.StartElement{Name: xml.Name{Local: "networkPriority"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DestinationNetworkAddress, xml.StartElement{Name: xml.Name{Local: "destinationNetworkAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DestinationLength, xml.StartElement{Name: xml.Name{Local: "destinationLength"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceNetworkAddress, xml.StartElement{Name: xml.Name{Local: "sourceNetworkAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceLength, xml.StartElement{Name: xml.Name{Local: "sourceLength"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Nlm, xml.StartElement{Name: xml.Name{Local: "nlm"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Apdu, xml.StartElement{Name: xml.Name{Local: "apdu"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index 3bc5926..0aa7637 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -19,12 +19,12 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "strconv"
+	"encoding/xml"
+	"errors"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -32,276 +32,275 @@ const CEMIAdditionalInformationBusmonitorInfo_LEN uint8 = 1
 
 // The data-structure of this message
 type CEMIAdditionalInformationBusmonitorInfo struct {
-    FrameErrorFlag bool
-    BitErrorFlag bool
-    ParityErrorFlag bool
-    UnknownFlag bool
-    LostFlag bool
-    SequenceNumber uint8
-    CEMIAdditionalInformation
+	FrameErrorFlag  bool
+	BitErrorFlag    bool
+	ParityErrorFlag bool
+	UnknownFlag     bool
+	LostFlag        bool
+	SequenceNumber  uint8
+	CEMIAdditionalInformation
 }
 
 // The corresponding interface
 type ICEMIAdditionalInformationBusmonitorInfo interface {
-    ICEMIAdditionalInformation
-    Serialize(io utils.WriteBuffer) error
+	ICEMIAdditionalInformation
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m CEMIAdditionalInformationBusmonitorInfo) AdditionalInformationType() uint8 {
-    return 0x03
+	return 0x03
 }
 
 func (m CEMIAdditionalInformationBusmonitorInfo) initialize() spi.Message {
-    return m
+	return m
 }
 
 func NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag bool, bitErrorFlag bool, parityErrorFlag bool, unknownFlag bool, lostFlag bool, sequenceNumber uint8) CEMIAdditionalInformationInitializer {
-    return &CEMIAdditionalInformationBusmonitorInfo{FrameErrorFlag: frameErrorFlag, BitErrorFlag: bitErrorFlag, ParityErrorFlag: parityErrorFlag, UnknownFlag: unknownFlag, LostFlag: lostFlag, SequenceNumber: sequenceNumber}
+	return &CEMIAdditionalInformationBusmonitorInfo{FrameErrorFlag: frameErrorFlag, BitErrorFlag: bitErrorFlag, ParityErrorFlag: parityErrorFlag, UnknownFlag: unknownFlag, LostFlag: lostFlag, SequenceNumber: sequenceNumber}
 }
 
 func CastICEMIAdditionalInformationBusmonitorInfo(structType interface{}) ICEMIAdditionalInformationBusmonitorInfo {
-    castFunc := func(typ interface{}) ICEMIAdditionalInformationBusmonitorInfo {
-        if iCEMIAdditionalInformationBusmonitorInfo, ok := typ.(ICEMIAdditionalInformationBusmonitorInfo); ok {
-            return iCEMIAdditionalInformationBusmonitorInfo
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ICEMIAdditionalInformationBusmonitorInfo {
+		if iCEMIAdditionalInformationBusmonitorInfo, ok := typ.(ICEMIAdditionalInformationBusmonitorInfo); ok {
+			return iCEMIAdditionalInformationBusmonitorInfo
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastCEMIAdditionalInformationBusmonitorInfo(structType interface{}) CEMIAdditionalInformationBusmonitorInfo {
-    castFunc := func(typ interface{}) CEMIAdditionalInformationBusmonitorInfo {
-        if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(CEMIAdditionalInformationBusmonitorInfo); ok {
-            return sCEMIAdditionalInformationBusmonitorInfo
-        }
-        if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(*CEMIAdditionalInformationBusmonitorInfo); ok {
-            return *sCEMIAdditionalInformationBusmonitorInfo
-        }
-        return CEMIAdditionalInformationBusmonitorInfo{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) CEMIAdditionalInformationBusmonitorInfo {
+		if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(CEMIAdditionalInformationBusmonitorInfo); ok {
+			return sCEMIAdditionalInformationBusmonitorInfo
+		}
+		if sCEMIAdditionalInformationBusmonitorInfo, ok := typ.(*CEMIAdditionalInformationBusmonitorInfo); ok {
+			return *sCEMIAdditionalInformationBusmonitorInfo
+		}
+		return CEMIAdditionalInformationBusmonitorInfo{}
+	}
+	return castFunc(structType)
 }
 
 func (m CEMIAdditionalInformationBusmonitorInfo) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.CEMIAdditionalInformation.LengthInBits()
+	var lengthInBits uint16 = m.CEMIAdditionalInformation.LengthInBits()
 
-    // Const Field (len)
-    lengthInBits += 8
+	// Const Field (len)
+	lengthInBits += 8
 
-    // Simple field (frameErrorFlag)
-    lengthInBits += 1
+	// Simple field (frameErrorFlag)
+	lengthInBits += 1
 
-    // Simple field (bitErrorFlag)
-    lengthInBits += 1
+	// Simple field (bitErrorFlag)
+	lengthInBits += 1
 
-    // Simple field (parityErrorFlag)
-    lengthInBits += 1
+	// Simple field (parityErrorFlag)
+	lengthInBits += 1
 
-    // Simple field (unknownFlag)
-    lengthInBits += 1
+	// Simple field (unknownFlag)
+	lengthInBits += 1
 
-    // Simple field (lostFlag)
-    lengthInBits += 1
+	// Simple field (lostFlag)
+	lengthInBits += 1
 
-    // Simple field (sequenceNumber)
-    lengthInBits += 3
+	// Simple field (sequenceNumber)
+	lengthInBits += 3
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m CEMIAdditionalInformationBusmonitorInfo) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func CEMIAdditionalInformationBusmonitorInfoParse(io *utils.ReadBuffer) (CEMIAdditionalInformationInitializer, error) {
 
-    // Const Field (len)
-    len, _lenErr := io.ReadUint8(8)
-    if _lenErr != nil {
-        return nil, errors.New("Error parsing 'len' field " + _lenErr.Error())
-    }
-    if len != CEMIAdditionalInformationBusmonitorInfo_LEN {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(CEMIAdditionalInformationBusmonitorInfo_LEN)) + " but got " + strconv.Itoa(int(len)))
-    }
-
-    // Simple Field (frameErrorFlag)
-    frameErrorFlag, _frameErrorFlagErr := io.ReadBit()
-    if _frameErrorFlagErr != nil {
-        return nil, errors.New("Error parsing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
-    }
-
-    // Simple Field (bitErrorFlag)
-    bitErrorFlag, _bitErrorFlagErr := io.ReadBit()
-    if _bitErrorFlagErr != nil {
-        return nil, errors.New("Error parsing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
-    }
-
-    // Simple Field (parityErrorFlag)
-    parityErrorFlag, _parityErrorFlagErr := io.ReadBit()
-    if _parityErrorFlagErr != nil {
-        return nil, errors.New("Error parsing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
-    }
-
-    // Simple Field (unknownFlag)
-    unknownFlag, _unknownFlagErr := io.ReadBit()
-    if _unknownFlagErr != nil {
-        return nil, errors.New("Error parsing 'unknownFlag' field " + _unknownFlagErr.Error())
-    }
-
-    // Simple Field (lostFlag)
-    lostFlag, _lostFlagErr := io.ReadBit()
-    if _lostFlagErr != nil {
-        return nil, errors.New("Error parsing 'lostFlag' field " + _lostFlagErr.Error())
-    }
-
-    // Simple Field (sequenceNumber)
-    sequenceNumber, _sequenceNumberErr := io.ReadUint8(3)
-    if _sequenceNumberErr != nil {
-        return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-    }
-
-    // Create the instance
-    return NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag, bitErrorFlag, parityErrorFlag, unknownFlag, lostFlag, sequenceNumber), nil
+	// Const Field (len)
+	len, _lenErr := io.ReadUint8(8)
+	if _lenErr != nil {
+		return nil, errors.New("Error parsing 'len' field " + _lenErr.Error())
+	}
+	if len != CEMIAdditionalInformationBusmonitorInfo_LEN {
+		return nil, errors.New("Expected constant value " + strconv.Itoa(int(CEMIAdditionalInformationBusmonitorInfo_LEN)) + " but got " + strconv.Itoa(int(len)))
+	}
+
+	// Simple Field (frameErrorFlag)
+	frameErrorFlag, _frameErrorFlagErr := io.ReadBit()
+	if _frameErrorFlagErr != nil {
+		return nil, errors.New("Error parsing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
+	}
+
+	// Simple Field (bitErrorFlag)
+	bitErrorFlag, _bitErrorFlagErr := io.ReadBit()
+	if _bitErrorFlagErr != nil {
+		return nil, errors.New("Error parsing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
+	}
+
+	// Simple Field (parityErrorFlag)
+	parityErrorFlag, _parityErrorFlagErr := io.ReadBit()
+	if _parityErrorFlagErr != nil {
+		return nil, errors.New("Error parsing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
+	}
+
+	// Simple Field (unknownFlag)
+	unknownFlag, _unknownFlagErr := io.ReadBit()
+	if _unknownFlagErr != nil {
+		return nil, errors.New("Error parsing 'unknownFlag' field " + _unknownFlagErr.Error())
+	}
+
+	// Simple Field (lostFlag)
+	lostFlag, _lostFlagErr := io.ReadBit()
+	if _lostFlagErr != nil {
+		return nil, errors.New("Error parsing 'lostFlag' field " + _lostFlagErr.Error())
+	}
+
+	// Simple Field (sequenceNumber)
+	sequenceNumber, _sequenceNumberErr := io.ReadUint8(3)
+	if _sequenceNumberErr != nil {
+		return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+	}
+
+	// Create the instance
+	return NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag, bitErrorFlag, parityErrorFlag, unknownFlag, lostFlag, sequenceNumber), nil
 }
 
 func (m CEMIAdditionalInformationBusmonitorInfo) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Const Field (len)
-    _lenErr := io.WriteUint8(8, 1)
-    if _lenErr != nil {
-        return errors.New("Error serializing 'len' field " + _lenErr.Error())
-    }
-
-    // Simple Field (frameErrorFlag)
-    frameErrorFlag := bool(m.FrameErrorFlag)
-    _frameErrorFlagErr := io.WriteBit((bool) (frameErrorFlag))
-    if _frameErrorFlagErr != nil {
-        return errors.New("Error serializing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
-    }
-
-    // Simple Field (bitErrorFlag)
-    bitErrorFlag := bool(m.BitErrorFlag)
-    _bitErrorFlagErr := io.WriteBit((bool) (bitErrorFlag))
-    if _bitErrorFlagErr != nil {
-        return errors.New("Error serializing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
-    }
-
-    // Simple Field (parityErrorFlag)
-    parityErrorFlag := bool(m.ParityErrorFlag)
-    _parityErrorFlagErr := io.WriteBit((bool) (parityErrorFlag))
-    if _parityErrorFlagErr != nil {
-        return errors.New("Error serializing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
-    }
-
-    // Simple Field (unknownFlag)
-    unknownFlag := bool(m.UnknownFlag)
-    _unknownFlagErr := io.WriteBit((bool) (unknownFlag))
-    if _unknownFlagErr != nil {
-        return errors.New("Error serializing 'unknownFlag' field " + _unknownFlagErr.Error())
-    }
-
-    // Simple Field (lostFlag)
-    lostFlag := bool(m.LostFlag)
-    _lostFlagErr := io.WriteBit((bool) (lostFlag))
-    if _lostFlagErr != nil {
-        return errors.New("Error serializing 'lostFlag' field " + _lostFlagErr.Error())
-    }
-
-    // Simple Field (sequenceNumber)
-    sequenceNumber := uint8(m.SequenceNumber)
-    _sequenceNumberErr := io.WriteUint8(3, (sequenceNumber))
-    if _sequenceNumberErr != nil {
-        return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-    }
-
-        return nil
-    }
-    return CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
+	ser := func() error {
+
+		// Const Field (len)
+		_lenErr := io.WriteUint8(8, 1)
+		if _lenErr != nil {
+			return errors.New("Error serializing 'len' field " + _lenErr.Error())
+		}
+
+		// Simple Field (frameErrorFlag)
+		frameErrorFlag := bool(m.FrameErrorFlag)
+		_frameErrorFlagErr := io.WriteBit((frameErrorFlag))
+		if _frameErrorFlagErr != nil {
+			return errors.New("Error serializing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
+		}
+
+		// Simple Field (bitErrorFlag)
+		bitErrorFlag := bool(m.BitErrorFlag)
+		_bitErrorFlagErr := io.WriteBit((bitErrorFlag))
+		if _bitErrorFlagErr != nil {
+			return errors.New("Error serializing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
+		}
+
+		// Simple Field (parityErrorFlag)
+		parityErrorFlag := bool(m.ParityErrorFlag)
+		_parityErrorFlagErr := io.WriteBit((parityErrorFlag))
+		if _parityErrorFlagErr != nil {
+			return errors.New("Error serializing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
+		}
+
+		// Simple Field (unknownFlag)
+		unknownFlag := bool(m.UnknownFlag)
+		_unknownFlagErr := io.WriteBit((unknownFlag))
+		if _unknownFlagErr != nil {
+			return errors.New("Error serializing 'unknownFlag' field " + _unknownFlagErr.Error())
+		}
+
+		// Simple Field (lostFlag)
+		lostFlag := bool(m.LostFlag)
+		_lostFlagErr := io.WriteBit((lostFlag))
+		if _lostFlagErr != nil {
+			return errors.New("Error serializing 'lostFlag' field " + _lostFlagErr.Error())
+		}
+
+		// Simple Field (sequenceNumber)
+		sequenceNumber := uint8(m.SequenceNumber)
+		_sequenceNumberErr := io.WriteUint8(3, (sequenceNumber))
+		if _sequenceNumberErr != nil {
+			return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+		}
+
+		return nil
+	}
+	return CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
 }
 
 func (m *CEMIAdditionalInformationBusmonitorInfo) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "frameErrorFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.FrameErrorFlag = data
-            case "bitErrorFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.BitErrorFlag = data
-            case "parityErrorFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ParityErrorFlag = data
-            case "unknownFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.UnknownFlag = data
-            case "lostFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.LostFlag = data
-            case "sequenceNumber":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SequenceNumber = data
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "frameErrorFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.FrameErrorFlag = data
+			case "bitErrorFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.BitErrorFlag = data
+			case "parityErrorFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ParityErrorFlag = data
+			case "unknownFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.UnknownFlag = data
+			case "lostFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.LostFlag = data
+			case "sequenceNumber":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SequenceNumber = data
+			}
+		}
+	}
 }
 
 func (m CEMIAdditionalInformationBusmonitorInfo) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIAdditionalInformationBusmonitorInfo"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.FrameErrorFlag, xml.StartElement{Name: xml.Name{Local: "frameErrorFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.BitErrorFlag, xml.StartElement{Name: xml.Name{Local: "bitErrorFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ParityErrorFlag, xml.StartElement{Name: xml.Name{Local: "parityErrorFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.UnknownFlag, xml.StartElement{Name: xml.Name{Local: "unknownFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.LostFlag, xml.StartElement{Name: xml.Name{Local: "lostFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIAdditionalInformationBusmonitorInfo"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.FrameErrorFlag, xml.StartElement{Name: xml.Name{Local: "frameErrorFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.BitErrorFlag, xml.StartElement{Name: xml.Name{Local: "bitErrorFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ParityErrorFlag, xml.StartElement{Name: xml.Name{Local: "parityErrorFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.UnknownFlag, xml.StartElement{Name: xml.Name{Local: "unknownFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.LostFlag, xml.StartElement{Name: xml.Name{Local: "lostFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SequenceNumber, xml.StartElement{Name: xml.Name{Local: "sequenceNumber"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
index b1ab309..ef2d79c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
@@ -19,611 +19,608 @@
 package model
 
 import (
-    "encoding/base64"
-    "encoding/xml"
-    "errors"
-    "io"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "reflect"
+	"encoding/base64"
+	"encoding/xml"
+	"errors"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
 type CEMIDataFrame struct {
-    StandardFrame bool
-    Polling bool
-    NotRepeated bool
-    NotAckFrame bool
-    Priority ICEMIPriority
-    AcknowledgeRequested bool
-    ErrorFlag bool
-    GroupDestinationAddress bool
-    HopCount uint8
-    ExtendedFrameFormat uint8
-    SourceAddress IKNXAddress
-    DestinationAddress []int8
-    DataLength uint8
-    Tcpi ITPCI
-    Counter uint8
-    Apci IAPCI
-    DataFirstByte int8
-    Data []int8
-
+	StandardFrame           bool
+	Polling                 bool
+	NotRepeated             bool
+	NotAckFrame             bool
+	Priority                ICEMIPriority
+	AcknowledgeRequested    bool
+	ErrorFlag               bool
+	GroupDestinationAddress bool
+	HopCount                uint8
+	ExtendedFrameFormat     uint8
+	SourceAddress           IKNXAddress
+	DestinationAddress      []int8
+	DataLength              uint8
+	Tcpi                    ITPCI
+	Counter                 uint8
+	Apci                    IAPCI
+	DataFirstByte           int8
+	Data                    []int8
 }
 
 // The corresponding interface
 type ICEMIDataFrame interface {
-    spi.Message
-    Serialize(io utils.WriteBuffer) error
+	spi.Message
+	Serialize(io utils.WriteBuffer) error
 }
 
-
 func NewCEMIDataFrame(standardFrame bool, polling bool, notRepeated bool, notAckFrame bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool, groupDestinationAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress IKNXAddress, destinationAddress []int8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8) spi.Message {
-    return &CEMIDataFrame{StandardFrame: standardFrame, Polling: polling, NotRepeated: notRepeated, NotAckFrame: notAckFrame, Priority: priority, AcknowledgeRequested: acknowledgeRequested, ErrorFlag: errorFlag, GroupDestinationAddress: groupDestinationAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Da [...]
+	return &CEMIDataFrame{StandardFrame: standardFrame, Polling: polling, NotRepeated: notRepeated, NotAckFrame: notAckFrame, Priority: priority, AcknowledgeRequested: acknowledgeRequested, ErrorFlag: errorFlag, GroupDestinationAddress: groupDestinationAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data}
 }
 
 func CastICEMIDataFrame(structType interface{}) ICEMIDataFrame {
-    castFunc := func(typ interface{}) ICEMIDataFrame {
-        if iCEMIDataFrame, ok := typ.(ICEMIDataFrame); ok {
-            return iCEMIDataFrame
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ICEMIDataFrame {
+		if iCEMIDataFrame, ok := typ.(ICEMIDataFrame); ok {
+			return iCEMIDataFrame
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastCEMIDataFrame(structType interface{}) CEMIDataFrame {
-    castFunc := func(typ interface{}) CEMIDataFrame {
-        if sCEMIDataFrame, ok := typ.(CEMIDataFrame); ok {
-            return sCEMIDataFrame
-        }
-        if sCEMIDataFrame, ok := typ.(*CEMIDataFrame); ok {
-            return *sCEMIDataFrame
-        }
-        return CEMIDataFrame{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) CEMIDataFrame {
+		if sCEMIDataFrame, ok := typ.(CEMIDataFrame); ok {
+			return sCEMIDataFrame
+		}
+		if sCEMIDataFrame, ok := typ.(*CEMIDataFrame); ok {
+			return *sCEMIDataFrame
+		}
+		return CEMIDataFrame{}
+	}
+	return castFunc(structType)
 }
 
 func (m CEMIDataFrame) LengthInBits() uint16 {
-    var lengthInBits uint16 = 0
+	var lengthInBits uint16 = 0
 
-    // Simple field (standardFrame)
-    lengthInBits += 1
+	// Simple field (standardFrame)
+	lengthInBits += 1
 
-    // Simple field (polling)
-    lengthInBits += 1
+	// Simple field (polling)
+	lengthInBits += 1
 
-    // Simple field (notRepeated)
-    lengthInBits += 1
+	// Simple field (notRepeated)
+	lengthInBits += 1
 
-    // Simple field (notAckFrame)
-    lengthInBits += 1
+	// Simple field (notAckFrame)
+	lengthInBits += 1
 
-    // Enum Field (priority)
-    lengthInBits += 2
+	// Enum Field (priority)
+	lengthInBits += 2
 
-    // Simple field (acknowledgeRequested)
-    lengthInBits += 1
+	// Simple field (acknowledgeRequested)
+	lengthInBits += 1
 
-    // Simple field (errorFlag)
-    lengthInBits += 1
+	// Simple field (errorFlag)
+	lengthInBits += 1
 
-    // Simple field (groupDestinationAddress)
-    lengthInBits += 1
+	// Simple field (groupDestinationAddress)
+	lengthInBits += 1
 
-    // Simple field (hopCount)
-    lengthInBits += 3
+	// Simple field (hopCount)
+	lengthInBits += 3
 
-    // Simple field (extendedFrameFormat)
-    lengthInBits += 4
+	// Simple field (extendedFrameFormat)
+	lengthInBits += 4
 
-    // Simple field (sourceAddress)
-    lengthInBits += m.SourceAddress.LengthInBits()
+	// Simple field (sourceAddress)
+	lengthInBits += m.SourceAddress.LengthInBits()
 
-    // Array field
-    if len(m.DestinationAddress) > 0 {
-        lengthInBits += 8 * uint16(len(m.DestinationAddress))
-    }
+	// Array field
+	if len(m.DestinationAddress) > 0 {
+		lengthInBits += 8 * uint16(len(m.DestinationAddress))
+	}
 
-    // Simple field (dataLength)
-    lengthInBits += 8
+	// Simple field (dataLength)
+	lengthInBits += 8
 
-    // Enum Field (tcpi)
-    lengthInBits += 2
+	// Enum Field (tcpi)
+	lengthInBits += 2
 
-    // Simple field (counter)
-    lengthInBits += 4
+	// Simple field (counter)
+	lengthInBits += 4
 
-    // Enum Field (apci)
-    lengthInBits += 4
+	// Enum Field (apci)
+	lengthInBits += 4
 
-    // Simple field (dataFirstByte)
-    lengthInBits += 6
+	// Simple field (dataFirstByte)
+	lengthInBits += 6
 
-    // Array field
-    if len(m.Data) > 0 {
-        lengthInBits += 8 * uint16(len(m.Data))
-    }
+	// Array field
+	if len(m.Data) > 0 {
+		lengthInBits += 8 * uint16(len(m.Data))
+	}
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m CEMIDataFrame) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func CEMIDataFrameParse(io *utils.ReadBuffer) (spi.Message, error) {
 
-    // Simple Field (standardFrame)
-    standardFrame, _standardFrameErr := io.ReadBit()
-    if _standardFrameErr != nil {
-        return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
-    }
-
-    // Simple Field (polling)
-    polling, _pollingErr := io.ReadBit()
-    if _pollingErr != nil {
-        return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
-    }
-
-    // Simple Field (notRepeated)
-    notRepeated, _notRepeatedErr := io.ReadBit()
-    if _notRepeatedErr != nil {
-        return nil, errors.New("Error parsing 'notRepeated' field " + _notRepeatedErr.Error())
-    }
-
-    // Simple Field (notAckFrame)
-    notAckFrame, _notAckFrameErr := io.ReadBit()
-    if _notAckFrameErr != nil {
-        return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
-    }
-
-    // Enum field (priority)
-    priority, _priorityErr := CEMIPriorityParse(io)
-    if _priorityErr != nil {
-        return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
-    }
-
-    // Simple Field (acknowledgeRequested)
-    acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
-    if _acknowledgeRequestedErr != nil {
-        return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
-    }
-
-    // Simple Field (errorFlag)
-    errorFlag, _errorFlagErr := io.ReadBit()
-    if _errorFlagErr != nil {
-        return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
-    }
-
-    // Simple Field (groupDestinationAddress)
-    groupDestinationAddress, _groupDestinationAddressErr := io.ReadBit()
-    if _groupDestinationAddressErr != nil {
-        return nil, errors.New("Error parsing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
-    }
-
-    // Simple Field (hopCount)
-    hopCount, _hopCountErr := io.ReadUint8(3)
-    if _hopCountErr != nil {
-        return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
-    }
-
-    // Simple Field (extendedFrameFormat)
-    extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
-    if _extendedFrameFormatErr != nil {
-        return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
-    }
-
-    // Simple Field (sourceAddress)
-    _sourceAddressMessage, _err := KNXAddressParse(io)
-    if _err != nil {
-        return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
-    }
-    var sourceAddress IKNXAddress
-    sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
-    if !_sourceAddressOk {
-        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
-    }
-
-    // Array field (destinationAddress)
-    // Count array
-    destinationAddress := make([]int8, uint16(2))
-    for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
-        }
-        destinationAddress[curItem] = _item
-    }
-
-    // Simple Field (dataLength)
-    dataLength, _dataLengthErr := io.ReadUint8(8)
-    if _dataLengthErr != nil {
-        return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Enum field (tcpi)
-    tcpi, _tcpiErr := TPCIParse(io)
-    if _tcpiErr != nil {
-        return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter, _counterErr := io.ReadUint8(4)
-    if _counterErr != nil {
-        return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
-    }
-
-    // Enum field (apci)
-    apci, _apciErr := APCIParse(io)
-    if _apciErr != nil {
-        return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
-    }
-
-    // Simple Field (dataFirstByte)
-    dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
-    if _dataFirstByteErr != nil {
-        return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-    }
-
-    // Array field (data)
-    // Count array
-    data := make([]int8, uint16(dataLength) - uint16(uint16(1)))
-    for curItem := uint16(0); curItem < uint16(uint16(dataLength) - uint16(uint16(1))); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'data' field " + _err.Error())
-        }
-        data[curItem] = _item
-    }
-
-    // Create the instance
-    return NewCEMIDataFrame(standardFrame, polling, notRepeated, notAckFrame, priority, acknowledgeRequested, errorFlag, groupDestinationAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data), nil
+	// Simple Field (standardFrame)
+	standardFrame, _standardFrameErr := io.ReadBit()
+	if _standardFrameErr != nil {
+		return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
+	}
+
+	// Simple Field (polling)
+	polling, _pollingErr := io.ReadBit()
+	if _pollingErr != nil {
+		return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
+	}
+
+	// Simple Field (notRepeated)
+	notRepeated, _notRepeatedErr := io.ReadBit()
+	if _notRepeatedErr != nil {
+		return nil, errors.New("Error parsing 'notRepeated' field " + _notRepeatedErr.Error())
+	}
+
+	// Simple Field (notAckFrame)
+	notAckFrame, _notAckFrameErr := io.ReadBit()
+	if _notAckFrameErr != nil {
+		return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
+	}
+
+	// Enum field (priority)
+	priority, _priorityErr := CEMIPriorityParse(io)
+	if _priorityErr != nil {
+		return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
+	}
+
+	// Simple Field (acknowledgeRequested)
+	acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
+	if _acknowledgeRequestedErr != nil {
+		return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+	}
+
+	// Simple Field (errorFlag)
+	errorFlag, _errorFlagErr := io.ReadBit()
+	if _errorFlagErr != nil {
+		return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
+	}
+
+	// Simple Field (groupDestinationAddress)
+	groupDestinationAddress, _groupDestinationAddressErr := io.ReadBit()
+	if _groupDestinationAddressErr != nil {
+		return nil, errors.New("Error parsing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
+	}
+
+	// Simple Field (hopCount)
+	hopCount, _hopCountErr := io.ReadUint8(3)
+	if _hopCountErr != nil {
+		return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
+	}
+
+	// Simple Field (extendedFrameFormat)
+	extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
+	if _extendedFrameFormatErr != nil {
+		return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+	}
+
+	// Simple Field (sourceAddress)
+	_sourceAddressMessage, _err := KNXAddressParse(io)
+	if _err != nil {
+		return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
+	}
+	var sourceAddress IKNXAddress
+	sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
+	if !_sourceAddressOk {
+		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
+	}
+
+	// Array field (destinationAddress)
+	// Count array
+	destinationAddress := make([]int8, uint16(2))
+	for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+		}
+		destinationAddress[curItem] = _item
+	}
+
+	// Simple Field (dataLength)
+	dataLength, _dataLengthErr := io.ReadUint8(8)
+	if _dataLengthErr != nil {
+		return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
+	}
+
+	// Enum field (tcpi)
+	tcpi, _tcpiErr := TPCIParse(io)
+	if _tcpiErr != nil {
+		return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
+	}
+
+	// Simple Field (counter)
+	counter, _counterErr := io.ReadUint8(4)
+	if _counterErr != nil {
+		return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
+	}
+
+	// Enum field (apci)
+	apci, _apciErr := APCIParse(io)
+	if _apciErr != nil {
+		return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
+	}
+
+	// Simple Field (dataFirstByte)
+	dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
+	if _dataFirstByteErr != nil {
+		return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+	}
+
+	// Array field (data)
+	// Count array
+	data := make([]int8, uint16(dataLength)-uint16(uint16(1)))
+	for curItem := uint16(0); curItem < uint16(uint16(dataLength)-uint16(uint16(1))); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'data' field " + _err.Error())
+		}
+		data[curItem] = _item
+	}
+
+	// Create the instance
+	return NewCEMIDataFrame(standardFrame, polling, notRepeated, notAckFrame, priority, acknowledgeRequested, errorFlag, groupDestinationAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data), nil
 }
 
 func (m CEMIDataFrame) Serialize(io utils.WriteBuffer) error {
 
-    // Simple Field (standardFrame)
-    standardFrame := bool(m.StandardFrame)
-    _standardFrameErr := io.WriteBit((bool) (standardFrame))
-    if _standardFrameErr != nil {
-        return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
-    }
-
-    // Simple Field (polling)
-    polling := bool(m.Polling)
-    _pollingErr := io.WriteBit((bool) (polling))
-    if _pollingErr != nil {
-        return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
-    }
-
-    // Simple Field (notRepeated)
-    notRepeated := bool(m.NotRepeated)
-    _notRepeatedErr := io.WriteBit((bool) (notRepeated))
-    if _notRepeatedErr != nil {
-        return errors.New("Error serializing 'notRepeated' field " + _notRepeatedErr.Error())
-    }
-
-    // Simple Field (notAckFrame)
-    notAckFrame := bool(m.NotAckFrame)
-    _notAckFrameErr := io.WriteBit((bool) (notAckFrame))
-    if _notAckFrameErr != nil {
-        return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
-    }
-
-    // Enum field (priority)
-    priority := CastCEMIPriority(m.Priority)
-    _priorityErr := priority.Serialize(io)
-    if _priorityErr != nil {
-        return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
-    }
-
-    // Simple Field (acknowledgeRequested)
-    acknowledgeRequested := bool(m.AcknowledgeRequested)
-    _acknowledgeRequestedErr := io.WriteBit((bool) (acknowledgeRequested))
-    if _acknowledgeRequestedErr != nil {
-        return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
-    }
-
-    // Simple Field (errorFlag)
-    errorFlag := bool(m.ErrorFlag)
-    _errorFlagErr := io.WriteBit((bool) (errorFlag))
-    if _errorFlagErr != nil {
-        return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
-    }
-
-    // Simple Field (groupDestinationAddress)
-    groupDestinationAddress := bool(m.GroupDestinationAddress)
-    _groupDestinationAddressErr := io.WriteBit((bool) (groupDestinationAddress))
-    if _groupDestinationAddressErr != nil {
-        return errors.New("Error serializing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
-    }
-
-    // Simple Field (hopCount)
-    hopCount := uint8(m.HopCount)
-    _hopCountErr := io.WriteUint8(3, (hopCount))
-    if _hopCountErr != nil {
-        return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
-    }
-
-    // Simple Field (extendedFrameFormat)
-    extendedFrameFormat := uint8(m.ExtendedFrameFormat)
-    _extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
-    if _extendedFrameFormatErr != nil {
-        return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
-    }
-
-    // Simple Field (sourceAddress)
-    sourceAddress := CastIKNXAddress(m.SourceAddress)
-    _sourceAddressErr := sourceAddress.Serialize(io)
-    if _sourceAddressErr != nil {
-        return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
-    }
-
-    // Array Field (destinationAddress)
-    if m.DestinationAddress != nil {
-        for _, _element := range m.DestinationAddress {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Simple Field (dataLength)
-    dataLength := uint8(m.DataLength)
-    _dataLengthErr := io.WriteUint8(8, (dataLength))
-    if _dataLengthErr != nil {
-        return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Enum field (tcpi)
-    tcpi := CastTPCI(m.Tcpi)
-    _tcpiErr := tcpi.Serialize(io)
-    if _tcpiErr != nil {
-        return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter := uint8(m.Counter)
-    _counterErr := io.WriteUint8(4, (counter))
-    if _counterErr != nil {
-        return errors.New("Error serializing 'counter' field " + _counterErr.Error())
-    }
-
-    // Enum field (apci)
-    apci := CastAPCI(m.Apci)
-    _apciErr := apci.Serialize(io)
-    if _apciErr != nil {
-        return errors.New("Error serializing 'apci' field " + _apciErr.Error())
-    }
-
-    // Simple Field (dataFirstByte)
-    dataFirstByte := int8(m.DataFirstByte)
-    _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
-    if _dataFirstByteErr != nil {
-        return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-    }
-
-    // Array Field (data)
-    if m.Data != nil {
-        for _, _element := range m.Data {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'data' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    return nil
+	// Simple Field (standardFrame)
+	standardFrame := bool(m.StandardFrame)
+	_standardFrameErr := io.WriteBit((standardFrame))
+	if _standardFrameErr != nil {
+		return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
+	}
+
+	// Simple Field (polling)
+	polling := bool(m.Polling)
+	_pollingErr := io.WriteBit((polling))
+	if _pollingErr != nil {
+		return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
+	}
+
+	// Simple Field (notRepeated)
+	notRepeated := bool(m.NotRepeated)
+	_notRepeatedErr := io.WriteBit((notRepeated))
+	if _notRepeatedErr != nil {
+		return errors.New("Error serializing 'notRepeated' field " + _notRepeatedErr.Error())
+	}
+
+	// Simple Field (notAckFrame)
+	notAckFrame := bool(m.NotAckFrame)
+	_notAckFrameErr := io.WriteBit((notAckFrame))
+	if _notAckFrameErr != nil {
+		return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
+	}
+
+	// Enum field (priority)
+	priority := CastCEMIPriority(m.Priority)
+	_priorityErr := priority.Serialize(io)
+	if _priorityErr != nil {
+		return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+	}
+
+	// Simple Field (acknowledgeRequested)
+	acknowledgeRequested := bool(m.AcknowledgeRequested)
+	_acknowledgeRequestedErr := io.WriteBit((acknowledgeRequested))
+	if _acknowledgeRequestedErr != nil {
+		return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+	}
+
+	// Simple Field (errorFlag)
+	errorFlag := bool(m.ErrorFlag)
+	_errorFlagErr := io.WriteBit((errorFlag))
+	if _errorFlagErr != nil {
+		return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+	}
+
+	// Simple Field (groupDestinationAddress)
+	groupDestinationAddress := bool(m.GroupDestinationAddress)
+	_groupDestinationAddressErr := io.WriteBit((groupDestinationAddress))
+	if _groupDestinationAddressErr != nil {
+		return errors.New("Error serializing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
+	}
+
+	// Simple Field (hopCount)
+	hopCount := uint8(m.HopCount)
+	_hopCountErr := io.WriteUint8(3, (hopCount))
+	if _hopCountErr != nil {
+		return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+	}
+
+	// Simple Field (extendedFrameFormat)
+	extendedFrameFormat := uint8(m.ExtendedFrameFormat)
+	_extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
+	if _extendedFrameFormatErr != nil {
+		return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+	}
+
+	// Simple Field (sourceAddress)
+	sourceAddress := CastIKNXAddress(m.SourceAddress)
+	_sourceAddressErr := sourceAddress.Serialize(io)
+	if _sourceAddressErr != nil {
+		return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+	}
+
+	// Array Field (destinationAddress)
+	if m.DestinationAddress != nil {
+		for _, _element := range m.DestinationAddress {
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+			}
+		}
+	}
+
+	// Simple Field (dataLength)
+	dataLength := uint8(m.DataLength)
+	_dataLengthErr := io.WriteUint8(8, (dataLength))
+	if _dataLengthErr != nil {
+		return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+	}
+
+	// Enum field (tcpi)
+	tcpi := CastTPCI(m.Tcpi)
+	_tcpiErr := tcpi.Serialize(io)
+	if _tcpiErr != nil {
+		return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+	}
+
+	// Simple Field (counter)
+	counter := uint8(m.Counter)
+	_counterErr := io.WriteUint8(4, (counter))
+	if _counterErr != nil {
+		return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+	}
+
+	// Enum field (apci)
+	apci := CastAPCI(m.Apci)
+	_apciErr := apci.Serialize(io)
+	if _apciErr != nil {
+		return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+	}
+
+	// Simple Field (dataFirstByte)
+	dataFirstByte := int8(m.DataFirstByte)
+	_dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+	if _dataFirstByteErr != nil {
+		return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+	}
+
+	// Array Field (data)
+	if m.Data != nil {
+		for _, _element := range m.Data {
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'data' field " + _elementErr.Error())
+			}
+		}
+	}
+
+	return nil
 }
 
 func (m *CEMIDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "standardFrame":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.StandardFrame = data
-            case "polling":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Polling = data
-            case "notRepeated":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.NotRepeated = data
-            case "notAckFrame":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.NotAckFrame = data
-            case "priority":
-                var data *CEMIPriority
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Priority = data
-            case "acknowledgeRequested":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.AcknowledgeRequested = data
-            case "errorFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ErrorFlag = data
-            case "groupDestinationAddress":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.GroupDestinationAddress = data
-            case "hopCount":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.HopCount = data
-            case "extendedFrameFormat":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ExtendedFrameFormat = data
-            case "sourceAddress":
-                var data *KNXAddress
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceAddress = CastIKNXAddress(data)
-            case "destinationAddress":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
-            case "dataLength":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataLength = data
-            case "tcpi":
-                var data *TPCI
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Tcpi = data
-            case "counter":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Counter = data
-            case "apci":
-                var data *APCI
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Apci = data
-            case "dataFirstByte":
-                var data int8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataFirstByte = data
-            case "data":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.Data = utils.ByteToInt8(_decoded[0:_len])
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "standardFrame":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.StandardFrame = data
+			case "polling":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Polling = data
+			case "notRepeated":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.NotRepeated = data
+			case "notAckFrame":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.NotAckFrame = data
+			case "priority":
+				var data *CEMIPriority
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Priority = data
+			case "acknowledgeRequested":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.AcknowledgeRequested = data
+			case "errorFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ErrorFlag = data
+			case "groupDestinationAddress":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.GroupDestinationAddress = data
+			case "hopCount":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.HopCount = data
+			case "extendedFrameFormat":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ExtendedFrameFormat = data
+			case "sourceAddress":
+				var data *KNXAddress
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceAddress = CastIKNXAddress(data)
+			case "destinationAddress":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
+			case "dataLength":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DataLength = data
+			case "tcpi":
+				var data *TPCI
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Tcpi = data
+			case "counter":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Counter = data
+			case "apci":
+				var data *APCI
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Apci = data
+			case "dataFirstByte":
+				var data int8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DataFirstByte = data
+			case "data":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.Data = utils.ByteToInt8(_decoded[0:_len])
+			}
+		}
+	}
 }
 
 func (m CEMIDataFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIDataFrame"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.StandardFrame, xml.StartElement{Name: xml.Name{Local: "standardFrame"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Polling, xml.StartElement{Name: xml.Name{Local: "polling"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.NotRepeated, xml.StartElement{Name: xml.Name{Local: "notRepeated"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.NotAckFrame, xml.StartElement{Name: xml.Name{Local: "notAckFrame"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.GroupDestinationAddress, xml.StartElement{Name: xml.Name{Local: "groupDestinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
-        return err
-    }
-    _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
-    base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
-    if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
-        return err
-    }
-    _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
-    base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
-    if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIDataFrame"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.StandardFrame, xml.StartElement{Name: xml.Name{Local: "standardFrame"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Polling, xml.StartElement{Name: xml.Name{Local: "polling"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.NotRepeated, xml.StartElement{Name: xml.Name{Local: "notRepeated"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.NotAckFrame, xml.StartElement{Name: xml.Name{Local: "notAckFrame"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.GroupDestinationAddress, xml.StartElement{Name: xml.Name{Local: "groupDestinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+		return err
+	}
+	_encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
+	base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
+	if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
+		return err
+	}
+	_encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
+	base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
+	if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
index ff44a54..bb9dc89 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
@@ -19,294 +19,291 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"encoding/xml"
+	"errors"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
 type CEMIFrame struct {
-    Repeated bool
-    Priority ICEMIPriority
-    AcknowledgeRequested bool
-    ErrorFlag bool
-
+	Repeated             bool
+	Priority             ICEMIPriority
+	AcknowledgeRequested bool
+	ErrorFlag            bool
 }
 
 // The corresponding interface
 type ICEMIFrame interface {
-    spi.Message
-    NotAckFrame() bool
-    Polling() bool
-    StandardFrame() bool
-    Serialize(io utils.WriteBuffer) error
+	spi.Message
+	NotAckFrame() bool
+	Polling() bool
+	StandardFrame() bool
+	Serialize(io utils.WriteBuffer) error
 }
 
 type CEMIFrameInitializer interface {
-    initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message
+	initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message
 }
 
 func CEMIFrameNotAckFrame(m ICEMIFrame) bool {
-    return m.NotAckFrame()
+	return m.NotAckFrame()
 }
 
 func CEMIFramePolling(m ICEMIFrame) bool {
-    return m.Polling()
+	return m.Polling()
 }
 
 func CEMIFrameStandardFrame(m ICEMIFrame) bool {
-    return m.StandardFrame()
+	return m.StandardFrame()
 }
 
-
 func CastICEMIFrame(structType interface{}) ICEMIFrame {
-    castFunc := func(typ interface{}) ICEMIFrame {
-        if iCEMIFrame, ok := typ.(ICEMIFrame); ok {
-            return iCEMIFrame
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ICEMIFrame {
+		if iCEMIFrame, ok := typ.(ICEMIFrame); ok {
+			return iCEMIFrame
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastCEMIFrame(structType interface{}) CEMIFrame {
-    castFunc := func(typ interface{}) CEMIFrame {
-        if sCEMIFrame, ok := typ.(CEMIFrame); ok {
-            return sCEMIFrame
-        }
-        if sCEMIFrame, ok := typ.(*CEMIFrame); ok {
-            return *sCEMIFrame
-        }
-        return CEMIFrame{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) CEMIFrame {
+		if sCEMIFrame, ok := typ.(CEMIFrame); ok {
+			return sCEMIFrame
+		}
+		if sCEMIFrame, ok := typ.(*CEMIFrame); ok {
+			return *sCEMIFrame
+		}
+		return CEMIFrame{}
+	}
+	return castFunc(structType)
 }
 
 func (m CEMIFrame) LengthInBits() uint16 {
-    var lengthInBits uint16 = 0
+	var lengthInBits uint16 = 0
 
-    // Discriminator Field (standardFrame)
-    lengthInBits += 1
+	// Discriminator Field (standardFrame)
+	lengthInBits += 1
 
-    // Discriminator Field (polling)
-    lengthInBits += 1
+	// Discriminator Field (polling)
+	lengthInBits += 1
 
-    // Simple field (repeated)
-    lengthInBits += 1
+	// Simple field (repeated)
+	lengthInBits += 1
 
-    // Discriminator Field (notAckFrame)
-    lengthInBits += 1
+	// Discriminator Field (notAckFrame)
+	lengthInBits += 1
 
-    // Enum Field (priority)
-    lengthInBits += 2
+	// Enum Field (priority)
+	lengthInBits += 2
 
-    // Simple field (acknowledgeRequested)
-    lengthInBits += 1
+	// Simple field (acknowledgeRequested)
+	lengthInBits += 1
 
-    // Simple field (errorFlag)
-    lengthInBits += 1
+	// Simple field (errorFlag)
+	lengthInBits += 1
 
-    // Length of sub-type elements will be added by sub-type...
+	// Length of sub-type elements will be added by sub-type...
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m CEMIFrame) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func CEMIFrameParse(io *utils.ReadBuffer) (spi.Message, error) {
 
-    // Discriminator Field (standardFrame) (Used as input to a switch field)
-    standardFrame, _standardFrameErr := io.ReadBit()
-    if _standardFrameErr != nil {
-        return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
-    }
-
-    // Discriminator Field (polling) (Used as input to a switch field)
-    polling, _pollingErr := io.ReadBit()
-    if _pollingErr != nil {
-        return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
-    }
-
-    // Simple Field (repeated)
-    repeated, _repeatedErr := io.ReadBit()
-    if _repeatedErr != nil {
-        return nil, errors.New("Error parsing 'repeated' field " + _repeatedErr.Error())
-    }
-
-    // Discriminator Field (notAckFrame) (Used as input to a switch field)
-    notAckFrame, _notAckFrameErr := io.ReadBit()
-    if _notAckFrameErr != nil {
-        return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
-    }
-
-    // Enum field (priority)
-    priority, _priorityErr := CEMIPriorityParse(io)
-    if _priorityErr != nil {
-        return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
-    }
-
-    // Simple Field (acknowledgeRequested)
-    acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
-    if _acknowledgeRequestedErr != nil {
-        return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
-    }
-
-    // Simple Field (errorFlag)
-    errorFlag, _errorFlagErr := io.ReadBit()
-    if _errorFlagErr != nil {
-        return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
-    }
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    var initializer CEMIFrameInitializer
-    var typeSwitchError error
-    switch {
-    case notAckFrame == false:
-        initializer, typeSwitchError = CEMIFrameAckParse(io)
-    case notAckFrame == true && standardFrame == true && polling == false:
-        initializer, typeSwitchError = CEMIFrameDataParse(io)
-    case notAckFrame == true && standardFrame == true && polling == true:
-        initializer, typeSwitchError = CEMIFramePollingDataParse(io)
-    case notAckFrame == true && standardFrame == false && polling == false:
-        initializer, typeSwitchError = CEMIFrameDataExtParse(io)
-    case notAckFrame == true && standardFrame == false && polling == true:
-        initializer, typeSwitchError = CEMIFramePollingDataExtParse(io)
-    }
-    if typeSwitchError != nil {
-        return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
-    }
-
-    // Create the instance
-    return initializer.initialize(repeated, priority, acknowledgeRequested, errorFlag), nil
+	// Discriminator Field (standardFrame) (Used as input to a switch field)
+	standardFrame, _standardFrameErr := io.ReadBit()
+	if _standardFrameErr != nil {
+		return nil, errors.New("Error parsing 'standardFrame' field " + _standardFrameErr.Error())
+	}
+
+	// Discriminator Field (polling) (Used as input to a switch field)
+	polling, _pollingErr := io.ReadBit()
+	if _pollingErr != nil {
+		return nil, errors.New("Error parsing 'polling' field " + _pollingErr.Error())
+	}
+
+	// Simple Field (repeated)
+	repeated, _repeatedErr := io.ReadBit()
+	if _repeatedErr != nil {
+		return nil, errors.New("Error parsing 'repeated' field " + _repeatedErr.Error())
+	}
+
+	// Discriminator Field (notAckFrame) (Used as input to a switch field)
+	notAckFrame, _notAckFrameErr := io.ReadBit()
+	if _notAckFrameErr != nil {
+		return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
+	}
+
+	// Enum field (priority)
+	priority, _priorityErr := CEMIPriorityParse(io)
+	if _priorityErr != nil {
+		return nil, errors.New("Error parsing 'priority' field " + _priorityErr.Error())
+	}
+
+	// Simple Field (acknowledgeRequested)
+	acknowledgeRequested, _acknowledgeRequestedErr := io.ReadBit()
+	if _acknowledgeRequestedErr != nil {
+		return nil, errors.New("Error parsing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+	}
+
+	// Simple Field (errorFlag)
+	errorFlag, _errorFlagErr := io.ReadBit()
+	if _errorFlagErr != nil {
+		return nil, errors.New("Error parsing 'errorFlag' field " + _errorFlagErr.Error())
+	}
+
+	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+	var initializer CEMIFrameInitializer
+	var typeSwitchError error
+	switch {
+	case notAckFrame == false:
+		initializer, typeSwitchError = CEMIFrameAckParse(io)
+	case notAckFrame == true && standardFrame == true && polling == false:
+		initializer, typeSwitchError = CEMIFrameDataParse(io)
+	case notAckFrame == true && standardFrame == true && polling == true:
+		initializer, typeSwitchError = CEMIFramePollingDataParse(io)
+	case notAckFrame == true && standardFrame == false && polling == false:
+		initializer, typeSwitchError = CEMIFrameDataExtParse(io)
+	case notAckFrame == true && standardFrame == false && polling == true:
+		initializer, typeSwitchError = CEMIFramePollingDataExtParse(io)
+	}
+	if typeSwitchError != nil {
+		return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+	}
+
+	// Create the instance
+	return initializer.initialize(repeated, priority, acknowledgeRequested, errorFlag), nil
 }
 
 func CEMIFrameSerialize(io utils.WriteBuffer, m CEMIFrame, i ICEMIFrame, childSerialize func() error) error {
 
-    // Discriminator Field (standardFrame) (Used as input to a switch field)
-    standardFrame := bool(i.StandardFrame())
-    _standardFrameErr := io.WriteBit((bool) (standardFrame))
-    if _standardFrameErr != nil {
-        return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
-    }
-
-    // Discriminator Field (polling) (Used as input to a switch field)
-    polling := bool(i.Polling())
-    _pollingErr := io.WriteBit((bool) (polling))
-    if _pollingErr != nil {
-        return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
-    }
-
-    // Simple Field (repeated)
-    repeated := bool(m.Repeated)
-    _repeatedErr := io.WriteBit((bool) (repeated))
-    if _repeatedErr != nil {
-        return errors.New("Error serializing 'repeated' field " + _repeatedErr.Error())
-    }
-
-    // Discriminator Field (notAckFrame) (Used as input to a switch field)
-    notAckFrame := bool(i.NotAckFrame())
-    _notAckFrameErr := io.WriteBit((bool) (notAckFrame))
-    if _notAckFrameErr != nil {
-        return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
-    }
-
-    // Enum field (priority)
-    priority := CastCEMIPriority(m.Priority)
-    _priorityErr := priority.Serialize(io)
-    if _priorityErr != nil {
-        return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
-    }
-
-    // Simple Field (acknowledgeRequested)
-    acknowledgeRequested := bool(m.AcknowledgeRequested)
-    _acknowledgeRequestedErr := io.WriteBit((bool) (acknowledgeRequested))
-    if _acknowledgeRequestedErr != nil {
-        return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
-    }
-
-    // Simple Field (errorFlag)
-    errorFlag := bool(m.ErrorFlag)
-    _errorFlagErr := io.WriteBit((bool) (errorFlag))
-    if _errorFlagErr != nil {
-        return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
-    }
-
-    // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-    _typeSwitchErr := childSerialize()
-    if _typeSwitchErr != nil {
-        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
-    }
-
-    return nil
+	// Discriminator Field (standardFrame) (Used as input to a switch field)
+	standardFrame := bool(i.StandardFrame())
+	_standardFrameErr := io.WriteBit((standardFrame))
+	if _standardFrameErr != nil {
+		return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
+	}
+
+	// Discriminator Field (polling) (Used as input to a switch field)
+	polling := bool(i.Polling())
+	_pollingErr := io.WriteBit((polling))
+	if _pollingErr != nil {
+		return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
+	}
+
+	// Simple Field (repeated)
+	repeated := bool(m.Repeated)
+	_repeatedErr := io.WriteBit((repeated))
+	if _repeatedErr != nil {
+		return errors.New("Error serializing 'repeated' field " + _repeatedErr.Error())
+	}
+
+	// Discriminator Field (notAckFrame) (Used as input to a switch field)
+	notAckFrame := bool(i.NotAckFrame())
+	_notAckFrameErr := io.WriteBit((notAckFrame))
+	if _notAckFrameErr != nil {
+		return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
+	}
+
+	// Enum field (priority)
+	priority := CastCEMIPriority(m.Priority)
+	_priorityErr := priority.Serialize(io)
+	if _priorityErr != nil {
+		return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+	}
+
+	// Simple Field (acknowledgeRequested)
+	acknowledgeRequested := bool(m.AcknowledgeRequested)
+	_acknowledgeRequestedErr := io.WriteBit((acknowledgeRequested))
+	if _acknowledgeRequestedErr != nil {
+		return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+	}
+
+	// Simple Field (errorFlag)
+	errorFlag := bool(m.ErrorFlag)
+	_errorFlagErr := io.WriteBit((errorFlag))
+	if _errorFlagErr != nil {
+		return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+	}
+
+	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
+
+	return nil
 }
 
 func (m *CEMIFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "repeated":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Repeated = data
-            case "priority":
-                var data *CEMIPriority
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Priority = data
-            case "acknowledgeRequested":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.AcknowledgeRequested = data
-            case "errorFlag":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ErrorFlag = data
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "repeated":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Repeated = data
+			case "priority":
+				var data *CEMIPriority
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Priority = data
+			case "acknowledgeRequested":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.AcknowledgeRequested = data
+			case "errorFlag":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ErrorFlag = data
+			}
+		}
+	}
 }
 
 func (m CEMIFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrame"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Repeated, xml.StartElement{Name: xml.Name{Local: "repeated"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrame"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Repeated, xml.StartElement{Name: xml.Name{Local: "repeated"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.AcknowledgeRequested, xml.StartElement{Name: xml.Name{Local: "acknowledgeRequested"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ErrorFlag, xml.StartElement{Name: xml.Name{Local: "errorFlag"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
index fb6b6a7..52563a0 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
@@ -19,452 +19,451 @@
 package model
 
 import (
-    "encoding/base64"
-    "encoding/xml"
-    "errors"
-    "io"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "reflect"
+	"encoding/base64"
+	"encoding/xml"
+	"errors"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
 type CEMIFrameData struct {
-    SourceAddress IKNXAddress
-    DestinationAddress []int8
-    GroupAddress bool
-    HopCount uint8
-    DataLength uint8
-    Tcpi ITPCI
-    Counter uint8
-    Apci IAPCI
-    DataFirstByte int8
-    Data []int8
-    Crc uint8
-    CEMIFrame
+	SourceAddress      IKNXAddress
+	DestinationAddress []int8
+	GroupAddress       bool
+	HopCount           uint8
+	DataLength         uint8
+	Tcpi               ITPCI
+	Counter            uint8
+	Apci               IAPCI
+	DataFirstByte      int8
+	Data               []int8
+	Crc                uint8
+	CEMIFrame
 }
 
 // The corresponding interface
 type ICEMIFrameData interface {
-    ICEMIFrame
-    Serialize(io utils.WriteBuffer) error
+	ICEMIFrame
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m CEMIFrameData) NotAckFrame() bool {
-    return true
+	return true
 }
 
 func (m CEMIFrameData) StandardFrame() bool {
-    return true
+	return true
 }
 
 func (m CEMIFrameData) Polling() bool {
-    return false
+	return false
 }
 
 func (m CEMIFrameData) initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message {
-    m.Repeated = repeated
-    m.Priority = priority
-    m.AcknowledgeRequested = acknowledgeRequested
-    m.ErrorFlag = errorFlag
-    return m
+	m.Repeated = repeated
+	m.Priority = priority
+	m.AcknowledgeRequested = acknowledgeRequested
+	m.ErrorFlag = errorFlag
+	return m
 }
 
 func NewCEMIFrameData(sourceAddress IKNXAddress, destinationAddress []int8, groupAddress bool, hopCount uint8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8, crc uint8) CEMIFrameInitializer {
-    return &CEMIFrameData{SourceAddress: sourceAddress, DestinationAddress: destinationAddress, GroupAddress: groupAddress, HopCount: hopCount, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
+	return &CEMIFrameData{SourceAddress: sourceAddress, DestinationAddress: destinationAddress, GroupAddress: groupAddress, HopCount: hopCount, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
 }
 
 func CastICEMIFrameData(structType interface{}) ICEMIFrameData {
-    castFunc := func(typ interface{}) ICEMIFrameData {
-        if iCEMIFrameData, ok := typ.(ICEMIFrameData); ok {
-            return iCEMIFrameData
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ICEMIFrameData {
+		if iCEMIFrameData, ok := typ.(ICEMIFrameData); ok {
+			return iCEMIFrameData
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastCEMIFrameData(structType interface{}) CEMIFrameData {
-    castFunc := func(typ interface{}) CEMIFrameData {
-        if sCEMIFrameData, ok := typ.(CEMIFrameData); ok {
-            return sCEMIFrameData
-        }
-        if sCEMIFrameData, ok := typ.(*CEMIFrameData); ok {
-            return *sCEMIFrameData
-        }
-        return CEMIFrameData{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) CEMIFrameData {
+		if sCEMIFrameData, ok := typ.(CEMIFrameData); ok {
+			return sCEMIFrameData
+		}
+		if sCEMIFrameData, ok := typ.(*CEMIFrameData); ok {
+			return *sCEMIFrameData
+		}
+		return CEMIFrameData{}
+	}
+	return castFunc(structType)
 }
 
 func (m CEMIFrameData) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
+	var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
 
-    // Simple field (sourceAddress)
-    lengthInBits += m.SourceAddress.LengthInBits()
+	// Simple field (sourceAddress)
+	lengthInBits += m.SourceAddress.LengthInBits()
 
-    // Array field
-    if len(m.DestinationAddress) > 0 {
-        lengthInBits += 8 * uint16(len(m.DestinationAddress))
-    }
+	// Array field
+	if len(m.DestinationAddress) > 0 {
+		lengthInBits += 8 * uint16(len(m.DestinationAddress))
+	}
 
-    // Simple field (groupAddress)
-    lengthInBits += 1
+	// Simple field (groupAddress)
+	lengthInBits += 1
 
-    // Simple field (hopCount)
-    lengthInBits += 3
+	// Simple field (hopCount)
+	lengthInBits += 3
 
-    // Simple field (dataLength)
-    lengthInBits += 4
+	// Simple field (dataLength)
+	lengthInBits += 4
 
-    // Enum Field (tcpi)
-    lengthInBits += 2
+	// Enum Field (tcpi)
+	lengthInBits += 2
 
-    // Simple field (counter)
-    lengthInBits += 4
+	// Simple field (counter)
+	lengthInBits += 4
 
-    // Enum Field (apci)
-    lengthInBits += 4
+	// Enum Field (apci)
+	lengthInBits += 4
 
-    // Simple field (dataFirstByte)
-    lengthInBits += 6
+	// Simple field (dataFirstByte)
+	lengthInBits += 6
 
-    // Array field
-    if len(m.Data) > 0 {
-        lengthInBits += 8 * uint16(len(m.Data))
-    }
+	// Array field
+	if len(m.Data) > 0 {
+		lengthInBits += 8 * uint16(len(m.Data))
+	}
 
-    // Simple field (crc)
-    lengthInBits += 8
+	// Simple field (crc)
+	lengthInBits += 8
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m CEMIFrameData) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func CEMIFrameDataParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
-    // Simple Field (sourceAddress)
-    _sourceAddressMessage, _err := KNXAddressParse(io)
-    if _err != nil {
-        return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
-    }
-    var sourceAddress IKNXAddress
-    sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
-    if !_sourceAddressOk {
-        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
-    }
-
-    // Array field (destinationAddress)
-    // Count array
-    destinationAddress := make([]int8, uint16(2))
-    for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
-        }
-        destinationAddress[curItem] = _item
-    }
-
-    // Simple Field (groupAddress)
-    groupAddress, _groupAddressErr := io.ReadBit()
-    if _groupAddressErr != nil {
-        return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
-    }
-
-    // Simple Field (hopCount)
-    hopCount, _hopCountErr := io.ReadUint8(3)
-    if _hopCountErr != nil {
-        return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
-    }
-
-    // Simple Field (dataLength)
-    dataLength, _dataLengthErr := io.ReadUint8(4)
-    if _dataLengthErr != nil {
-        return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Enum field (tcpi)
-    tcpi, _tcpiErr := TPCIParse(io)
-    if _tcpiErr != nil {
-        return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter, _counterErr := io.ReadUint8(4)
-    if _counterErr != nil {
-        return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
-    }
-
-    // Enum field (apci)
-    apci, _apciErr := APCIParse(io)
-    if _apciErr != nil {
-        return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
-    }
-
-    // Simple Field (dataFirstByte)
-    dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
-    if _dataFirstByteErr != nil {
-        return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-    }
-
-    // Array field (data)
-    // Count array
-    data := make([]int8, uint16(dataLength) - uint16(uint16(1)))
-    for curItem := uint16(0); curItem < uint16(uint16(dataLength) - uint16(uint16(1))); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'data' field " + _err.Error())
-        }
-        data[curItem] = _item
-    }
-
-    // Simple Field (crc)
-    crc, _crcErr := io.ReadUint8(8)
-    if _crcErr != nil {
-        return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
-    }
-
-    // Create the instance
-    return NewCEMIFrameData(sourceAddress, destinationAddress, groupAddress, hopCount, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
+	// Simple Field (sourceAddress)
+	_sourceAddressMessage, _err := KNXAddressParse(io)
+	if _err != nil {
+		return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
+	}
+	var sourceAddress IKNXAddress
+	sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
+	if !_sourceAddressOk {
+		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
+	}
+
+	// Array field (destinationAddress)
+	// Count array
+	destinationAddress := make([]int8, uint16(2))
+	for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+		}
+		destinationAddress[curItem] = _item
+	}
+
+	// Simple Field (groupAddress)
+	groupAddress, _groupAddressErr := io.ReadBit()
+	if _groupAddressErr != nil {
+		return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
+	}
+
+	// Simple Field (hopCount)
+	hopCount, _hopCountErr := io.ReadUint8(3)
+	if _hopCountErr != nil {
+		return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
+	}
+
+	// Simple Field (dataLength)
+	dataLength, _dataLengthErr := io.ReadUint8(4)
+	if _dataLengthErr != nil {
+		return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
+	}
+
+	// Enum field (tcpi)
+	tcpi, _tcpiErr := TPCIParse(io)
+	if _tcpiErr != nil {
+		return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
+	}
+
+	// Simple Field (counter)
+	counter, _counterErr := io.ReadUint8(4)
+	if _counterErr != nil {
+		return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
+	}
+
+	// Enum field (apci)
+	apci, _apciErr := APCIParse(io)
+	if _apciErr != nil {
+		return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
+	}
+
+	// Simple Field (dataFirstByte)
+	dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
+	if _dataFirstByteErr != nil {
+		return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+	}
+
+	// Array field (data)
+	// Count array
+	data := make([]int8, uint16(dataLength)-uint16(uint16(1)))
+	for curItem := uint16(0); curItem < uint16(uint16(dataLength)-uint16(uint16(1))); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'data' field " + _err.Error())
+		}
+		data[curItem] = _item
+	}
+
+	// Simple Field (crc)
+	crc, _crcErr := io.ReadUint8(8)
+	if _crcErr != nil {
+		return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
+	}
+
+	// Create the instance
+	return NewCEMIFrameData(sourceAddress, destinationAddress, groupAddress, hopCount, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
 }
 
 func (m CEMIFrameData) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Simple Field (sourceAddress)
-    sourceAddress := CastIKNXAddress(m.SourceAddress)
-    _sourceAddressErr := sourceAddress.Serialize(io)
-    if _sourceAddressErr != nil {
-        return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
-    }
-
-    // Array Field (destinationAddress)
-    if m.DestinationAddress != nil {
-        for _, _element := range m.DestinationAddress {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Simple Field (groupAddress)
-    groupAddress := bool(m.GroupAddress)
-    _groupAddressErr := io.WriteBit((bool) (groupAddress))
-    if _groupAddressErr != nil {
-        return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
-    }
-
-    // Simple Field (hopCount)
-    hopCount := uint8(m.HopCount)
-    _hopCountErr := io.WriteUint8(3, (hopCount))
-    if _hopCountErr != nil {
-        return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
-    }
-
-    // Simple Field (dataLength)
-    dataLength := uint8(m.DataLength)
-    _dataLengthErr := io.WriteUint8(4, (dataLength))
-    if _dataLengthErr != nil {
-        return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Enum field (tcpi)
-    tcpi := CastTPCI(m.Tcpi)
-    _tcpiErr := tcpi.Serialize(io)
-    if _tcpiErr != nil {
-        return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter := uint8(m.Counter)
-    _counterErr := io.WriteUint8(4, (counter))
-    if _counterErr != nil {
-        return errors.New("Error serializing 'counter' field " + _counterErr.Error())
-    }
-
-    // Enum field (apci)
-    apci := CastAPCI(m.Apci)
-    _apciErr := apci.Serialize(io)
-    if _apciErr != nil {
-        return errors.New("Error serializing 'apci' field " + _apciErr.Error())
-    }
-
-    // Simple Field (dataFirstByte)
-    dataFirstByte := int8(m.DataFirstByte)
-    _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
-    if _dataFirstByteErr != nil {
-        return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-    }
-
-    // Array Field (data)
-    if m.Data != nil {
-        for _, _element := range m.Data {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'data' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Simple Field (crc)
-    crc := uint8(m.Crc)
-    _crcErr := io.WriteUint8(8, (crc))
-    if _crcErr != nil {
-        return errors.New("Error serializing 'crc' field " + _crcErr.Error())
-    }
-
-        return nil
-    }
-    return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	ser := func() error {
+
+		// Simple Field (sourceAddress)
+		sourceAddress := CastIKNXAddress(m.SourceAddress)
+		_sourceAddressErr := sourceAddress.Serialize(io)
+		if _sourceAddressErr != nil {
+			return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+		}
+
+		// Array Field (destinationAddress)
+		if m.DestinationAddress != nil {
+			for _, _element := range m.DestinationAddress {
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+				}
+			}
+		}
+
+		// Simple Field (groupAddress)
+		groupAddress := bool(m.GroupAddress)
+		_groupAddressErr := io.WriteBit((groupAddress))
+		if _groupAddressErr != nil {
+			return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
+		}
+
+		// Simple Field (hopCount)
+		hopCount := uint8(m.HopCount)
+		_hopCountErr := io.WriteUint8(3, (hopCount))
+		if _hopCountErr != nil {
+			return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+		}
+
+		// Simple Field (dataLength)
+		dataLength := uint8(m.DataLength)
+		_dataLengthErr := io.WriteUint8(4, (dataLength))
+		if _dataLengthErr != nil {
+			return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+		}
+
+		// Enum field (tcpi)
+		tcpi := CastTPCI(m.Tcpi)
+		_tcpiErr := tcpi.Serialize(io)
+		if _tcpiErr != nil {
+			return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+		}
+
+		// Simple Field (counter)
+		counter := uint8(m.Counter)
+		_counterErr := io.WriteUint8(4, (counter))
+		if _counterErr != nil {
+			return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+		}
+
+		// Enum field (apci)
+		apci := CastAPCI(m.Apci)
+		_apciErr := apci.Serialize(io)
+		if _apciErr != nil {
+			return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+		}
+
+		// Simple Field (dataFirstByte)
+		dataFirstByte := int8(m.DataFirstByte)
+		_dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+		if _dataFirstByteErr != nil {
+			return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+		}
+
+		// Array Field (data)
+		if m.Data != nil {
+			for _, _element := range m.Data {
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
+			}
+		}
+
+		// Simple Field (crc)
+		crc := uint8(m.Crc)
+		_crcErr := io.WriteUint8(8, (crc))
+		if _crcErr != nil {
+			return errors.New("Error serializing 'crc' field " + _crcErr.Error())
+		}
+
+		return nil
+	}
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
 
 func (m *CEMIFrameData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "sourceAddress":
-                var data *KNXAddress
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceAddress = CastIKNXAddress(data)
-            case "destinationAddress":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
-            case "groupAddress":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.GroupAddress = data
-            case "hopCount":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.HopCount = data
-            case "dataLength":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataLength = data
-            case "tcpi":
-                var data *TPCI
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Tcpi = data
-            case "counter":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Counter = data
-            case "apci":
-                var data *APCI
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Apci = data
-            case "dataFirstByte":
-                var data int8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataFirstByte = data
-            case "data":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.Data = utils.ByteToInt8(_decoded[0:_len])
-            case "crc":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Crc = data
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "sourceAddress":
+				var data *KNXAddress
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceAddress = CastIKNXAddress(data)
+			case "destinationAddress":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
+			case "groupAddress":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.GroupAddress = data
+			case "hopCount":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.HopCount = data
+			case "dataLength":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DataLength = data
+			case "tcpi":
+				var data *TPCI
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Tcpi = data
+			case "counter":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Counter = data
+			case "apci":
+				var data *APCI
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Apci = data
+			case "dataFirstByte":
+				var data int8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DataFirstByte = data
+			case "data":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.Data = utils.ByteToInt8(_decoded[0:_len])
+			case "crc":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Crc = data
+			}
+		}
+	}
 }
 
 func (m CEMIFrameData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameData"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
-        return err
-    }
-    _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
-    base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
-    if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
-        return err
-    }
-    _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
-    base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
-    if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameData"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+		return err
+	}
+	_encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
+	base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
+	if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
+		return err
+	}
+	_encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
+	base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
+	if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
index 58200a2..b1b3873 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
@@ -19,478 +19,477 @@
 package model
 
 import (
-    "encoding/base64"
-    "encoding/xml"
-    "errors"
-    "io"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
-    "reflect"
+	"encoding/base64"
+	"encoding/xml"
+	"errors"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
 type CEMIFrameDataExt struct {
-    GroupAddress bool
-    HopCount uint8
-    ExtendedFrameFormat uint8
-    SourceAddress IKNXAddress
-    DestinationAddress []int8
-    DataLength uint8
-    Tcpi ITPCI
-    Counter uint8
-    Apci IAPCI
-    DataFirstByte int8
-    Data []int8
-    Crc uint8
-    CEMIFrame
+	GroupAddress        bool
+	HopCount            uint8
+	ExtendedFrameFormat uint8
+	SourceAddress       IKNXAddress
+	DestinationAddress  []int8
+	DataLength          uint8
+	Tcpi                ITPCI
+	Counter             uint8
+	Apci                IAPCI
+	DataFirstByte       int8
+	Data                []int8
+	Crc                 uint8
+	CEMIFrame
 }
 
 // The corresponding interface
 type ICEMIFrameDataExt interface {
-    ICEMIFrame
-    Serialize(io utils.WriteBuffer) error
+	ICEMIFrame
+	Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m CEMIFrameDataExt) NotAckFrame() bool {
-    return true
+	return true
 }
 
 func (m CEMIFrameDataExt) StandardFrame() bool {
-    return false
+	return false
 }
 
 func (m CEMIFrameDataExt) Polling() bool {
-    return false
+	return false
 }
 
 func (m CEMIFrameDataExt) initialize(repeated bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool) spi.Message {
-    m.Repeated = repeated
-    m.Priority = priority
-    m.AcknowledgeRequested = acknowledgeRequested
-    m.ErrorFlag = errorFlag
-    return m
+	m.Repeated = repeated
+	m.Priority = priority
+	m.AcknowledgeRequested = acknowledgeRequested
+	m.ErrorFlag = errorFlag
+	return m
 }
 
 func NewCEMIFrameDataExt(groupAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress IKNXAddress, destinationAddress []int8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8, crc uint8) CEMIFrameInitializer {
-    return &CEMIFrameDataExt{GroupAddress: groupAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
+	return &CEMIFrameDataExt{GroupAddress: groupAddress, HopCount: hopCount, ExtendedFrameFormat: extendedFrameFormat, SourceAddress: sourceAddress, DestinationAddress: destinationAddress, DataLength: dataLength, Tcpi: tcpi, Counter: counter, Apci: apci, DataFirstByte: dataFirstByte, Data: data, Crc: crc}
 }
 
 func CastICEMIFrameDataExt(structType interface{}) ICEMIFrameDataExt {
-    castFunc := func(typ interface{}) ICEMIFrameDataExt {
-        if iCEMIFrameDataExt, ok := typ.(ICEMIFrameDataExt); ok {
-            return iCEMIFrameDataExt
-        }
-        return nil
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ICEMIFrameDataExt {
+		if iCEMIFrameDataExt, ok := typ.(ICEMIFrameDataExt); ok {
+			return iCEMIFrameDataExt
+		}
+		return nil
+	}
+	return castFunc(structType)
 }
 
 func CastCEMIFrameDataExt(structType interface{}) CEMIFrameDataExt {
-    castFunc := func(typ interface{}) CEMIFrameDataExt {
-        if sCEMIFrameDataExt, ok := typ.(CEMIFrameDataExt); ok {
-            return sCEMIFrameDataExt
-        }
-        if sCEMIFrameDataExt, ok := typ.(*CEMIFrameDataExt); ok {
-            return *sCEMIFrameDataExt
-        }
-        return CEMIFrameDataExt{}
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) CEMIFrameDataExt {
+		if sCEMIFrameDataExt, ok := typ.(CEMIFrameDataExt); ok {
+			return sCEMIFrameDataExt
+		}
+		if sCEMIFrameDataExt, ok := typ.(*CEMIFrameDataExt); ok {
+			return *sCEMIFrameDataExt
+		}
+		return CEMIFrameDataExt{}
+	}
+	return castFunc(structType)
 }
 
 func (m CEMIFrameDataExt) LengthInBits() uint16 {
-    var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
+	var lengthInBits uint16 = m.CEMIFrame.LengthInBits()
 
-    // Simple field (groupAddress)
-    lengthInBits += 1
+	// Simple field (groupAddress)
+	lengthInBits += 1
 
-    // Simple field (hopCount)
-    lengthInBits += 3
+	// Simple field (hopCount)
+	lengthInBits += 3
 
-    // Simple field (extendedFrameFormat)
-    lengthInBits += 4
+	// Simple field (extendedFrameFormat)
+	lengthInBits += 4
 
-    // Simple field (sourceAddress)
-    lengthInBits += m.SourceAddress.LengthInBits()
+	// Simple field (sourceAddress)
+	lengthInBits += m.SourceAddress.LengthInBits()
 
-    // Array field
-    if len(m.DestinationAddress) > 0 {
-        lengthInBits += 8 * uint16(len(m.DestinationAddress))
-    }
+	// Array field
+	if len(m.DestinationAddress) > 0 {
+		lengthInBits += 8 * uint16(len(m.DestinationAddress))
+	}
 
-    // Simple field (dataLength)
-    lengthInBits += 8
+	// Simple field (dataLength)
+	lengthInBits += 8
 
-    // Enum Field (tcpi)
-    lengthInBits += 2
+	// Enum Field (tcpi)
+	lengthInBits += 2
 
-    // Simple field (counter)
-    lengthInBits += 4
+	// Simple field (counter)
+	lengthInBits += 4
 
-    // Enum Field (apci)
-    lengthInBits += 4
+	// Enum Field (apci)
+	lengthInBits += 4
 
-    // Simple field (dataFirstByte)
-    lengthInBits += 6
+	// Simple field (dataFirstByte)
+	lengthInBits += 6
 
-    // Array field
-    if len(m.Data) > 0 {
-        lengthInBits += 8 * uint16(len(m.Data))
-    }
+	// Array field
+	if len(m.Data) > 0 {
+		lengthInBits += 8 * uint16(len(m.Data))
+	}
 
-    // Simple field (crc)
-    lengthInBits += 8
+	// Simple field (crc)
+	lengthInBits += 8
 
-    return lengthInBits
+	return lengthInBits
 }
 
 func (m CEMIFrameDataExt) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func CEMIFrameDataExtParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
-    // Simple Field (groupAddress)
-    groupAddress, _groupAddressErr := io.ReadBit()
-    if _groupAddressErr != nil {
-        return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
-    }
-
-    // Simple Field (hopCount)
-    hopCount, _hopCountErr := io.ReadUint8(3)
-    if _hopCountErr != nil {
-        return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
-    }
-
-    // Simple Field (extendedFrameFormat)
-    extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
-    if _extendedFrameFormatErr != nil {
-        return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
-    }
-
-    // Simple Field (sourceAddress)
-    _sourceAddressMessage, _err := KNXAddressParse(io)
-    if _err != nil {
-        return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
-    }
-    var sourceAddress IKNXAddress
-    sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
-    if !_sourceAddressOk {
-        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
-    }
-
-    // Array field (destinationAddress)
-    // Count array
-    destinationAddress := make([]int8, uint16(2))
-    for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
-        }
-        destinationAddress[curItem] = _item
-    }
-
-    // Simple Field (dataLength)
-    dataLength, _dataLengthErr := io.ReadUint8(8)
-    if _dataLengthErr != nil {
-        return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Enum field (tcpi)
-    tcpi, _tcpiErr := TPCIParse(io)
-    if _tcpiErr != nil {
-        return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter, _counterErr := io.ReadUint8(4)
-    if _counterErr != nil {
-        return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
-    }
-
-    // Enum field (apci)
-    apci, _apciErr := APCIParse(io)
-    if _apciErr != nil {
-        return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
-    }
-
-    // Simple Field (dataFirstByte)
-    dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
-    if _dataFirstByteErr != nil {
-        return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-    }
-
-    // Array field (data)
-    // Count array
-    data := make([]int8, uint16(dataLength) - uint16(uint16(1)))
-    for curItem := uint16(0); curItem < uint16(uint16(dataLength) - uint16(uint16(1))); curItem++ {
-
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'data' field " + _err.Error())
-        }
-        data[curItem] = _item
-    }
-
-    // Simple Field (crc)
-    crc, _crcErr := io.ReadUint8(8)
-    if _crcErr != nil {
-        return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
-    }
-
-    // Create the instance
-    return NewCEMIFrameDataExt(groupAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
+	// Simple Field (groupAddress)
+	groupAddress, _groupAddressErr := io.ReadBit()
+	if _groupAddressErr != nil {
+		return nil, errors.New("Error parsing 'groupAddress' field " + _groupAddressErr.Error())
+	}
+
+	// Simple Field (hopCount)
+	hopCount, _hopCountErr := io.ReadUint8(3)
+	if _hopCountErr != nil {
+		return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
+	}
+
+	// Simple Field (extendedFrameFormat)
+	extendedFrameFormat, _extendedFrameFormatErr := io.ReadUint8(4)
+	if _extendedFrameFormatErr != nil {
+		return nil, errors.New("Error parsing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+	}
+
+	// Simple Field (sourceAddress)
+	_sourceAddressMessage, _err := KNXAddressParse(io)
+	if _err != nil {
+		return nil, errors.New("Error parsing simple field 'sourceAddress'. " + _err.Error())
+	}
+	var sourceAddress IKNXAddress
+	sourceAddress, _sourceAddressOk := _sourceAddressMessage.(IKNXAddress)
+	if !_sourceAddressOk {
+		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_sourceAddressMessage).Name() + " to IKNXAddress")
+	}
+
+	// Array field (destinationAddress)
+	// Count array
+	destinationAddress := make([]int8, uint16(2))
+	for curItem := uint16(0); curItem < uint16(uint16(2)); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'destinationAddress' field " + _err.Error())
+		}
+		destinationAddress[curItem] = _item
+	}
+
+	// Simple Field (dataLength)
+	dataLength, _dataLengthErr := io.ReadUint8(8)
+	if _dataLengthErr != nil {
+		return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
+	}
+
+	// Enum field (tcpi)
+	tcpi, _tcpiErr := TPCIParse(io)
+	if _tcpiErr != nil {
+		return nil, errors.New("Error parsing 'tcpi' field " + _tcpiErr.Error())
+	}
+
+	// Simple Field (counter)
+	counter, _counterErr := io.ReadUint8(4)
+	if _counterErr != nil {
+		return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
+	}
+
+	// Enum field (apci)
+	apci, _apciErr := APCIParse(io)
+	if _apciErr != nil {
+		return nil, errors.New("Error parsing 'apci' field " + _apciErr.Error())
+	}
+
+	// Simple Field (dataFirstByte)
+	dataFirstByte, _dataFirstByteErr := io.ReadInt8(6)
+	if _dataFirstByteErr != nil {
+		return nil, errors.New("Error parsing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+	}
+
+	// Array field (data)
+	// Count array
+	data := make([]int8, uint16(dataLength)-uint16(uint16(1)))
+	for curItem := uint16(0); curItem < uint16(uint16(dataLength)-uint16(uint16(1))); curItem++ {
+
+		_item, _err := io.ReadInt8(8)
+		if _err != nil {
+			return nil, errors.New("Error parsing 'data' field " + _err.Error())
+		}
+		data[curItem] = _item
+	}
+
+	// Simple Field (crc)
+	crc, _crcErr := io.ReadUint8(8)
+	if _crcErr != nil {
+		return nil, errors.New("Error parsing 'crc' field " + _crcErr.Error())
+	}
+
+	// Create the instance
+	return NewCEMIFrameDataExt(groupAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
 }
 
 func (m CEMIFrameDataExt) Serialize(io utils.WriteBuffer) error {
-    ser := func() error {
-
-    // Simple Field (groupAddress)
-    groupAddress := bool(m.GroupAddress)
-    _groupAddressErr := io.WriteBit((bool) (groupAddress))
-    if _groupAddressErr != nil {
-        return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
-    }
-
-    // Simple Field (hopCount)
-    hopCount := uint8(m.HopCount)
-    _hopCountErr := io.WriteUint8(3, (hopCount))
-    if _hopCountErr != nil {
-        return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
-    }
-
-    // Simple Field (extendedFrameFormat)
-    extendedFrameFormat := uint8(m.ExtendedFrameFormat)
-    _extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
-    if _extendedFrameFormatErr != nil {
-        return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
-    }
-
-    // Simple Field (sourceAddress)
-    sourceAddress := CastIKNXAddress(m.SourceAddress)
-    _sourceAddressErr := sourceAddress.Serialize(io)
-    if _sourceAddressErr != nil {
-        return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
-    }
-
-    // Array Field (destinationAddress)
-    if m.DestinationAddress != nil {
-        for _, _element := range m.DestinationAddress {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Simple Field (dataLength)
-    dataLength := uint8(m.DataLength)
-    _dataLengthErr := io.WriteUint8(8, (dataLength))
-    if _dataLengthErr != nil {
-        return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Enum field (tcpi)
-    tcpi := CastTPCI(m.Tcpi)
-    _tcpiErr := tcpi.Serialize(io)
-    if _tcpiErr != nil {
-        return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter := uint8(m.Counter)
-    _counterErr := io.WriteUint8(4, (counter))
-    if _counterErr != nil {
-        return errors.New("Error serializing 'counter' field " + _counterErr.Error())
-    }
-
-    // Enum field (apci)
-    apci := CastAPCI(m.Apci)
-    _apciErr := apci.Serialize(io)
-    if _apciErr != nil {
-        return errors.New("Error serializing 'apci' field " + _apciErr.Error())
-    }
-
-    // Simple Field (dataFirstByte)
-    dataFirstByte := int8(m.DataFirstByte)
-    _dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
-    if _dataFirstByteErr != nil {
-        return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-    }
-
-    // Array Field (data)
-    if m.Data != nil {
-        for _, _element := range m.Data {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'data' field " + _elementErr.Error())
-            }
-        }
-    }
-
-    // Simple Field (crc)
-    crc := uint8(m.Crc)
-    _crcErr := io.WriteUint8(8, (crc))
-    if _crcErr != nil {
-        return errors.New("Error serializing 'crc' field " + _crcErr.Error())
-    }
-
-        return nil
-    }
-    return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	ser := func() error {
+
+		// Simple Field (groupAddress)
+		groupAddress := bool(m.GroupAddress)
+		_groupAddressErr := io.WriteBit((groupAddress))
+		if _groupAddressErr != nil {
+			return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
+		}
+
+		// Simple Field (hopCount)
+		hopCount := uint8(m.HopCount)
+		_hopCountErr := io.WriteUint8(3, (hopCount))
+		if _hopCountErr != nil {
+			return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+		}
+
+		// Simple Field (extendedFrameFormat)
+		extendedFrameFormat := uint8(m.ExtendedFrameFormat)
+		_extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
+		if _extendedFrameFormatErr != nil {
+			return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+		}
+
+		// Simple Field (sourceAddress)
+		sourceAddress := CastIKNXAddress(m.SourceAddress)
+		_sourceAddressErr := sourceAddress.Serialize(io)
+		if _sourceAddressErr != nil {
+			return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+		}
+
+		// Array Field (destinationAddress)
+		if m.DestinationAddress != nil {
+			for _, _element := range m.DestinationAddress {
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+				}
+			}
+		}
+
+		// Simple Field (dataLength)
+		dataLength := uint8(m.DataLength)
+		_dataLengthErr := io.WriteUint8(8, (dataLength))
+		if _dataLengthErr != nil {
+			return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+		}
+
+		// Enum field (tcpi)
+		tcpi := CastTPCI(m.Tcpi)
+		_tcpiErr := tcpi.Serialize(io)
+		if _tcpiErr != nil {
+			return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+		}
+
+		// Simple Field (counter)
+		counter := uint8(m.Counter)
+		_counterErr := io.WriteUint8(4, (counter))
+		if _counterErr != nil {
+			return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+		}
+
+		// Enum field (apci)
+		apci := CastAPCI(m.Apci)
+		_apciErr := apci.Serialize(io)
+		if _apciErr != nil {
+			return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+		}
+
+		// Simple Field (dataFirstByte)
+		dataFirstByte := int8(m.DataFirstByte)
+		_dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+		if _dataFirstByteErr != nil {
+			return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+		}
+
+		// Array Field (data)
+		if m.Data != nil {
+			for _, _element := range m.Data {
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
+			}
+		}
+
+		// Simple Field (crc)
+		crc := uint8(m.Crc)
+		_crcErr := io.WriteUint8(8, (crc))
+		if _crcErr != nil {
+			return errors.New("Error serializing 'crc' field " + _crcErr.Error())
+		}
+
+		return nil
+	}
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
 
 func (m *CEMIFrameDataExt) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
-    for {
-        token, err := d.Token()
-        if err != nil {
-            if err == io.EOF {
-                return nil
-            }
-            return err
-        }
-        switch token.(type) {
-        case xml.StartElement:
-            tok := token.(xml.StartElement)
-            switch tok.Name.Local {
-            case "groupAddress":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.GroupAddress = data
-            case "hopCount":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.HopCount = data
-            case "extendedFrameFormat":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.ExtendedFrameFormat = data
-            case "sourceAddress":
-                var data *KNXAddress
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.SourceAddress = CastIKNXAddress(data)
-            case "destinationAddress":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
-            case "dataLength":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataLength = data
-            case "tcpi":
-                var data *TPCI
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Tcpi = data
-            case "counter":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Counter = data
-            case "apci":
-                var data *APCI
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Apci = data
-            case "dataFirstByte":
-                var data int8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataFirstByte = data
-            case "data":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.Data = utils.ByteToInt8(_decoded[0:_len])
-            case "crc":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Crc = data
-            }
-        }
-    }
+	for {
+		token, err := d.Token()
+		if err != nil {
+			if err == io.EOF {
+				return nil
+			}
+			return err
+		}
+		switch token.(type) {
+		case xml.StartElement:
+			tok := token.(xml.StartElement)
+			switch tok.Name.Local {
+			case "groupAddress":
+				var data bool
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.GroupAddress = data
+			case "hopCount":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.HopCount = data
+			case "extendedFrameFormat":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.ExtendedFrameFormat = data
+			case "sourceAddress":
+				var data *KNXAddress
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.SourceAddress = CastIKNXAddress(data)
+			case "destinationAddress":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.DestinationAddress = utils.ByteToInt8(_decoded[0:_len])
+			case "dataLength":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DataLength = data
+			case "tcpi":
+				var data *TPCI
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Tcpi = data
+			case "counter":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Counter = data
+			case "apci":
+				var data *APCI
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Apci = data
+			case "dataFirstByte":
+				var data int8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.DataFirstByte = data
+			case "data":
+				var _encoded string
+				if err := d.DecodeElement(&_encoded, &tok); err != nil {
+					return err
+				}
+				_decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
+				_len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
+				if err != nil {
+					return err
+				}
+				m.Data = utils.ByteToInt8(_decoded[0:_len])
+			case "crc":
+				var data uint8
+				if err := d.DecodeElement(&data, &tok); err != nil {
+					return err
+				}
+				m.Crc = data
+			}
+		}
+	}
 }
 
 func (m CEMIFrameDataExt) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
-    if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
-            {Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameDataExt"},
-        }}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
-        return err
-    }
-    _encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
-    base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
-    if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
-        return err
-    }
-    _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
-    base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
-    if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
-        return err
-    }
-    return nil
+	if err := e.EncodeToken(xml.StartElement{Name: start.Name, Attr: []xml.Attr{
+		{Name: xml.Name{Local: "className"}, Value: "org.apache.plc4x.java.knxnetip.readwrite.CEMIFrameDataExt"},
+	}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.GroupAddress, xml.StartElement{Name: xml.Name{Local: "groupAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.ExtendedFrameFormat, xml.StartElement{Name: xml.Name{Local: "extendedFrameFormat"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.SourceAddress, xml.StartElement{Name: xml.Name{Local: "sourceAddress"}}); err != nil {
+		return err
+	}
+	_encodedDestinationAddress := make([]byte, base64.StdEncoding.EncodedLen(len(m.DestinationAddress)))
+	base64.StdEncoding.Encode(_encodedDestinationAddress, utils.Int8ToByte(m.DestinationAddress))
+	if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Tcpi, xml.StartElement{Name: xml.Name{Local: "tcpi"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
+		return err
+	}
+	_encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
+	base64.StdEncoding.Encode(_encodedData, utils.Int8ToByte(m.Data))
+	if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeElement(m.Crc, xml.StartElement{Name: xml.Name{Local: "crc"}}); err != nil {
+		return err
+	}
+	if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
+		return err
+	}
+	return nil
 }
-
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
index fa62fe6..288effc 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
@@ -19,152 +19,149 @@
 package model
 
 import (
-    "encoding/xml"
-    "errors"
-    "io"
-    log "github.com/sirupsen/logrus"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"encoding/xml"
+	"errors"
+	log "github.com/sirupsen/logrus"
+	"io"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
 type DeviceStatus struct {
-    ProgramMode bool
-
... 6364 lines suppressed ...