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/10/06 16:31:55 UTC

[plc4x] branch feature/plc4go updated: - Added Enum types

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 a9eb9c6  - Added Enum types
a9eb9c6 is described below

commit a9eb9c6b64d86a02965540e772a4aeca805b6c4b
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Oct 6 18:31:48 2020 +0200

    - Added Enum types
---
 .../apache/plc4x/language/go/GoLanguageOutput.java |  10 +-
 .../language/go/GoLanguageTemplateHelper.java      |  27 ++++
 .../main/resources/templates/go/enum-template.ftlh | 124 ++++++---------
 .../go/{pojo-template.ftlh => model-template.ftlh} |  19 ++-
 .../plc4go/go/modbus/readwrite/ModbusConstants.go  |  10 +-
 .../plc4go/go/modbus/readwrite/ModbusDataType.go   | 173 +++++++++++++++++++++
 .../plc4go/go/modbus/readwrite/ModbusPDU.go        |  10 +-
 .../modbus/readwrite/ModbusPDUDiagnosticRequest.go |  12 +-
 .../plc4go/go/modbus/readwrite/ModbusPDUError.go   |  12 +-
 .../readwrite/ModbusPDUGetComEventLogRequest.go    |  12 +-
 .../readwrite/ModbusPDUGetComEventLogResponse.go   |  12 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |  12 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |  12 +-
 .../modbus/readwrite/ModbusPDUReadCoilsRequest.go  |  12 +-
 .../modbus/readwrite/ModbusPDUReadCoilsResponse.go |  12 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |  12 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |  12 +-
 .../ModbusPDUReadDiscreteInputsRequest.go          |  12 +-
 .../ModbusPDUReadDiscreteInputsResponse.go         |  12 +-
 .../ModbusPDUReadExceptionStatusRequest.go         |  12 +-
 .../ModbusPDUReadExceptionStatusResponse.go        |  12 +-
 .../readwrite/ModbusPDUReadFifoQueueRequest.go     |  12 +-
 .../readwrite/ModbusPDUReadFifoQueueResponse.go    |  12 +-
 .../readwrite/ModbusPDUReadFileRecordRequest.go    |  14 +-
 .../ModbusPDUReadFileRecordRequestItem.go          |  10 +-
 .../readwrite/ModbusPDUReadFileRecordResponse.go   |  14 +-
 .../ModbusPDUReadFileRecordResponseItem.go         |  10 +-
 .../ModbusPDUReadHoldingRegistersRequest.go        |  12 +-
 .../ModbusPDUReadHoldingRegistersResponse.go       |  12 +-
 .../ModbusPDUReadInputRegistersRequest.go          |  12 +-
 .../ModbusPDUReadInputRegistersResponse.go         |  12 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |  12 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |  12 +-
 .../readwrite/ModbusPDUReportServerIdRequest.go    |  12 +-
 .../readwrite/ModbusPDUReportServerIdResponse.go   |  12 +-
 .../readwrite/ModbusPDUWriteFileRecordRequest.go   |  14 +-
 .../ModbusPDUWriteFileRecordRequestItem.go         |  10 +-
 .../readwrite/ModbusPDUWriteFileRecordResponse.go  |  14 +-
 .../ModbusPDUWriteFileRecordResponseItem.go        |  10 +-
 .../ModbusPDUWriteMultipleCoilsRequest.go          |  12 +-
 .../ModbusPDUWriteMultipleCoilsResponse.go         |  12 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |  12 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |  12 +-
 .../readwrite/ModbusPDUWriteSingleCoilRequest.go   |  12 +-
 .../readwrite/ModbusPDUWriteSingleCoilResponse.go  |  12 +-
 .../ModbusPDUWriteSingleRegisterRequest.go         |  12 +-
 .../ModbusPDUWriteSingleRegisterResponse.go        |  12 +-
 .../plc4go/go/modbus/readwrite/ModbusSerialADU.go  |  12 +-
 .../plc4go/go/modbus/readwrite/ModbusTcpADU.go     |  12 +-
 sandbox/plc4go/src/plc4go/spi/ReadBuffer.go        |  71 +++++++++
 sandbox/plc4go/src/plc4go/spi/WriteBuffer.go       |  51 ++++++
 51 files changed, 642 insertions(+), 357 deletions(-)

diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java
index 3c8ee09..1b75367 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java
@@ -48,16 +48,14 @@ public class GoLanguageOutput extends FreemarkerLanguageOutput {
 
     @Override
     protected List<Template> getComplexTypeTemplates(Configuration freemarkerConfiguration) throws IOException {
-        return Arrays.asList(
-            freemarkerConfiguration.getTemplate("templates/go/pojo-template.ftlh")/*,
-            freemarkerConfiguration.getTemplate("templates/go/io-template.ftlh")*/);
+        return Collections.singletonList(
+            freemarkerConfiguration.getTemplate("templates/go/model-template.ftlh"));
     }
 
     @Override
     protected List<Template> getEnumTypeTemplates(Configuration freemarkerConfiguration) throws IOException {
-        /*return Collections.singletonList(
-            freemarkerConfiguration.getTemplate("templates/go/enum-template.ftlh"));*/
-        return Collections.emptyList();
+        return Collections.singletonList(
+            freemarkerConfiguration.getTemplate("templates/go/enum-template.ftlh"));
     }
 
     @Override
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 70b7a22..5ff1a03 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
@@ -23,6 +23,7 @@ import org.apache.commons.lang3.math.NumberUtils;
 import org.apache.commons.text.WordUtils;
 import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.BaseFreemarkerLanguageTemplateHelper;
 import org.apache.plc4x.plugins.codegenerator.types.definitions.*;
+import org.apache.plc4x.plugins.codegenerator.types.enums.EnumValue;
 import org.apache.plc4x.plugins.codegenerator.types.fields.*;
 import org.apache.plc4x.plugins.codegenerator.types.references.*;
 import org.apache.plc4x.plugins.codegenerator.types.terms.*;
@@ -709,4 +710,30 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         return valueString;
     }
 
+    public String escapeEnumValue(TypeReference typeReference, String valueString) {
+        // Currently the only case in which here complex type references are used are when referencing enum constants.
+        if (typeReference instanceof ComplexTypeReference) {
+            // C doesn't like NULL values for enums, so we have to return something else (we'll treat -1 as NULL)
+            if ("null".equals(valueString)) {
+                return "-1";
+            }
+            String typeName = valueString.substring(0, valueString.indexOf('.'));
+            String constantName = valueString.substring(valueString.indexOf('.') + 1);
+            return constantName;
+        } else {
+            return escapeValue(typeReference, valueString);
+        }
+    }
+
+    public Collection<EnumValue> getUniqueEnumValues(EnumValue[] enumValues) {
+        Map<String, EnumValue> filteredEnumValues = new TreeMap<>();
+        for (EnumValue enumValue : enumValues) {
+            if (!filteredEnumValues.containsKey(enumValue.getValue())) {
+                filteredEnumValues.put(enumValue.getValue(), enumValue);
+            }
+        }
+        return filteredEnumValues.values();
+    }
+
+
 }
diff --git a/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
index e4e1d4c..8a662f6 100644
--- a/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
@@ -25,91 +25,57 @@
 <#-- @ftlvariable name="outputFlavor" type="java.lang.String" -->
 <#-- @ftlvariable name="helper" type="org.apache.plc4x.language.go.GoLanguageTemplateHelper" -->
 <#-- @ftlvariable name="type" type="org.apache.plc4x.plugins.codegenerator.types.definitions.EnumTypeDefinition" -->
-${helper.packageName(protocolName, languageName, outputFlavor)?replace(".", "/")}/types/${type.name}.java
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-package ${helper.packageName(protocolName, languageName, outputFlavor)}.types;
-
-import org.apache.plc4x.java.spi.generation.Message;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public enum ${type.name} {
-
+${helper.fileName(protocolName, languageName, outputFlavor)?replace(".", "/")}/${type.name}.go
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package ${helper.packageName(outputFlavor)}
+
+import "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
+
+type ${type.name} <#if type.type?has_content>${helper.getLanguageTypeNameForTypeReference(type.type)}<#else>string</#if>
+
+const(
 <#list type.enumValues as enumValue>
-    ${enumValue.name}(<#if type.type?has_content>(${helper.getLanguageTypeNameForTypeReference(type.type, true)}) ${enumValue.value}</#if><#if type.constantNames?has_content><#if type.type?has_content>, </#if><#list type.constantNames as constantName>(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)}) ${helper.escapeValue(type.getConstantType(constantName), enumValue.getConstant(constantName))}<#sep>, </#sep></#list></#if>)<#sep>,
-</#sep></#list>;
-
-<#if type.type?has_content>
-    private static final Logger logger = LoggerFactory.getLogger(${type.name}.class);
-
-    private static final Map<${helper.getLanguageTypeNameForTypeReference(type.type, false)}, ${type.name}> map;
-    static {
-        map = new HashMap<>();
-        for (${type.name} value : ${type.name}.values()) {
-            map.put((${helper.getLanguageTypeNameForTypeReference(type.type, true)}) value.getValue(), value);
-        }
-    }
-
-    private ${helper.getLanguageTypeNameForTypeReference(type.type, true)} value;
-</#if>
-<#if type.constantNames?has_content>
-    <#list type.constantNames as constantName>
-        private ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)} ${constantName};
-    </#list>
-</#if>
-
-    ${type.name}(<#if type.type?has_content>${helper.getLanguageTypeNameForTypeReference(type.type, true)} value</#if><#if type.constantNames?has_content><#if type.type?has_content>, </#if><#list type.constantNames as constantName>${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)} ${constantName}<#sep>, </#sep></#list></#if>) {
-<#if type.type?has_content>        this.value = value;</#if>
-<#if type.constantNames?has_content>
-    <#list type.constantNames as constantName>
-        this.${constantName} = ${constantName};
-    </#list>
-</#if>
-    }
-
-<#if type.type?has_content>
-    public ${helper.getLanguageTypeNameForTypeReference(type.type, true)} getValue() {
-        return value;
-    }
-</#if>
+    ${enumValue.name} ${type.name} = ${enumValue.value}
+</#list>
+)
 
+<#--
+If this enum also defines constant values, output one function for each.
+Each of these functions consist of a simple switch statement using the enum as switch-value
+returning the constant for a given enum value.
+-->
 <#if type.constantNames?has_content>
     <#list type.constantNames as constantName>
-    public ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)} get${constantName?cap_first}() {
-        return ${constantName};
-    }
 
-    </#list>
-</#if>
-<#if type.type?has_content>
-    public static ${type.name} valueOf(${helper.getLanguageTypeNameForTypeReference(type.type, true)} value) {
-        if (!map.containsKey(value)) {
-            logger.error("No ${type.name} for value {}", value);
+func (e ${type.name}) Get${constantName?cap_first}() ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))} {
+    switch e  {
+        <#list helper.getUniqueEnumValues(type.enumValues) as enumValue>
+        case ${helper.escapeValue(type.type, enumValue.value)}: { /* '${enumValue.value}' */
+            return ${helper.escapeEnumValue(type.getConstantType(constantName), enumValue.getConstant(constantName))}
+        }
+        </#list>
+        default: {
+            return 0
         }
-        return map.get(value);
     }
-</#if>
-
 }
+    </#list>
+</#if>
 </#outputformat>
\ No newline at end of file
diff --git a/build-utils/language-go/src/main/resources/templates/go/pojo-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
similarity index 95%
rename from build-utils/language-go/src/main/resources/templates/go/pojo-template.ftlh
rename to build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
index 33759dd..73af1a4 100644
--- a/build-utils/language-go/src/main/resources/templates/go/pojo-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
@@ -78,8 +78,8 @@ type ${type.name} struct {
 <#if type.parentType??>    ${type.parentType.name}</#if>
 }
 
-func (m ${type.name}) lengthInBits() uint16 {
-    var lengthInBits uint16 = <#if type.parentType??>m.${type.parentType.name}.lengthInBits()<#else>0</#if>
+func (m ${type.name}) LengthInBits() uint16 {
+    var lengthInBits uint16 = <#if type.parentType??>m.${type.parentType.name}.LengthInBits()<#else>0</#if>
     <#list type.fields as field>
         <#switch field.typeName>
             <#case "array">
@@ -92,7 +92,7 @@ func (m ${type.name}) lengthInBits() uint16 {
         lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name}))
                 <#else>
         for _, element := range m.${arrayField.name} {
-            lengthInBits += element.lengthInBits()
+            lengthInBits += element.LengthInBits()
         }
                 </#if>
     }
@@ -152,7 +152,7 @@ func (m ${type.name}) lengthInBits() uint16 {
                     <#assign simpleTypeReference = optionalField.type>
         lengthInBits += ${simpleTypeReference.sizeInBits}
                 <#else>
-        lengthInBits += m.${optionalField.name}.lengthInBits()
+        lengthInBits += m.${optionalField.name}.LengthInBits()
                 </#if>
     }
                 <#break>
@@ -182,7 +182,7 @@ func (m ${type.name}) lengthInBits() uint16 {
                     <#assign simpleTypeReference = simpleField.type>
     lengthInBits += ${simpleTypeReference.sizeInBits}
                 <#else>
-    lengthInBits += m.${simpleField.name}.lengthInBits()
+    lengthInBits += m.${simpleField.name}.LengthInBits()
                 </#if>
                 <#break>
             <#case "switch">
@@ -201,16 +201,15 @@ func (m ${type.name}) lengthInBits() uint16 {
     return lengthInBits
 }
 
-func (m ${type.name}) lengthInBytes() uint16 {
-    return m.lengthInBits() / 8
+func (m ${type.name}) LengthInBytes() uint16 {
+    return m.LengthInBits() / 8
 }
 
-func (m ${type.name}) parse(io spi.ReadBuffer) {
+func (m ${type.name}) Parse(io spi.ReadBuffer) {
     // TODO: Implement ...
 }
 
-func (m ${type.name}) serialize(io spi.WriteBuffer) {
+func (m ${type.name}) Serialize(io spi.WriteBuffer) {
     // TODO: Implement ...
 }
-
 </#outputformat>
\ No newline at end of file
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
index 4331bb0..e703784 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusConstants.go
@@ -23,7 +23,7 @@ import "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
 type ModbusConstants struct {
 }
 
-func (m ModbusConstants) lengthInBits() uint16 {
+func (m ModbusConstants) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Const Field (modbusTcpDefaultPort)
@@ -32,14 +32,14 @@ func (m ModbusConstants) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusConstants) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusConstants) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusConstants) parse(io spi.ReadBuffer) {
+func (m ModbusConstants) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusConstants) serialize(io spi.WriteBuffer) {
+func (m ModbusConstants) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusDataType.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusDataType.go
new file mode 100644
index 0000000..9c20cd0
--- /dev/null
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusDataType.go
@@ -0,0 +1,173 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package readwrite
+
+type ModbusDataType uint8
+
+const (
+	NULL           ModbusDataType = 00
+	BOOL           ModbusDataType = 01
+	BYTE           ModbusDataType = 10
+	WORD           ModbusDataType = 11
+	DWORD          ModbusDataType = 12
+	LWORD          ModbusDataType = 13
+	SINT           ModbusDataType = 20
+	INT            ModbusDataType = 21
+	DINT           ModbusDataType = 22
+	LINT           ModbusDataType = 23
+	USINT          ModbusDataType = 24
+	UINT           ModbusDataType = 25
+	UDINT          ModbusDataType = 26
+	ULINT          ModbusDataType = 27
+	REAL           ModbusDataType = 30
+	LREAL          ModbusDataType = 31
+	TIME           ModbusDataType = 40
+	LTIME          ModbusDataType = 41
+	DATE           ModbusDataType = 50
+	LDATE          ModbusDataType = 51
+	TIME_OF_DAY    ModbusDataType = 60
+	LTIME_OF_DAY   ModbusDataType = 61
+	DATE_AND_TIME  ModbusDataType = 70
+	LDATE_AND_TIME ModbusDataType = 71
+	CHAR           ModbusDataType = 80
+	WCHAR          ModbusDataType = 81
+	STRING         ModbusDataType = 82
+	WSTRING        ModbusDataType = 83
+)
+
+func (e ModbusDataType) GetDataTypeSize() uint8 {
+	switch e {
+	case 00:
+		{ /* '00' */
+			return 0
+		}
+	case 01:
+		{ /* '01' */
+			return 1
+		}
+	case 10:
+		{ /* '10' */
+			return 1
+		}
+	case 11:
+		{ /* '11' */
+			return 2
+		}
+	case 12:
+		{ /* '12' */
+			return 4
+		}
+	case 13:
+		{ /* '13' */
+			return 8
+		}
+	case 20:
+		{ /* '20' */
+			return 1
+		}
+	case 21:
+		{ /* '21' */
+			return 2
+		}
+	case 22:
+		{ /* '22' */
+			return 4
+		}
+	case 23:
+		{ /* '23' */
+			return 8
+		}
+	case 24:
+		{ /* '24' */
+			return 1
+		}
+	case 25:
+		{ /* '25' */
+			return 2
+		}
+	case 26:
+		{ /* '26' */
+			return 4
+		}
+	case 27:
+		{ /* '27' */
+			return 8
+		}
+	case 30:
+		{ /* '30' */
+			return 4
+		}
+	case 31:
+		{ /* '31' */
+			return 8
+		}
+	case 40:
+		{ /* '40' */
+			return 8
+		}
+	case 41:
+		{ /* '41' */
+			return 8
+		}
+	case 50:
+		{ /* '50' */
+			return 8
+		}
+	case 51:
+		{ /* '51' */
+			return 8
+		}
+	case 60:
+		{ /* '60' */
+			return 8
+		}
+	case 61:
+		{ /* '61' */
+			return 8
+		}
+	case 70:
+		{ /* '70' */
+			return 8
+		}
+	case 71:
+		{ /* '71' */
+			return 8
+		}
+	case 80:
+		{ /* '80' */
+			return 1
+		}
+	case 81:
+		{ /* '81' */
+			return 2
+		}
+	case 82:
+		{ /* '82' */
+			return 1
+		}
+	case 83:
+		{ /* '83' */
+			return 2
+		}
+	default:
+		{
+			return 0
+		}
+	}
+}
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
index 58dbb4e..e8545dc 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDU.go
@@ -23,7 +23,7 @@ import "plc4x.apache.org/plc4go-modbus-driver/0.8.0/src/plc4go/spi"
 type ModbusPDU struct {
 }
 
-func (m ModbusPDU) lengthInBits() uint16 {
+func (m ModbusPDU) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Discriminator Field (error)
@@ -37,14 +37,14 @@ func (m ModbusPDU) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDU) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDU) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDU) parse(io spi.ReadBuffer) {
+func (m ModbusPDU) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDU) serialize(io spi.WriteBuffer) {
+func (m ModbusPDU) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
index aaf833d..76a31a5 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUDiagnosticRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUDiagnosticRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUDiagnosticRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUDiagnosticRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (status)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUDiagnosticRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUDiagnosticRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUDiagnosticRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUDiagnosticRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUDiagnosticRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUDiagnosticRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUDiagnosticRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
index ecc483d..de2e847 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUError.go
@@ -25,8 +25,8 @@ type ModbusPDUError struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUError) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUError) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (exceptionCode)
 	lengthInBits += 8
@@ -34,14 +34,14 @@ func (m ModbusPDUError) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUError) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUError) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUError) parse(io spi.ReadBuffer) {
+func (m ModbusPDUError) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUError) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUError) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
index 6751da1..fec68b7 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogRequest.go
@@ -24,20 +24,20 @@ type ModbusPDUGetComEventLogRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUGetComEventLogRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUGetComEventLogRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusPDUGetComEventLogRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUGetComEventLogRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUGetComEventLogRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUGetComEventLogRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUGetComEventLogRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUGetComEventLogRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
index e5c503b..10e1ea5 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUGetComEventLogResponse.go
@@ -28,8 +28,8 @@ type ModbusPDUGetComEventLogResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUGetComEventLogResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUGetComEventLogResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -51,14 +51,14 @@ func (m ModbusPDUGetComEventLogResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUGetComEventLogResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUGetComEventLogResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUGetComEventLogResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUGetComEventLogResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUGetComEventLogResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUGetComEventLogResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
index d038f3e..de1c680 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.go
@@ -27,8 +27,8 @@ type ModbusPDUMaskWriteHoldingRegisterRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (referenceAddress)
 	lengthInBits += 16
@@ -42,14 +42,14 @@ func (m ModbusPDUMaskWriteHoldingRegisterRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
index 5c386bb..00d430a 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.go
@@ -27,8 +27,8 @@ type ModbusPDUMaskWriteHoldingRegisterResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (referenceAddress)
 	lengthInBits += 16
@@ -42,14 +42,14 @@ func (m ModbusPDUMaskWriteHoldingRegisterResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
index db57590..2e8774f 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUReadCoilsRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadCoilsRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadCoilsRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUReadCoilsRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadCoilsRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadCoilsRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadCoilsRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadCoilsRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadCoilsRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadCoilsRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
index 40a7631..b64e022 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadCoilsResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadCoilsResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadCoilsResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadCoilsResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -39,14 +39,14 @@ func (m ModbusPDUReadCoilsResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadCoilsResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadCoilsResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadCoilsResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadCoilsResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadCoilsResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadCoilsResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
index 232c91e..29d6688 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.go
@@ -24,20 +24,20 @@ type ModbusPDUReadDeviceIdentificationRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadDeviceIdentificationRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadDeviceIdentificationRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusPDUReadDeviceIdentificationRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadDeviceIdentificationRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadDeviceIdentificationRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadDeviceIdentificationRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadDeviceIdentificationRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadDeviceIdentificationRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
index 716671b..9ca0873 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.go
@@ -24,20 +24,20 @@ type ModbusPDUReadDeviceIdentificationResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadDeviceIdentificationResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadDeviceIdentificationResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusPDUReadDeviceIdentificationResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadDeviceIdentificationResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadDeviceIdentificationResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadDeviceIdentificationResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadDeviceIdentificationResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadDeviceIdentificationResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
index 945e026..20f0bd1 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUReadDiscreteInputsRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadDiscreteInputsRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadDiscreteInputsRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUReadDiscreteInputsRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadDiscreteInputsRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadDiscreteInputsRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadDiscreteInputsRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadDiscreteInputsRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadDiscreteInputsRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadDiscreteInputsRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
index 54446df..7714ea4 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadDiscreteInputsResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadDiscreteInputsResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadDiscreteInputsResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -39,14 +39,14 @@ func (m ModbusPDUReadDiscreteInputsResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadDiscreteInputsResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadDiscreteInputsResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadDiscreteInputsResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadDiscreteInputsResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadDiscreteInputsResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadDiscreteInputsResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
index 467005f..fd61079 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.go
@@ -24,20 +24,20 @@ type ModbusPDUReadExceptionStatusRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadExceptionStatusRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadExceptionStatusRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusPDUReadExceptionStatusRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadExceptionStatusRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadExceptionStatusRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadExceptionStatusRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadExceptionStatusRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadExceptionStatusRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
index a881667..02f3c91 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadExceptionStatusResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadExceptionStatusResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadExceptionStatusResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (value)
 	lengthInBits += 8
@@ -34,14 +34,14 @@ func (m ModbusPDUReadExceptionStatusResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadExceptionStatusResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadExceptionStatusResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadExceptionStatusResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadExceptionStatusResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadExceptionStatusResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadExceptionStatusResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
index abd3074..becbb77 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueRequest.go
@@ -25,8 +25,8 @@ type ModbusPDUReadFifoQueueRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadFifoQueueRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadFifoQueueRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (fifoPointerAddress)
 	lengthInBits += 16
@@ -34,14 +34,14 @@ func (m ModbusPDUReadFifoQueueRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadFifoQueueRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadFifoQueueRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadFifoQueueRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadFifoQueueRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadFifoQueueRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadFifoQueueRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
index 4268d8d..cc593a1 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFifoQueueResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadFifoQueueResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadFifoQueueResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadFifoQueueResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 16
@@ -42,14 +42,14 @@ func (m ModbusPDUReadFifoQueueResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadFifoQueueResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadFifoQueueResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadFifoQueueResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadFifoQueueResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadFifoQueueResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadFifoQueueResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
index e4d1028..a0b58e1 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequest.go
@@ -25,8 +25,8 @@ type ModbusPDUReadFileRecordRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadFileRecordRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadFileRecordRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -34,21 +34,21 @@ func (m ModbusPDUReadFileRecordRequest) lengthInBits() uint16 {
 	// Array field
 	if len(m.items) > 0 {
 		for _, element := range m.items {
-			lengthInBits += element.lengthInBits()
+			lengthInBits += element.LengthInBits()
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m ModbusPDUReadFileRecordRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadFileRecordRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadFileRecordRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadFileRecordRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadFileRecordRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadFileRecordRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
index 305fde5..1b7548b 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.go
@@ -27,7 +27,7 @@ type ModbusPDUReadFileRecordRequestItem struct {
 	recordLength  uint16
 }
 
-func (m ModbusPDUReadFileRecordRequestItem) lengthInBits() uint16 {
+func (m ModbusPDUReadFileRecordRequestItem) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Simple field (referenceType)
@@ -45,14 +45,14 @@ func (m ModbusPDUReadFileRecordRequestItem) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadFileRecordRequestItem) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadFileRecordRequestItem) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadFileRecordRequestItem) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadFileRecordRequestItem) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadFileRecordRequestItem) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadFileRecordRequestItem) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
index 831f716..0064a2a 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadFileRecordResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadFileRecordResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadFileRecordResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -34,21 +34,21 @@ func (m ModbusPDUReadFileRecordResponse) lengthInBits() uint16 {
 	// Array field
 	if len(m.items) > 0 {
 		for _, element := range m.items {
-			lengthInBits += element.lengthInBits()
+			lengthInBits += element.LengthInBits()
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m ModbusPDUReadFileRecordResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadFileRecordResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadFileRecordResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadFileRecordResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadFileRecordResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadFileRecordResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
index d6a1666..babebec 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.go
@@ -25,7 +25,7 @@ type ModbusPDUReadFileRecordResponseItem struct {
 	data          []int8
 }
 
-func (m ModbusPDUReadFileRecordResponseItem) lengthInBits() uint16 {
+func (m ModbusPDUReadFileRecordResponseItem) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Implicit Field (dataLength)
@@ -42,14 +42,14 @@ func (m ModbusPDUReadFileRecordResponseItem) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadFileRecordResponseItem) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadFileRecordResponseItem) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadFileRecordResponseItem) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadFileRecordResponseItem) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadFileRecordResponseItem) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadFileRecordResponseItem) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
index fd2f8cd..8151a7d 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUReadHoldingRegistersRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadHoldingRegistersRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadHoldingRegistersRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUReadHoldingRegistersRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadHoldingRegistersRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadHoldingRegistersRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadHoldingRegistersRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadHoldingRegistersRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadHoldingRegistersRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadHoldingRegistersRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
index dd28882..156b681 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadHoldingRegistersResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadHoldingRegistersResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadHoldingRegistersResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -39,14 +39,14 @@ func (m ModbusPDUReadHoldingRegistersResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadHoldingRegistersResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadHoldingRegistersResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadHoldingRegistersResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadHoldingRegistersResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadHoldingRegistersResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadHoldingRegistersResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
index ab2dfdc..fcdb439 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUReadInputRegistersRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadInputRegistersRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadInputRegistersRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUReadInputRegistersRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadInputRegistersRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadInputRegistersRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadInputRegistersRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadInputRegistersRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadInputRegistersRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadInputRegistersRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
index bd72898..06163fa 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadInputRegistersResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadInputRegistersResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadInputRegistersResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadInputRegistersResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -39,14 +39,14 @@ func (m ModbusPDUReadInputRegistersResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReadInputRegistersResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadInputRegistersResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadInputRegistersResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadInputRegistersResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadInputRegistersResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadInputRegistersResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
index 08bbca2..2ba3302 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
@@ -29,8 +29,8 @@ type ModbusPDUReadWriteMultipleHoldingRegistersRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (readStartingAddress)
 	lengthInBits += 16
@@ -55,14 +55,14 @@ func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) lengthInBits() uint16
 	return lengthInBits
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
index 5a547d4..92106cb 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReadWriteMultipleHoldingRegistersResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -39,14 +39,14 @@ func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) lengthInBits() uint1
 	return lengthInBits
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
index 4e052cc..2f08fef 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdRequest.go
@@ -24,20 +24,20 @@ type ModbusPDUReportServerIdRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReportServerIdRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReportServerIdRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusPDUReportServerIdRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReportServerIdRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReportServerIdRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReportServerIdRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReportServerIdRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReportServerIdRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
index dde37bd..1b30682 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUReportServerIdResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUReportServerIdResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUReportServerIdResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUReportServerIdResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -39,14 +39,14 @@ func (m ModbusPDUReportServerIdResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUReportServerIdResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUReportServerIdResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUReportServerIdResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUReportServerIdResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUReportServerIdResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUReportServerIdResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
index f74ac86..4416d74 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequest.go
@@ -25,8 +25,8 @@ type ModbusPDUWriteFileRecordRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteFileRecordRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteFileRecordRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -34,21 +34,21 @@ func (m ModbusPDUWriteFileRecordRequest) lengthInBits() uint16 {
 	// Array field
 	if len(m.items) > 0 {
 		for _, element := range m.items {
-			lengthInBits += element.lengthInBits()
+			lengthInBits += element.LengthInBits()
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteFileRecordRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteFileRecordRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteFileRecordRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteFileRecordRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteFileRecordRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteFileRecordRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
index c664c52..1bded56 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.go
@@ -27,7 +27,7 @@ type ModbusPDUWriteFileRecordRequestItem struct {
 	recordData    []int8
 }
 
-func (m ModbusPDUWriteFileRecordRequestItem) lengthInBits() uint16 {
+func (m ModbusPDUWriteFileRecordRequestItem) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Simple field (referenceType)
@@ -50,14 +50,14 @@ func (m ModbusPDUWriteFileRecordRequestItem) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteFileRecordRequestItem) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteFileRecordRequestItem) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteFileRecordRequestItem) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteFileRecordRequestItem) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteFileRecordRequestItem) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteFileRecordRequestItem) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
index dd421a2..bee009b 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponse.go
@@ -25,8 +25,8 @@ type ModbusPDUWriteFileRecordResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteFileRecordResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteFileRecordResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Implicit Field (byteCount)
 	lengthInBits += 8
@@ -34,21 +34,21 @@ func (m ModbusPDUWriteFileRecordResponse) lengthInBits() uint16 {
 	// Array field
 	if len(m.items) > 0 {
 		for _, element := range m.items {
-			lengthInBits += element.lengthInBits()
+			lengthInBits += element.LengthInBits()
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteFileRecordResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteFileRecordResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteFileRecordResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteFileRecordResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteFileRecordResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteFileRecordResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
index 600c646..2f0e526 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.go
@@ -27,7 +27,7 @@ type ModbusPDUWriteFileRecordResponseItem struct {
 	recordData    []int8
 }
 
-func (m ModbusPDUWriteFileRecordResponseItem) lengthInBits() uint16 {
+func (m ModbusPDUWriteFileRecordResponseItem) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Simple field (referenceType)
@@ -50,14 +50,14 @@ func (m ModbusPDUWriteFileRecordResponseItem) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteFileRecordResponseItem) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteFileRecordResponseItem) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteFileRecordResponseItem) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteFileRecordResponseItem) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteFileRecordResponseItem) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteFileRecordResponseItem) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
index aa37144..8ab4459 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.go
@@ -27,8 +27,8 @@ type ModbusPDUWriteMultipleCoilsRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteMultipleCoilsRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteMultipleCoilsRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -47,14 +47,14 @@ func (m ModbusPDUWriteMultipleCoilsRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteMultipleCoilsRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteMultipleCoilsRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteMultipleCoilsRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteMultipleCoilsRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteMultipleCoilsRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteMultipleCoilsRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
index 8870ac8..c95ee59 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.go
@@ -26,8 +26,8 @@ type ModbusPDUWriteMultipleCoilsResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteMultipleCoilsResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteMultipleCoilsResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUWriteMultipleCoilsResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteMultipleCoilsResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteMultipleCoilsResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteMultipleCoilsResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteMultipleCoilsResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteMultipleCoilsResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteMultipleCoilsResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
index 492c018..f19afe8 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.go
@@ -27,8 +27,8 @@ type ModbusPDUWriteMultipleHoldingRegistersRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -47,14 +47,14 @@ func (m ModbusPDUWriteMultipleHoldingRegistersRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
index 28592f7..241623e 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.go
@@ -26,8 +26,8 @@ type ModbusPDUWriteMultipleHoldingRegistersResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (startingAddress)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUWriteMultipleHoldingRegistersResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteMultipleHoldingRegistersResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
index e7cf3e5..6b48e4b 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUWriteSingleCoilRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteSingleCoilRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteSingleCoilRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (address)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUWriteSingleCoilRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteSingleCoilRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteSingleCoilRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteSingleCoilRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteSingleCoilRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteSingleCoilRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteSingleCoilRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
index e3e7af9..fce6b04 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.go
@@ -26,8 +26,8 @@ type ModbusPDUWriteSingleCoilResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteSingleCoilResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteSingleCoilResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (address)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUWriteSingleCoilResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteSingleCoilResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteSingleCoilResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteSingleCoilResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteSingleCoilResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteSingleCoilResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteSingleCoilResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
index 9230fa3..ec83e1f 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.go
@@ -26,8 +26,8 @@ type ModbusPDUWriteSingleRegisterRequest struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteSingleRegisterRequest) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteSingleRegisterRequest) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (address)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUWriteSingleRegisterRequest) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteSingleRegisterRequest) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteSingleRegisterRequest) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteSingleRegisterRequest) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteSingleRegisterRequest) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteSingleRegisterRequest) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteSingleRegisterRequest) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
index 096d388..6fdefe2 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.go
@@ -26,8 +26,8 @@ type ModbusPDUWriteSingleRegisterResponse struct {
 	ModbusPDU
 }
 
-func (m ModbusPDUWriteSingleRegisterResponse) lengthInBits() uint16 {
-	var lengthInBits uint16 = m.ModbusPDU.lengthInBits()
+func (m ModbusPDUWriteSingleRegisterResponse) LengthInBits() uint16 {
+	var lengthInBits uint16 = m.ModbusPDU.LengthInBits()
 
 	// Simple field (address)
 	lengthInBits += 16
@@ -38,14 +38,14 @@ func (m ModbusPDUWriteSingleRegisterResponse) lengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m ModbusPDUWriteSingleRegisterResponse) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusPDUWriteSingleRegisterResponse) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusPDUWriteSingleRegisterResponse) parse(io spi.ReadBuffer) {
+func (m ModbusPDUWriteSingleRegisterResponse) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusPDUWriteSingleRegisterResponse) serialize(io spi.WriteBuffer) {
+func (m ModbusPDUWriteSingleRegisterResponse) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
index 098a859..ad25ac6 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusSerialADU.go
@@ -27,7 +27,7 @@ type ModbusSerialADU struct {
 	pdu           ModbusPDU
 }
 
-func (m ModbusSerialADU) lengthInBits() uint16 {
+func (m ModbusSerialADU) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Simple field (transactionId)
@@ -43,19 +43,19 @@ func (m ModbusSerialADU) lengthInBits() uint16 {
 	lengthInBits += 8
 
 	// Simple field (pdu)
-	lengthInBits += m.pdu.lengthInBits()
+	lengthInBits += m.pdu.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusSerialADU) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusSerialADU) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusSerialADU) parse(io spi.ReadBuffer) {
+func (m ModbusSerialADU) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusSerialADU) serialize(io spi.WriteBuffer) {
+func (m ModbusSerialADU) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
index 04788d4..0b321d3 100644
--- a/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
+++ b/sandbox/plc4go/generated-sources/plc4go/go/modbus/readwrite/ModbusTcpADU.go
@@ -26,7 +26,7 @@ type ModbusTcpADU struct {
 	pdu                   ModbusPDU
 }
 
-func (m ModbusTcpADU) lengthInBits() uint16 {
+func (m ModbusTcpADU) LengthInBits() uint16 {
 	var lengthInBits uint16 = 0
 
 	// Simple field (transactionIdentifier)
@@ -42,19 +42,19 @@ func (m ModbusTcpADU) lengthInBits() uint16 {
 	lengthInBits += 8
 
 	// Simple field (pdu)
-	lengthInBits += m.pdu.lengthInBits()
+	lengthInBits += m.pdu.LengthInBits()
 
 	return lengthInBits
 }
 
-func (m ModbusTcpADU) lengthInBytes() uint16 {
-	return m.lengthInBits() / 8
+func (m ModbusTcpADU) LengthInBytes() uint16 {
+	return m.LengthInBits() / 8
 }
 
-func (m ModbusTcpADU) parse(io spi.ReadBuffer) {
+func (m ModbusTcpADU) Parse(io spi.ReadBuffer) {
 	// TODO: Implement ...
 }
 
-func (m ModbusTcpADU) serialize(io spi.WriteBuffer) {
+func (m ModbusTcpADU) Serialize(io spi.WriteBuffer) {
 	// TODO: Implement ...
 }
diff --git a/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go b/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go
index 5f1996e..37b7996 100644
--- a/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go
+++ b/sandbox/plc4go/src/plc4go/spi/ReadBuffer.go
@@ -19,4 +19,75 @@
 package spi
 
 type ReadBuffer struct {
+	data    []uint8
+	bytePos uint8
+	bitPos  uint8
+}
+
+func (rb ReadBuffer) GetPos() uint16 {
+	return 0
+}
+
+func (rb ReadBuffer) GetBytes() []uint8 {
+	return rb.data
+}
+
+func (rb ReadBuffer) GetTotalBytes() uint64 {
+	return 0
+}
+
+func (rb ReadBuffer) HasMore(bitLength uint8) bool {
+	return false
+}
+
+func (rb ReadBuffer) PeekByte(offset uint8) uint8 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadBit() bool {
+	return false
+}
+
+func (rb ReadBuffer) ReadUint8(bitLength uint8) uint8 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadUint16(bitLength uint8) uint16 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadUint32(bitLength uint8) uint32 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadUint64(bitLength uint8) uint64 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadInt8(bitLength uint8) int8 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadInt16(bitLength uint8) int16 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadInt32(bitLength uint8) int32 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadInt64(bitLength uint8) int64 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadFloat32(bitLength uint8) float32 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadFloat64(bitLength uint8) float64 {
+	return 0
+}
+
+func (rb ReadBuffer) ReadString(bitLength uint8) string {
+	return ""
 }
diff --git a/sandbox/plc4go/src/plc4go/spi/WriteBuffer.go b/sandbox/plc4go/src/plc4go/spi/WriteBuffer.go
index 2684e51..2575054 100644
--- a/sandbox/plc4go/src/plc4go/spi/WriteBuffer.go
+++ b/sandbox/plc4go/src/plc4go/spi/WriteBuffer.go
@@ -19,4 +19,55 @@
 package spi
 
 type WriteBuffer struct {
+	data    []uint8
+	bytePos uint8
+	bitPos  uint8
+}
+
+func (rb WriteBuffer) GetPos() uint16 {
+	return 0
+}
+
+func (rb WriteBuffer) GetBytes() []uint8 {
+	return rb.data
+}
+
+func (rb WriteBuffer) GetTotalBytes() uint64 {
+	return 0
+}
+
+func (rb WriteBuffer) WriteBit(value bool) {
+}
+
+func (rb WriteBuffer) WriteUint8(bitLength uint8, value uint8) {
+}
+
+func (rb WriteBuffer) WriteUint16(bitLength uint8, value uint16) {
+}
+
+func (rb WriteBuffer) WriteUint32(bitLength uint8, value uint32) {
+}
+
+func (rb WriteBuffer) WriteUint64(bitLength uint8, value uint64) {
+}
+
+func (rb WriteBuffer) WriteInt8(bitLength uint8, value int8) {
+}
+
+func (rb WriteBuffer) WriteInt16(bitLength uint8, value int16) {
+}
+
+func (rb WriteBuffer) WriteInt32(bitLength uint8, value int32) {
+}
+
+func (rb WriteBuffer) WriteInt64(bitLength uint8, value int64) {
+}
+
+func (rb WriteBuffer) WriteFloat32(bitLength uint8, value float32) {
+}
+
+func (rb WriteBuffer) WriteFloat64(bitLength uint8, value float64) {
+}
+
+func (rb WriteBuffer) WriteString(bitLength uint8, value string) {
 }