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

(plc4x) 20/35: feat(code-gen/go): padding/reserved field reader

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

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

commit d42d01106de95da869c0e668a0d6ec745945594a
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Sat Aug 31 12:14:48 2024 +0200

    feat(code-gen/go): padding/reserved field reader
---
 .../templates/go/complex-type-template.go.ftlh     |  39 ++------
 .../readwrite/model/CIPEncapsulationPacket.go      |  18 +---
 .../abeth/readwrite/model/DF1RequestMessage.go     |  18 +---
 .../abeth/readwrite/model/DF1ResponseMessage.go    |  36 ++-----
 .../ads/discovery/readwrite/model/AmsString.go     |  18 +---
 .../model/AdsAddDeviceNotificationRequest.go       |  38 ++-----
 .../ads/readwrite/model/AdsSymbolTableEntry.go     |  36 ++-----
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |  18 +---
 .../protocols/ads/readwrite/model/AmsTCPPacket.go  |  18 +---
 .../bacnetip/readwrite/model/APDUAbort.go          |  20 +---
 .../bacnetip/readwrite/model/APDUComplexAck.go     |  18 +---
 .../readwrite/model/APDUConfirmedRequest.go        |  18 +---
 .../bacnetip/readwrite/model/APDUError.go          |  20 +---
 .../bacnetip/readwrite/model/APDUReject.go         |  20 +---
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |  20 +---
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |  20 +---
 .../readwrite/model/APDUUnconfirmedRequest.go      |  20 +---
 .../bacnetip/readwrite/model/NLMNetworkNumberIs.go |  20 +---
 .../bacnetip/readwrite/model/NPDUControl.go        |  38 ++-----
 .../protocols/cbus/readwrite/model/CALReplyLong.go |  18 +---
 .../model/CBusPointToMultiPointCommandNormal.go    |  20 +---
 .../model/CBusPointToMultiPointCommandStatus.go    |  38 ++-----
 .../model/CBusPointToPointCommandDirect.go         |  20 +---
 .../CBusPointToPointToMultiPointCommandStatus.go   |  20 +---
 .../cbus/readwrite/model/HVACAuxiliaryLevel.go     |  20 +---
 .../readwrite/model/HVACHumidityModeAndFlags.go    |  20 +---
 .../readwrite/model/HVACHumidityStatusFlags.go     |  20 +---
 .../cbus/readwrite/model/HVACModeAndFlags.go       |  20 +---
 .../cbus/readwrite/model/HVACStatusFlags.go        |  20 +---
 ...dentifyReplyCommandExtendedDiagnosticSummary.go |  56 +++--------
 .../cbus/readwrite/model/InterfaceOptions1.go      |  38 ++-----
 .../cbus/readwrite/model/InterfaceOptions2.go      | 110 ++++-----------------
 .../cbus/readwrite/model/InterfaceOptions3.go      |  74 +++-----------
 .../cbus/readwrite/model/LevelInformationAbsent.go |  20 +---
 .../cbus/readwrite/model/LightingLabelOptions.go   |  74 +++-----------
 .../cbus/readwrite/model/LogicAssignment.go        |  38 ++-----
 .../model/MonitoredSALLongFormSmartMode.go         |  18 +---
 .../model/NetworkProtocolControlInformation.go     |  20 +---
 .../readwrite/model/StatusRequestBinaryState.go    |  38 ++-----
 .../model/StatusRequestBinaryStateDeprecated.go    |  38 ++-----
 .../cbus/readwrite/model/StatusRequestLevel.go     |  38 ++-----
 .../cbus/readwrite/model/TelephonyDataRinging.go   |  20 +---
 .../readwrite/model/TriggerControlLabelOptions.go  |  74 +++-----------
 .../eip/readwrite/model/CipConnectedRequest.go     |  36 ++-----
 .../eip/readwrite/model/CipConnectedResponse.go    |  18 +---
 .../model/CipConnectionManagerCloseRequest.go      |  18 +---
 .../model/CipConnectionManagerCloseResponse.go     |  38 ++-----
 .../readwrite/model/CipConnectionManagerRequest.go |  18 +---
 .../model/CipConnectionManagerResponse.go          |  36 ++-----
 .../eip/readwrite/model/CipReadResponse.go         |  18 +---
 .../eip/readwrite/model/CipUnconnectedRequest.go   |  18 +---
 .../eip/readwrite/model/CipWriteResponse.go        |  20 +---
 .../eip/readwrite/model/ConnectedAddressItem.go    |  20 +---
 .../eip/readwrite/model/GetAttributeAllResponse.go |  18 +---
 .../eip/readwrite/model/MultipleServiceResponse.go |  18 +---
 .../readwrite/model/NetworkConnectionParameters.go |  56 +++--------
 .../eip/readwrite/model/NullAddressItem.go         |  20 +---
 .../eip/readwrite/model/ServicesResponse.go        |  36 ++-----
 .../model/FirmataCommandSetDigitalPinValue.go      |  20 +---
 .../firmata/readwrite/model/FirmataCommandSysex.go |  20 +---
 .../model/FirmataMessageSubscribeAnalogPinValue.go |  21 ++--
 .../FirmataMessageSubscribeDigitalPinValue.go      |  21 ++--
 .../ApduDataExtPropertyDescriptionResponse.go      |  38 ++-----
 .../readwrite/model/ApduDataGroupValueRead.go      |  20 +---
 ...ConnectionRequestInformationTunnelConnection.go |  20 +---
 .../readwrite/model/ConnectionStateRequest.go      |  21 ++--
 .../model/DeviceConfigurationRequestDataBlock.go   |  18 +---
 .../knxnetip/readwrite/model/DeviceStatus.go       |  20 +---
 .../knxnetip/readwrite/model/DisconnectRequest.go  |  21 ++--
 .../model/GroupObjectDescriptorRealisationType1.go |  20 +---
 .../knxnetip/readwrite/model/LPollData.go          |  20 +---
 .../readwrite/model/TunnelingRequestDataBlock.go   |  18 +---
 .../opcua/readwrite/model/AddReferencesItem.go     |  20 +---
 .../readwrite/model/AggregateConfiguration.go      |  38 ++-----
 .../opcua/readwrite/model/BitFieldDefinition.go    |  38 ++-----
 .../opcua/readwrite/model/BrowseDescription.go     |  20 +---
 .../opcua/readwrite/model/BrowseNextRequest.go     |  18 +---
 .../opcua/readwrite/model/CloseSessionRequest.go   |  20 +---
 .../readwrite/model/CreateSubscriptionRequest.go   |  20 +---
 .../opcua/readwrite/model/DataSetWriterDataType.go |  18 +---
 .../protocols/opcua/readwrite/model/DataValue.go   |  18 +---
 .../opcua/readwrite/model/DeleteNodesItem.go       |  20 +---
 .../opcua/readwrite/model/DeleteReferencesItem.go  |  38 ++-----
 .../opcua/readwrite/model/DiagnosticInfo.go        |  18 +---
 .../opcua/readwrite/model/EndpointConfiguration.go |  20 +---
 .../opcua/readwrite/model/ExtensionHeader.go       |  20 +---
 .../readwrite/model/ExtensionObjectEncodingMask.go |  20 +---
 .../opcua/readwrite/model/HistoryReadRequest.go    |  18 +---
 .../opcua/readwrite/model/LocalizedText.go         |  18 +---
 .../opcua/readwrite/model/MonitoringParameters.go  |  20 +---
 plc4go/protocols/opcua/readwrite/model/NodeId.go   |  20 +---
 .../opcua/readwrite/model/NodeReference.go         |  18 +---
 .../opcua/readwrite/model/NodeTypeDescription.go   |  18 +---
 .../readwrite/model/PubSubConfigurationDataType.go |  18 +---
 .../readwrite/model/PubSubConnectionDataType.go    |  18 +---
 .../opcua/readwrite/model/PubSubGroupDataType.go   |  18 +---
 .../opcua/readwrite/model/PublishResponse.go       |  18 +---
 .../opcua/readwrite/model/QueryNextRequest.go      |  20 +---
 .../opcua/readwrite/model/ReferenceDescription.go  |  20 +---
 .../model/ReferenceDescriptionDataType.go          |  20 +---
 .../readwrite/model/ReferenceListEntryDataType.go  |  20 +---
 .../opcua/readwrite/model/RegisteredServer.go      |  18 +---
 .../opcua/readwrite/model/RelativePathElement.go   |  20 +---
 .../readwrite/model/SetPublishingModeRequest.go    |  18 +---
 .../opcua/readwrite/model/StructureField.go        |  18 +---
 .../model/SubscriptionDiagnosticsDataType.go       |  20 +---
 .../opcua/readwrite/model/TimeZoneDataType.go      |  20 +---
 .../model/TransferSubscriptionsRequest.go          |  18 +---
 .../readwrite/model/AlarmMessageObjectQueryType.go |  18 +---
 .../protocols/s7/readwrite/model/S7AddressAny.go   |  18 +---
 plc4go/protocols/s7/readwrite/model/S7Message.go   |  18 +---
 .../s7/readwrite/model/S7MessageObjectRequest.go   |  36 ++-----
 .../s7/readwrite/model/S7MessageObjectResponse.go  |  20 +---
 .../readwrite/model/S7ParameterModeTransition.go   |  18 +---
 .../model/S7ParameterSetupCommunication.go         |  20 +---
 .../model/S7PayloadUserDataItemClkSetRequest.go    |  38 ++-----
 ...loadUserDataItemCpuFunctionAlarmQueryRequest.go |  36 ++-----
 ...serDataItemCpuFunctionMsgSubscriptionRequest.go |  18 +---
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  18 +---
 plc4go/protocols/s7/readwrite/model/TPKTPacket.go  |  18 +---
 plc4go/spi/codegen/fields/FieldReaderFactory.go    |   6 +-
 plc4go/spi/codegen/fields/FieldReaderOptional.go   |   6 +-
 plc4go/spi/codegen/fields/FieldReaderPadding.go    |  10 +-
 plc4go/spi/codegen/fields/FieldReaderReserved.go   |   6 +-
 124 files changed, 641 insertions(+), 2416 deletions(-)

diff --git a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
index 9674074c56..5e855233bd 100644
--- a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
@@ -941,45 +941,20 @@ func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 				<#break>
 			<#case "padding">
 				<#assign paddingField = field.asPaddingField().orElseThrow()>
+				<#assign typedField = field.asTypedField().orElseThrow()>
 				<#assign simpleTypeReference = paddingField.type.asSimpleTypeReference().orElseThrow()>
 
-	// Padding Field (padding)
-	{
-		if pullErr := readBuffer.PullContext("padding", utils.WithRenderAsList(true)); pullErr != nil {
-			return nil, errors.Wrap(pullErr, "Error pulling for padding")<@emitImport import="github.com/pkg/errors" />
-		}
-		_timesPadding := (${helper.toParseExpression(paddingField, helper.intTypeReference, paddingField.paddingCondition, parserArguments)})
-		for ;(readBuffer.HasMore(${helper.getNumBits(simpleTypeReference)})) && (_timesPadding > 0);_timesPadding-- {
-			// Just read the padding data and ignore it
-			_, _err := ${helper.getReadBufferReadMethodCall("", simpleTypeReference, paddingField)}
-			if _err != nil {
-				return nil, errors.Wrap(_err, "Error parsing 'padding' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
-			}
-		}
-		if closeErr := readBuffer.CloseContext("padding", utils.WithRenderAsList(true)); closeErr != nil {
-			return nil, errors.Wrap(closeErr, "Error closing for padding")<@emitImport import="github.com/pkg/errors" />
-		}
+	if err:= Read${field.typeName?cap_first}Field(ctx, ${helper.getDataReaderCall(typedField.type)}, (int) (${helper.toParseExpression(paddingField, paddingField.type, paddingField.paddingCondition, parserArguments)})${helper.getFieldOptions(typedField, parserArguments)}); err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing padding field"))<@emitImport import="github.com/pkg/errors" />
 	}
 				<#break>
 			<#case "reserved">
 				<#assign reservedField = field.asReservedField().orElseThrow()>
-				<#assign simpleTypeReference = reservedField.type.asSimpleTypeReference().orElseThrow()>
+				<#assign typedField = field.asTypedField().orElseThrow()>
 
-	var reservedField${reservedFieldIndex} *${helper.getLanguageTypeNameForTypeReference(simpleTypeReference)}
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := ${helper.getReadBufferReadMethodCall("reserved", simpleTypeReference, reservedField)}
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
-		}
-		if ${helper.toTypeSafeCompare(reservedField)} {
-			log.Info().Fields(map[string]any{
-				"expected value": ${helper.getReservedValue(reservedField)},
-				"got value": reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField${reservedFieldIndex}<#assign reservedFieldIndex=reservedFieldIndex+1> = &reserved
-		}
+	reservedField${reservedFieldIndex}<#assign reservedFieldIndex=reservedFieldIndex+1>,err := Read${field.typeName?cap_first}Field(ctx, "reserved", ${helper.getDataReaderCall(typedField.type)}, ${helper.getReservedValue(reservedField)}${helper.getFieldOptions(typedField, parserArguments)})
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))<@emitImport import="github.com/pkg/errors" />
 	}
 				<#break>
 			<#case "simple">
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
index 041c2c2153..e17d7ccd2f 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
@@ -220,21 +220,9 @@ func CIPEncapsulationPacketParseWithBuffer(ctx context.Context, readBuffer utils
 	}
 	options := _options
 
-	var reservedField0 *uint32
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint32("reserved", 32)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CIPEncapsulationPacket")
-		}
-		if reserved != uint32(0x00000000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint32(0x00000000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedInt(readBuffer, 32), uint32(0x00000000), codegen.WithByteOrder(binary.BigEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
index 28ed090746..9b03022f5b 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
@@ -190,21 +190,9 @@ func DF1RequestMessageParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	}
 	sourceAddress := _sourceAddress
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DF1RequestMessage")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	commandCode, err := ReadDiscriminatorField[uint8](ctx, "commandCode", ReadUnsignedByte(readBuffer, 8))
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
index acc451b669..f8b3a1cb29 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
@@ -183,21 +183,9 @@ func DF1ResponseMessageParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DF1ResponseMessage")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (destinationAddress)
@@ -214,21 +202,9 @@ func DF1ResponseMessageParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	}
 	sourceAddress := _sourceAddress
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DF1ResponseMessage")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	commandCode, err := ReadDiscriminatorField[uint8](ctx, "commandCode", ReadUnsignedByte(readBuffer, 8))
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go b/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go
index faa734b4d8..e92e564ad4 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go
@@ -137,21 +137,9 @@ func AmsStringParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer)
 	}
 	text := _text
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AmsString")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("AmsString"); closeErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go b/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
index 72af2fde82..e593e187bd 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -264,38 +266,14 @@ func AdsAddDeviceNotificationRequestParseWithBuffer(ctx context.Context, readBuf
 	}
 	cycleTimeInMs := _cycleTimeInMs
 
-	var reservedField0 *uint64
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint64("reserved", 64)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AdsAddDeviceNotificationRequest")
-		}
-		if reserved != uint64(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint64(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedLong(readBuffer, 64), uint64(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *uint64
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint64("reserved", 64)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AdsAddDeviceNotificationRequest")
-		}
-		if reserved != uint64(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint64(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedLong(readBuffer, 64), uint64(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("AdsAddDeviceNotificationRequest"); closeErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go b/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go
index 8022a0f633..913720f36f 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go
@@ -476,21 +476,9 @@ func AdsSymbolTableEntryParseWithBuffer(ctx context.Context, readBuffer utils.Re
 	}
 	flagPersistent := _flagPersistent
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 3)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AdsSymbolTableEntry")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 3), uint8(0x00), codegen.WithByteOrder(binary.LittleEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (flagExtendedFlags)
@@ -528,21 +516,9 @@ func AdsSymbolTableEntryParseWithBuffer(ctx context.Context, readBuffer utils.Re
 	}
 	flagContextMask := _flagContextMask
 
-	var reservedField1 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AdsSymbolTableEntry")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000), codegen.WithByteOrder(binary.LittleEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	nameLength, err := ReadImplicitField[uint16](ctx, "nameLength", ReadUnsignedShort(readBuffer, 16), codegen.WithByteOrder(binary.LittleEndian))
diff --git a/plc4go/protocols/ads/readwrite/model/AmsPacket.go b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
index fa233fcd9f..2195f1818c 100644
--- a/plc4go/protocols/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
@@ -378,21 +378,9 @@ func AmsPacketParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer)
 	}
 	_ = broadcast
 
-	var reservedField0 *int8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadInt8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AmsPacket")
-		}
-		if reserved != int8(0x0) {
-			log.Info().Fields(map[string]any{
-				"expected value": int8(0x0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadSignedByte(readBuffer, 7), int8(0x0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	length, err := ReadImplicitField[uint32](ctx, "length", ReadUnsignedInt(readBuffer, 32))
diff --git a/plc4go/protocols/ads/readwrite/model/AmsTCPPacket.go b/plc4go/protocols/ads/readwrite/model/AmsTCPPacket.go
index 2bf697f4da..7dd9e87142 100644
--- a/plc4go/protocols/ads/readwrite/model/AmsTCPPacket.go
+++ b/plc4go/protocols/ads/readwrite/model/AmsTCPPacket.go
@@ -126,21 +126,9 @@ func AmsTCPPacketParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AmsTCPPacket")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000), codegen.WithByteOrder(binary.LittleEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	length, err := ReadImplicitField[uint32](ctx, "length", ReadUnsignedInt(readBuffer, 32), codegen.WithByteOrder(binary.LittleEndian))
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUAbort.go b/plc4go/protocols/bacnetip/readwrite/model/APDUAbort.go
index 056dc97e4a..a2da51c66d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUAbort.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUAbort.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -168,21 +170,9 @@ func APDUAbortParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer,
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 3)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUAbort")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 3), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (server)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUComplexAck.go b/plc4go/protocols/bacnetip/readwrite/model/APDUComplexAck.go
index b66c8855f1..4debb3b945 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUComplexAck.go
@@ -294,21 +294,9 @@ func APDUComplexAckParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuf
 	}
 	moreFollows := _moreFollows
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUComplexAck")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 2), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (originalInvokeId)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUConfirmedRequest.go b/plc4go/protocols/bacnetip/readwrite/model/APDUConfirmedRequest.go
index b5dd3eb83d..98ef835dad 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -334,21 +334,9 @@ func APDUConfirmedRequestParseWithBuffer(ctx context.Context, readBuffer utils.R
 	}
 	segmentedResponseAccepted := _segmentedResponseAccepted
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUConfirmedRequest")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 2), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (maxSegmentsAccepted)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUError.go b/plc4go/protocols/bacnetip/readwrite/model/APDUError.go
index 7a66b0fbc1..d98a6c90d6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUError.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUError.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -168,21 +170,9 @@ func APDUErrorParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer,
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 4)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUError")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 4), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (originalInvokeId)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUReject.go b/plc4go/protocols/bacnetip/readwrite/model/APDUReject.go
index caad0ca810..dd795a1772 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUReject.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUReject.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -157,21 +159,9 @@ func APDURejectParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer,
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 4)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUReject")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 4), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (originalInvokeId)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUSegmentAck.go b/plc4go/protocols/bacnetip/readwrite/model/APDUSegmentAck.go
index 7147f18796..5c4d51c71c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -190,21 +192,9 @@ func APDUSegmentAckParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuf
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUSegmentAck")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 2), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (negativeAck)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUSimpleAck.go b/plc4go/protocols/bacnetip/readwrite/model/APDUSimpleAck.go
index b63556ed8e..0901cf7363 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUSimpleAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUSimpleAck.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -157,21 +159,9 @@ func APDUSimpleAckParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuff
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 4)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUSimpleAck")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 4), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (originalInvokeId)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/APDUUnconfirmedRequest.go b/plc4go/protocols/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
index abdc1d9004..6758fa2832 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -146,21 +148,9 @@ func APDUUnconfirmedRequestParseWithBuffer(ctx context.Context, readBuffer utils
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 4)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of APDUUnconfirmedRequest")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 4), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (serviceRequest)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLMNetworkNumberIs.go b/plc4go/protocols/bacnetip/readwrite/model/NLMNetworkNumberIs.go
index 03b2e2e04d..e7017668ed 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLMNetworkNumberIs.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLMNetworkNumberIs.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -164,21 +166,9 @@ func NLMNetworkNumberIsParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	}
 	networkNumber := _networkNumber
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NLMNetworkNumberIs")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (networkNumberConfigured)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NPDUControl.go b/plc4go/protocols/bacnetip/readwrite/model/NPDUControl.go
index 64c7488acb..fe720a9a11 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NPDUControl.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NPDUControl.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -170,21 +172,9 @@ func NPDUControlParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer
 	}
 	messageTypeFieldPresent := _messageTypeFieldPresent
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NPDUControl")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (destinationSpecified)
@@ -194,21 +184,9 @@ func NPDUControlParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer
 	}
 	destinationSpecified := _destinationSpecified
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NPDUControl")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (sourceSpecified)
diff --git a/plc4go/protocols/cbus/readwrite/model/CALReplyLong.go b/plc4go/protocols/cbus/readwrite/model/CALReplyLong.go
index b500f0dd35..52643d8dbd 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALReplyLong.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALReplyLong.go
@@ -234,21 +234,9 @@ func CALReplyLongParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CALReplyLong")
-		}
-		if reserved != byte(0x86) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x86),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x86))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Peek Field (terminatingByte)
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go
index bc53b8bb63..a8b4f3887c 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandNormal.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -168,21 +170,9 @@ func CBusPointToMultiPointCommandNormalParseWithBuffer(ctx context.Context, read
 		return nil, errors.Wrap(closeErr, "Error closing for application")
 	}
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CBusPointToMultiPointCommandNormal")
-		}
-		if reserved != byte(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (salData)
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go
index cbce6cd7a4..84c241143a 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommandStatus.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -148,38 +150,14 @@ func CBusPointToMultiPointCommandStatusParseWithBuffer(ctx context.Context, read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CBusPointToMultiPointCommandStatus")
-		}
-		if reserved != byte(0xFF) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0xFF),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0xFF))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CBusPointToMultiPointCommandStatus")
-		}
-		if reserved != byte(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (statusRequest)
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommandDirect.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommandDirect.go
index 3e4e460953..39439c8029 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommandDirect.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommandDirect.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -158,21 +160,9 @@ func CBusPointToPointCommandDirectParseWithBuffer(ctx context.Context, readBuffe
 		return nil, errors.Wrap(closeErr, "Error closing for unitAddress")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CBusPointToPointCommandDirect")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("CBusPointToPointCommandDirect"); closeErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommandStatus.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommandStatus.go
index d0a4c8076d..d0da738dd1 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommandStatus.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommandStatus.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -146,21 +148,9 @@ func CBusPointToPointToMultiPointCommandStatusParseWithBuffer(ctx context.Contex
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CBusPointToPointToMultiPointCommandStatus")
-		}
-		if reserved != byte(0xFF) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0xFF),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0xFF))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (statusRequest)
diff --git a/plc4go/protocols/cbus/readwrite/model/HVACAuxiliaryLevel.go b/plc4go/protocols/cbus/readwrite/model/HVACAuxiliaryLevel.go
index a30af6692c..4e701abc70 100644
--- a/plc4go/protocols/cbus/readwrite/model/HVACAuxiliaryLevel.go
+++ b/plc4go/protocols/cbus/readwrite/model/HVACAuxiliaryLevel.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -178,21 +180,9 @@ func HVACAuxiliaryLevelParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of HVACAuxiliaryLevel")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (fanMode)
diff --git a/plc4go/protocols/cbus/readwrite/model/HVACHumidityModeAndFlags.go b/plc4go/protocols/cbus/readwrite/model/HVACHumidityModeAndFlags.go
index 6e2ea176a3..5040362c1e 100644
--- a/plc4go/protocols/cbus/readwrite/model/HVACHumidityModeAndFlags.go
+++ b/plc4go/protocols/cbus/readwrite/model/HVACHumidityModeAndFlags.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -248,21 +250,9 @@ func HVACHumidityModeAndFlagsParseWithBuffer(ctx context.Context, readBuffer uti
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of HVACHumidityModeAndFlags")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (auxiliaryLevel)
diff --git a/plc4go/protocols/cbus/readwrite/model/HVACHumidityStatusFlags.go b/plc4go/protocols/cbus/readwrite/model/HVACHumidityStatusFlags.go
index 305d826b62..63146ed242 100644
--- a/plc4go/protocols/cbus/readwrite/model/HVACHumidityStatusFlags.go
+++ b/plc4go/protocols/cbus/readwrite/model/HVACHumidityStatusFlags.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -229,21 +231,9 @@ func HVACHumidityStatusFlagsParseWithBuffer(ctx context.Context, readBuffer util
 	}
 	busy := _busy
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of HVACHumidityStatusFlags")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (damperState)
diff --git a/plc4go/protocols/cbus/readwrite/model/HVACModeAndFlags.go b/plc4go/protocols/cbus/readwrite/model/HVACModeAndFlags.go
index 1331f0c84e..11e36b57d8 100644
--- a/plc4go/protocols/cbus/readwrite/model/HVACModeAndFlags.go
+++ b/plc4go/protocols/cbus/readwrite/model/HVACModeAndFlags.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -248,21 +250,9 @@ func HVACModeAndFlagsParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of HVACModeAndFlags")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (auxiliaryLevel)
diff --git a/plc4go/protocols/cbus/readwrite/model/HVACStatusFlags.go b/plc4go/protocols/cbus/readwrite/model/HVACStatusFlags.go
index 256dde8e42..d221c92490 100644
--- a/plc4go/protocols/cbus/readwrite/model/HVACStatusFlags.go
+++ b/plc4go/protocols/cbus/readwrite/model/HVACStatusFlags.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -229,21 +231,9 @@ func HVACStatusFlagsParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 	}
 	busy := _busy
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of HVACStatusFlags")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (damperState)
diff --git a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandExtendedDiagnosticSummary.go b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandExtendedDiagnosticSummary.go
index b21ad544d7..a673a23ccf 100644
--- a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandExtendedDiagnosticSummary.go
+++ b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandExtendedDiagnosticSummary.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -452,55 +454,19 @@ func IdentifyReplyCommandExtendedDiagnosticSummaryParseWithBuffer(ctx context.Co
 	}
 	networkVoltageMarginal := _networkVoltageMarginal
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of IdentifyReplyCommandExtendedDiagnosticSummary")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of IdentifyReplyCommandExtendedDiagnosticSummary")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField2 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of IdentifyReplyCommandExtendedDiagnosticSummary")
-		}
-		if reserved != uint8(0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField2 = &reserved
-		}
+	reservedField2, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enableChecksumAlarm)
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go
index f8cd5a051f..1dc72b61ed 100644
--- a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions1.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -173,21 +175,9 @@ func InterfaceOptions1ParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions1")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (idmon)
@@ -225,21 +215,9 @@ func InterfaceOptions1ParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	}
 	xonXoff := _xonXoff
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions1")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (connect)
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go
index 006da063a0..8b9807bea6 100644
--- a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions2.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -149,21 +151,9 @@ func InterfaceOptions2ParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (burden)
@@ -173,89 +163,29 @@ func InterfaceOptions2ParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	}
 	burden := _burden
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField2 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField2 = &reserved
-		}
+	reservedField2, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField3 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField3 = &reserved
-		}
+	reservedField3, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField4 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField4 = &reserved
-		}
+	reservedField4, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField5 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions2")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField5 = &reserved
-		}
+	reservedField5, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (clockGen)
diff --git a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go
index 2b3f8979ef..e9288b1d97 100644
--- a/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go
+++ b/plc4go/protocols/cbus/readwrite/model/InterfaceOptions3.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -161,72 +163,24 @@ func InterfaceOptions3ParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField2 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField2 = &reserved
-		}
+	reservedField2, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField3 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of InterfaceOptions3")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField3 = &reserved
-		}
+	reservedField3, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (exstat)
diff --git a/plc4go/protocols/cbus/readwrite/model/LevelInformationAbsent.go b/plc4go/protocols/cbus/readwrite/model/LevelInformationAbsent.go
index ac423efd16..dac48277b5 100644
--- a/plc4go/protocols/cbus/readwrite/model/LevelInformationAbsent.go
+++ b/plc4go/protocols/cbus/readwrite/model/LevelInformationAbsent.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -123,21 +125,9 @@ func LevelInformationAbsentParseWithBuffer(ctx context.Context, readBuffer utils
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LevelInformationAbsent")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("LevelInformationAbsent"); closeErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/LightingLabelOptions.go b/plc4go/protocols/cbus/readwrite/model/LightingLabelOptions.go
index d07488616b..7a69b9ee07 100644
--- a/plc4go/protocols/cbus/readwrite/model/LightingLabelOptions.go
+++ b/plc4go/protocols/cbus/readwrite/model/LightingLabelOptions.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -141,21 +143,9 @@ func LightingLabelOptionsParseWithBuffer(ctx context.Context, readBuffer utils.R
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LightingLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (labelFlavour)
@@ -171,38 +161,14 @@ func LightingLabelOptionsParseWithBuffer(ctx context.Context, readBuffer utils.R
 		return nil, errors.Wrap(closeErr, "Error closing for labelFlavour")
 	}
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LightingLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField2 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LightingLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField2 = &reserved
-		}
+	reservedField2, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (labelType)
@@ -218,21 +184,9 @@ func LightingLabelOptionsParseWithBuffer(ctx context.Context, readBuffer utils.R
 		return nil, errors.Wrap(closeErr, "Error closing for labelType")
 	}
 
-	var reservedField3 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LightingLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField3 = &reserved
-		}
+	reservedField3, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("LightingLabelOptions"); closeErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/LogicAssignment.go b/plc4go/protocols/cbus/readwrite/model/LogicAssignment.go
index a4f01b7d01..747a357315 100644
--- a/plc4go/protocols/cbus/readwrite/model/LogicAssignment.go
+++ b/plc4go/protocols/cbus/readwrite/model/LogicAssignment.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -187,38 +189,14 @@ func LogicAssignmentParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 	}
 	reStrikeDelay := _reStrikeDelay
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LogicAssignment")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LogicAssignment")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (assignedToGav16)
diff --git a/plc4go/protocols/cbus/readwrite/model/MonitoredSALLongFormSmartMode.go b/plc4go/protocols/cbus/readwrite/model/MonitoredSALLongFormSmartMode.go
index 4c4419b6a1..a977bed5ab 100644
--- a/plc4go/protocols/cbus/readwrite/model/MonitoredSALLongFormSmartMode.go
+++ b/plc4go/protocols/cbus/readwrite/model/MonitoredSALLongFormSmartMode.go
@@ -248,21 +248,9 @@ func MonitoredSALLongFormSmartModeParseWithBuffer(ctx context.Context, readBuffe
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of MonitoredSALLongFormSmartMode")
-		}
-		if reserved != byte(0x05) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x05),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x05))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Peek Field (terminatingByte)
diff --git a/plc4go/protocols/cbus/readwrite/model/NetworkProtocolControlInformation.go b/plc4go/protocols/cbus/readwrite/model/NetworkProtocolControlInformation.go
index 1a98c4172f..21aa9a2b9c 100644
--- a/plc4go/protocols/cbus/readwrite/model/NetworkProtocolControlInformation.go
+++ b/plc4go/protocols/cbus/readwrite/model/NetworkProtocolControlInformation.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -129,21 +131,9 @@ func NetworkProtocolControlInformationParseWithBuffer(ctx context.Context, readB
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NetworkProtocolControlInformation")
-		}
-		if reserved != uint8(0x0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 2), uint8(0x0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (stackCounter)
diff --git a/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryState.go b/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryState.go
index a3f3642bdf..03a965a6b8 100644
--- a/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryState.go
+++ b/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryState.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -148,21 +150,9 @@ func StatusRequestBinaryStateParseWithBuffer(ctx context.Context, readBuffer uti
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StatusRequestBinaryState")
-		}
-		if reserved != byte(0x7A) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x7A),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x7A))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (application)
@@ -178,21 +168,9 @@ func StatusRequestBinaryStateParseWithBuffer(ctx context.Context, readBuffer uti
 		return nil, errors.Wrap(closeErr, "Error closing for application")
 	}
 
-	var reservedField1 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StatusRequestBinaryState")
-		}
-		if reserved != byte(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("StatusRequestBinaryState"); closeErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryStateDeprecated.go b/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryStateDeprecated.go
index cdc6dcfb95..f4b4e174f0 100644
--- a/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryStateDeprecated.go
+++ b/plc4go/protocols/cbus/readwrite/model/StatusRequestBinaryStateDeprecated.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -148,21 +150,9 @@ func StatusRequestBinaryStateDeprecatedParseWithBuffer(ctx context.Context, read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StatusRequestBinaryStateDeprecated")
-		}
-		if reserved != byte(0xFA) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0xFA),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0xFA))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (application)
@@ -178,21 +168,9 @@ func StatusRequestBinaryStateDeprecatedParseWithBuffer(ctx context.Context, read
 		return nil, errors.Wrap(closeErr, "Error closing for application")
 	}
 
-	var reservedField1 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StatusRequestBinaryStateDeprecated")
-		}
-		if reserved != byte(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("StatusRequestBinaryStateDeprecated"); closeErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/StatusRequestLevel.go b/plc4go/protocols/cbus/readwrite/model/StatusRequestLevel.go
index 5023281f54..6bce438f44 100644
--- a/plc4go/protocols/cbus/readwrite/model/StatusRequestLevel.go
+++ b/plc4go/protocols/cbus/readwrite/model/StatusRequestLevel.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -159,38 +161,14 @@ func StatusRequestLevelParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StatusRequestLevel")
-		}
-		if reserved != byte(0x73) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x73),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x73))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StatusRequestLevel")
-		}
-		if reserved != byte(0x07) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x07),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x07))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (application)
diff --git a/plc4go/protocols/cbus/readwrite/model/TelephonyDataRinging.go b/plc4go/protocols/cbus/readwrite/model/TelephonyDataRinging.go
index 4d903ae4bf..56ad1450af 100644
--- a/plc4go/protocols/cbus/readwrite/model/TelephonyDataRinging.go
+++ b/plc4go/protocols/cbus/readwrite/model/TelephonyDataRinging.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -145,21 +147,9 @@ func TelephonyDataRingingParseWithBuffer(ctx context.Context, readBuffer utils.R
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TelephonyDataRinging")
-		}
-		if reserved != byte(0x01) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x01),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x01))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (number)
diff --git a/plc4go/protocols/cbus/readwrite/model/TriggerControlLabelOptions.go b/plc4go/protocols/cbus/readwrite/model/TriggerControlLabelOptions.go
index 3e14f773f1..61faebd329 100644
--- a/plc4go/protocols/cbus/readwrite/model/TriggerControlLabelOptions.go
+++ b/plc4go/protocols/cbus/readwrite/model/TriggerControlLabelOptions.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -141,21 +143,9 @@ func TriggerControlLabelOptionsParseWithBuffer(ctx context.Context, readBuffer u
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TriggerControlLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (labelFlavour)
@@ -171,38 +161,14 @@ func TriggerControlLabelOptionsParseWithBuffer(ctx context.Context, readBuffer u
 		return nil, errors.Wrap(closeErr, "Error closing for labelFlavour")
 	}
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TriggerControlLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField2 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TriggerControlLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField2 = &reserved
-		}
+	reservedField2, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (labelType)
@@ -218,21 +184,9 @@ func TriggerControlLabelOptionsParseWithBuffer(ctx context.Context, readBuffer u
 		return nil, errors.Wrap(closeErr, "Error closing for labelType")
 	}
 
-	var reservedField3 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TriggerControlLabelOptions")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField3 = &reserved
-		}
+	reservedField3, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("TriggerControlLabelOptions"); closeErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectedRequest.go b/plc4go/protocols/eip/readwrite/model/CipConnectedRequest.go
index 5ac0573b69..2ccd167c6e 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectedRequest.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectedRequest.go
@@ -176,38 +176,14 @@ func CipConnectedRequestParseWithBuffer(ctx context.Context, readBuffer utils.Re
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'pathSegments' field"))
 	}
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectedRequest")
-		}
-		if reserved != uint16(0x0001) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0001),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0001))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *uint32
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint32("reserved", 32)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectedRequest")
-		}
-		if reserved != uint32(0x00000000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint32(0x00000000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedInt(readBuffer, 32), uint32(0x00000000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("CipConnectedRequest"); closeErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectedResponse.go b/plc4go/protocols/eip/readwrite/model/CipConnectedResponse.go
index 97c436aa62..17fc0777fb 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectedResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectedResponse.go
@@ -180,21 +180,9 @@ func CipConnectedResponseParseWithBuffer(ctx context.Context, readBuffer utils.R
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectedResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (status)
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go
index b69436fcad..0dbc982bd2 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go
@@ -352,21 +352,9 @@ func CipConnectionManagerCloseRequestParseWithBuffer(ctx context.Context, readBu
 	}
 	connectionPathSize := _connectionPathSize
 
-	var reservedField0 *byte
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectionManagerCloseRequest")
-		}
-		if reserved != byte(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": byte(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadByte(readBuffer, 8), byte(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	connectionPaths, err := ReadTerminatedArrayField[PathSegment](ctx, "connectionPaths", ReadComplex[PathSegment](PathSegmentParseWithBuffer, readBuffer), NoMorePathSegments(ctx, readBuffer))
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseResponse.go b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseResponse.go
index f154f26666..b8b3034fbc 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseResponse.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -213,21 +215,9 @@ func CipConnectionManagerCloseResponseParseWithBuffer(ctx context.Context, readB
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectionManagerCloseResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (status)
@@ -272,21 +262,9 @@ func CipConnectionManagerCloseResponseParseWithBuffer(ctx context.Context, readB
 	}
 	applicationReplySize := _applicationReplySize
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectionManagerCloseResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("CipConnectionManagerCloseResponse"); closeErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go
index f6f407565c..9953608fea 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go
@@ -445,21 +445,9 @@ func CipConnectionManagerRequestParseWithBuffer(ctx context.Context, readBuffer
 	}
 	timeoutMultiplier := _timeoutMultiplier
 
-	var reservedField0 *uint32
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint32("reserved", 24)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectionManagerRequest")
-		}
-		if reserved != uint32(0x000000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint32(0x000000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedInt(readBuffer, 24), uint32(0x000000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (otRpi)
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerResponse.go b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerResponse.go
index d64ed08c83..512060aebb 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerResponse.go
@@ -229,21 +229,9 @@ func CipConnectionManagerResponseParseWithBuffer(ctx context.Context, readBuffer
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint32
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint32("reserved", 24)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectionManagerResponse")
-		}
-		if reserved != uint32(0x000000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint32(0x000000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedInt(readBuffer, 24), uint32(0x000000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (otConnectionId)
@@ -301,21 +289,9 @@ func CipConnectionManagerResponseParseWithBuffer(ctx context.Context, readBuffer
 	}
 	_ = replySize
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipConnectionManagerResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("CipConnectionManagerResponse"); closeErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CipReadResponse.go b/plc4go/protocols/eip/readwrite/model/CipReadResponse.go
index edafc8dd86..ed1e0c8263 100644
--- a/plc4go/protocols/eip/readwrite/model/CipReadResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/CipReadResponse.go
@@ -180,21 +180,9 @@ func CipReadResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipReadResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (status)
diff --git a/plc4go/protocols/eip/readwrite/model/CipUnconnectedRequest.go b/plc4go/protocols/eip/readwrite/model/CipUnconnectedRequest.go
index d99f4ac018..3bc79f4b4d 100644
--- a/plc4go/protocols/eip/readwrite/model/CipUnconnectedRequest.go
+++ b/plc4go/protocols/eip/readwrite/model/CipUnconnectedRequest.go
@@ -257,21 +257,9 @@ func CipUnconnectedRequestParseWithBuffer(ctx context.Context, readBuffer utils.
 		return nil, errors.Wrap(closeErr, "Error closing for instanceSegment")
 	}
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipUnconnectedRequest")
-		}
-		if reserved != uint16(0x9D05) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x9D05),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x9D05))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	messageSize, err := ReadImplicitField[uint16](ctx, "messageSize", ReadUnsignedShort(readBuffer, 16))
diff --git a/plc4go/protocols/eip/readwrite/model/CipWriteResponse.go b/plc4go/protocols/eip/readwrite/model/CipWriteResponse.go
index 6521d03512..11d6458d15 100644
--- a/plc4go/protocols/eip/readwrite/model/CipWriteResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/CipWriteResponse.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -165,21 +167,9 @@ func CipWriteResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CipWriteResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (status)
diff --git a/plc4go/protocols/eip/readwrite/model/ConnectedAddressItem.go b/plc4go/protocols/eip/readwrite/model/ConnectedAddressItem.go
index d35ac0ec63..47e5b78a58 100644
--- a/plc4go/protocols/eip/readwrite/model/ConnectedAddressItem.go
+++ b/plc4go/protocols/eip/readwrite/model/ConnectedAddressItem.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -146,21 +148,9 @@ func ConnectedAddressItemParseWithBuffer(ctx context.Context, readBuffer utils.R
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ConnectedAddressItem")
-		}
-		if reserved != uint16(0x0004) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0004),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0004))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (connectionId)
diff --git a/plc4go/protocols/eip/readwrite/model/GetAttributeAllResponse.go b/plc4go/protocols/eip/readwrite/model/GetAttributeAllResponse.go
index ca05baea27..dd17b6c2f7 100644
--- a/plc4go/protocols/eip/readwrite/model/GetAttributeAllResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/GetAttributeAllResponse.go
@@ -180,21 +180,9 @@ func GetAttributeAllResponseParseWithBuffer(ctx context.Context, readBuffer util
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of GetAttributeAllResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (status)
diff --git a/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go b/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go
index 0af8cc04c6..44109bcbc2 100644
--- a/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go
@@ -204,21 +204,9 @@ func MultipleServiceResponseParseWithBuffer(ctx context.Context, readBuffer util
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of MultipleServiceResponse")
-		}
-		if reserved != uint8(0x0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (status)
diff --git a/plc4go/protocols/eip/readwrite/model/NetworkConnectionParameters.go b/plc4go/protocols/eip/readwrite/model/NetworkConnectionParameters.go
index 1b1a8e22fd..30341391b1 100644
--- a/plc4go/protocols/eip/readwrite/model/NetworkConnectionParameters.go
+++ b/plc4go/protocols/eip/readwrite/model/NetworkConnectionParameters.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -174,21 +176,9 @@ func NetworkConnectionParametersParseWithBuffer(ctx context.Context, readBuffer
 	}
 	connectionSize := _connectionSize
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NetworkConnectionParameters")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (owner)
@@ -205,21 +195,9 @@ func NetworkConnectionParametersParseWithBuffer(ctx context.Context, readBuffer
 	}
 	connectionType := _connectionType
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NetworkConnectionParameters")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (priority)
@@ -236,21 +214,9 @@ func NetworkConnectionParametersParseWithBuffer(ctx context.Context, readBuffer
 	}
 	connectionSizeType := _connectionSizeType
 
-	var reservedField2 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NetworkConnectionParameters")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField2 = &reserved
-		}
+	reservedField2, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("NetworkConnectionParameters"); closeErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/NullAddressItem.go b/plc4go/protocols/eip/readwrite/model/NullAddressItem.go
index 67c765c486..4ba9a2b423 100644
--- a/plc4go/protocols/eip/readwrite/model/NullAddressItem.go
+++ b/plc4go/protocols/eip/readwrite/model/NullAddressItem.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -125,21 +127,9 @@ func NullAddressItemParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NullAddressItem")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("NullAddressItem"); closeErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/ServicesResponse.go b/plc4go/protocols/eip/readwrite/model/ServicesResponse.go
index 9cdebf4f0b..79c5b41df3 100644
--- a/plc4go/protocols/eip/readwrite/model/ServicesResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/ServicesResponse.go
@@ -203,21 +203,9 @@ func ServicesResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 	}
 	encapsulationProtocol := _encapsulationProtocol
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ServicesResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 2), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (supportsCIPEncapsulation)
@@ -227,21 +215,9 @@ func ServicesResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 	}
 	supportsCIPEncapsulation := _supportsCIPEncapsulation
 
-	var reservedField1 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 12)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ServicesResponse")
-		}
-		if reserved != uint16(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 12), uint16(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (supportsUDP)
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataCommandSetDigitalPinValue.go b/plc4go/protocols/firmata/readwrite/model/FirmataCommandSetDigitalPinValue.go
index 5e3d9721fc..52c627151c 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataCommandSetDigitalPinValue.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataCommandSetDigitalPinValue.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -164,21 +166,9 @@ func FirmataCommandSetDigitalPinValueParseWithBuffer(ctx context.Context, readBu
 	}
 	pin := _pin
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of FirmataCommandSetDigitalPinValue")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (on)
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataCommandSysex.go b/plc4go/protocols/firmata/readwrite/model/FirmataCommandSysex.go
index a7594613a5..1c75c39899 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataCommandSysex.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataCommandSysex.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -159,21 +161,9 @@ func FirmataCommandSysexParseWithBuffer(ctx context.Context, readBuffer utils.Re
 		return nil, errors.Wrap(closeErr, "Error closing for command")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of FirmataCommandSysex")
-		}
-		if reserved != uint8(0xF7) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0xF7),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0xF7))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("FirmataCommandSysex"); closeErr != nil {
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeAnalogPinValue.go b/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeAnalogPinValue.go
index 872764539e..a8594c6057 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeAnalogPinValue.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeAnalogPinValue.go
@@ -27,6 +27,9 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	"github.com/apache/plc4x/plc4go/spi/codegen"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -165,21 +168,9 @@ func FirmataMessageSubscribeAnalogPinValueParseWithBuffer(ctx context.Context, r
 	}
 	pin := _pin
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of FirmataMessageSubscribeAnalogPinValue")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00), codegen.WithByteOrder(binary.BigEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enable)
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeDigitalPinValue.go b/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeDigitalPinValue.go
index 5dd6c5aea4..83f063c009 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeDigitalPinValue.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataMessageSubscribeDigitalPinValue.go
@@ -27,6 +27,9 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	"github.com/apache/plc4x/plc4go/spi/codegen"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -165,21 +168,9 @@ func FirmataMessageSubscribeDigitalPinValueParseWithBuffer(ctx context.Context,
 	}
 	pin := _pin
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of FirmataMessageSubscribeDigitalPinValue")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00), codegen.WithByteOrder(binary.BigEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enable)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go b/plc4go/protocols/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
index 87104c1700..47b561ac0f 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -255,21 +257,9 @@ func ApduDataExtPropertyDescriptionResponseParseWithBuffer(ctx context.Context,
 	}
 	writeEnabled := _writeEnabled
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ApduDataExtPropertyDescriptionResponse")
-		}
-		if reserved != uint8(0x0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0x0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (propertyDataType)
@@ -285,21 +275,9 @@ func ApduDataExtPropertyDescriptionResponseParseWithBuffer(ctx context.Context,
 		return nil, errors.Wrap(closeErr, "Error closing for propertyDataType")
 	}
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 4)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ApduDataExtPropertyDescriptionResponse")
-		}
-		if reserved != uint8(0x0) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x0),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 4), uint8(0x0))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (maxNrOfElements)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ApduDataGroupValueRead.go b/plc4go/protocols/knxnetip/readwrite/model/ApduDataGroupValueRead.go
index 9ffebca70e..5d75ba8047 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ApduDataGroupValueRead.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ApduDataGroupValueRead.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -125,21 +127,9 @@ func ApduDataGroupValueReadParseWithBuffer(ctx context.Context, readBuffer utils
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 6)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ApduDataGroupValueRead")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 6), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("ApduDataGroupValueRead"); closeErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go b/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
index 2089f635de..f48befafa3 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -160,21 +162,9 @@ func ConnectionRequestInformationTunnelConnectionParseWithBuffer(ctx context.Con
 		return nil, errors.Wrap(closeErr, "Error closing for knxLayer")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ConnectionRequestInformationTunnelConnection")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("ConnectionRequestInformationTunnelConnection"); closeErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ConnectionStateRequest.go b/plc4go/protocols/knxnetip/readwrite/model/ConnectionStateRequest.go
index 7c390e25ce..b1080131ea 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ConnectionStateRequest.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ConnectionStateRequest.go
@@ -27,6 +27,9 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	"github.com/apache/plc4x/plc4go/spi/codegen"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -165,21 +168,9 @@ func ConnectionStateRequestParseWithBuffer(ctx context.Context, readBuffer utils
 	}
 	communicationChannelId := _communicationChannelId
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ConnectionStateRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00), codegen.WithByteOrder(binary.BigEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (hpaiControlEndpoint)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go b/plc4go/protocols/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
index d845aff765..abe1b7a0ae 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
@@ -154,21 +154,9 @@ func DeviceConfigurationRequestDataBlockParseWithBuffer(ctx context.Context, rea
 	}
 	sequenceCounter := _sequenceCounter
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DeviceConfigurationRequestDataBlock")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("DeviceConfigurationRequestDataBlock"); closeErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/DeviceStatus.go b/plc4go/protocols/knxnetip/readwrite/model/DeviceStatus.go
index 59654325bb..21f9a634c8 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/DeviceStatus.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/DeviceStatus.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -119,21 +121,9 @@ func DeviceStatusParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DeviceStatus")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (programMode)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/DisconnectRequest.go b/plc4go/protocols/knxnetip/readwrite/model/DisconnectRequest.go
index 17b0fc3b39..d49cbed7ed 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/DisconnectRequest.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/DisconnectRequest.go
@@ -27,6 +27,9 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	"github.com/apache/plc4x/plc4go/spi/codegen"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -165,21 +168,9 @@ func DisconnectRequestParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	}
 	communicationChannelId := _communicationChannelId
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DisconnectRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00), codegen.WithByteOrder(binary.BigEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (hpaiControlEndpoint)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go b/plc4go/protocols/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
index b9c0f8ce0b..40032b5828 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -196,21 +198,9 @@ func GroupObjectDescriptorRealisationType1ParseWithBuffer(ctx context.Context, r
 	}
 	dataPointer := _dataPointer
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 1)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of GroupObjectDescriptorRealisationType1")
-		}
-		if reserved != uint8(0x1) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x1),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 1), uint8(0x1))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (transmitEnable)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LPollData.go b/plc4go/protocols/knxnetip/readwrite/model/LPollData.go
index 826c98534f..45754dd25a 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LPollData.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LPollData.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -198,21 +200,9 @@ func LPollDataParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer)
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'targetAddress' field"))
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 4)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LPollData")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 4), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (numberExpectedPollData)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/TunnelingRequestDataBlock.go b/plc4go/protocols/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
index f6bdd8806d..e064b757be 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
@@ -154,21 +154,9 @@ func TunnelingRequestDataBlockParseWithBuffer(ctx context.Context, readBuffer ut
 	}
 	sequenceCounter := _sequenceCounter
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TunnelingRequestDataBlock")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("TunnelingRequestDataBlock"); closeErr != nil {
diff --git a/plc4go/protocols/opcua/readwrite/model/AddReferencesItem.go b/plc4go/protocols/opcua/readwrite/model/AddReferencesItem.go
index 4e3c566a2b..ea81fdb798 100644
--- a/plc4go/protocols/opcua/readwrite/model/AddReferencesItem.go
+++ b/plc4go/protocols/opcua/readwrite/model/AddReferencesItem.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -227,21 +229,9 @@ func AddReferencesItemParseWithBuffer(ctx context.Context, readBuffer utils.Read
 		return nil, errors.Wrap(closeErr, "Error closing for referenceTypeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AddReferencesItem")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isForward)
diff --git a/plc4go/protocols/opcua/readwrite/model/AggregateConfiguration.go b/plc4go/protocols/opcua/readwrite/model/AggregateConfiguration.go
index 85322d8f0f..5a49532433 100644
--- a/plc4go/protocols/opcua/readwrite/model/AggregateConfiguration.go
+++ b/plc4go/protocols/opcua/readwrite/model/AggregateConfiguration.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -194,21 +196,9 @@ func AggregateConfigurationParseWithBuffer(ctx context.Context, readBuffer utils
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 6)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AggregateConfiguration")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 6), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (treatUncertainAsBad)
@@ -239,21 +229,9 @@ func AggregateConfigurationParseWithBuffer(ctx context.Context, readBuffer utils
 	}
 	percentDataGood := _percentDataGood
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AggregateConfiguration")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (useSlopedExtrapolation)
diff --git a/plc4go/protocols/opcua/readwrite/model/BitFieldDefinition.go b/plc4go/protocols/opcua/readwrite/model/BitFieldDefinition.go
index bc35d820d3..ee102c420d 100644
--- a/plc4go/protocols/opcua/readwrite/model/BitFieldDefinition.go
+++ b/plc4go/protocols/opcua/readwrite/model/BitFieldDefinition.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -209,38 +211,14 @@ func BitFieldDefinitionParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 		return nil, errors.Wrap(closeErr, "Error closing for description")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of BitFieldDefinition")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of BitFieldDefinition")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (startingBitPosition)
diff --git a/plc4go/protocols/opcua/readwrite/model/BrowseDescription.go b/plc4go/protocols/opcua/readwrite/model/BrowseDescription.go
index f04f37386c..47845e4d9f 100644
--- a/plc4go/protocols/opcua/readwrite/model/BrowseDescription.go
+++ b/plc4go/protocols/opcua/readwrite/model/BrowseDescription.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -240,21 +242,9 @@ func BrowseDescriptionParseWithBuffer(ctx context.Context, readBuffer utils.Read
 		return nil, errors.Wrap(closeErr, "Error closing for referenceTypeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of BrowseDescription")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (includeSubtypes)
diff --git a/plc4go/protocols/opcua/readwrite/model/BrowseNextRequest.go b/plc4go/protocols/opcua/readwrite/model/BrowseNextRequest.go
index 5371c93a0e..b3b5e00bad 100644
--- a/plc4go/protocols/opcua/readwrite/model/BrowseNextRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/BrowseNextRequest.go
@@ -201,21 +201,9 @@ func BrowseNextRequestParseWithBuffer(ctx context.Context, readBuffer utils.Read
 		return nil, errors.Wrap(closeErr, "Error closing for requestHeader")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of BrowseNextRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (releaseContinuationPoints)
diff --git a/plc4go/protocols/opcua/readwrite/model/CloseSessionRequest.go b/plc4go/protocols/opcua/readwrite/model/CloseSessionRequest.go
index b5f4b2178c..7f35e4202c 100644
--- a/plc4go/protocols/opcua/readwrite/model/CloseSessionRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/CloseSessionRequest.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -170,21 +172,9 @@ func CloseSessionRequestParseWithBuffer(ctx context.Context, readBuffer utils.Re
 		return nil, errors.Wrap(closeErr, "Error closing for requestHeader")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CloseSessionRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (deleteSubscriptions)
diff --git a/plc4go/protocols/opcua/readwrite/model/CreateSubscriptionRequest.go b/plc4go/protocols/opcua/readwrite/model/CreateSubscriptionRequest.go
index 96d71145b7..cad949c0dc 100644
--- a/plc4go/protocols/opcua/readwrite/model/CreateSubscriptionRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/CreateSubscriptionRequest.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -253,21 +255,9 @@ func CreateSubscriptionRequestParseWithBuffer(ctx context.Context, readBuffer ut
 	}
 	maxNotificationsPerPublish := _maxNotificationsPerPublish
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of CreateSubscriptionRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (publishingEnabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/DataSetWriterDataType.go b/plc4go/protocols/opcua/readwrite/model/DataSetWriterDataType.go
index abfcd59a58..50d83a712e 100644
--- a/plc4go/protocols/opcua/readwrite/model/DataSetWriterDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/DataSetWriterDataType.go
@@ -267,21 +267,9 @@ func DataSetWriterDataTypeParseWithBuffer(ctx context.Context, readBuffer utils.
 		return nil, errors.Wrap(closeErr, "Error closing for name")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DataSetWriterDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/DataValue.go b/plc4go/protocols/opcua/readwrite/model/DataValue.go
index 043d851bb2..662c4e1a54 100644
--- a/plc4go/protocols/opcua/readwrite/model/DataValue.go
+++ b/plc4go/protocols/opcua/readwrite/model/DataValue.go
@@ -243,21 +243,9 @@ func DataValueParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer)
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DataValue")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 2), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (serverPicosecondsSpecified)
diff --git a/plc4go/protocols/opcua/readwrite/model/DeleteNodesItem.go b/plc4go/protocols/opcua/readwrite/model/DeleteNodesItem.go
index 7746070099..adefbe12e5 100644
--- a/plc4go/protocols/opcua/readwrite/model/DeleteNodesItem.go
+++ b/plc4go/protocols/opcua/readwrite/model/DeleteNodesItem.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -170,21 +172,9 @@ func DeleteNodesItemParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 		return nil, errors.Wrap(closeErr, "Error closing for nodeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DeleteNodesItem")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (deleteTargetReferences)
diff --git a/plc4go/protocols/opcua/readwrite/model/DeleteReferencesItem.go b/plc4go/protocols/opcua/readwrite/model/DeleteReferencesItem.go
index ee464c435d..9464c352b3 100644
--- a/plc4go/protocols/opcua/readwrite/model/DeleteReferencesItem.go
+++ b/plc4go/protocols/opcua/readwrite/model/DeleteReferencesItem.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -220,21 +222,9 @@ func DeleteReferencesItemParseWithBuffer(ctx context.Context, readBuffer utils.R
 		return nil, errors.Wrap(closeErr, "Error closing for referenceTypeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DeleteReferencesItem")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isForward)
@@ -257,21 +247,9 @@ func DeleteReferencesItemParseWithBuffer(ctx context.Context, readBuffer utils.R
 		return nil, errors.Wrap(closeErr, "Error closing for targetNodeId")
 	}
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DeleteReferencesItem")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (deleteBidirectional)
diff --git a/plc4go/protocols/opcua/readwrite/model/DiagnosticInfo.go b/plc4go/protocols/opcua/readwrite/model/DiagnosticInfo.go
index c95ed7f76d..da4142bd21 100644
--- a/plc4go/protocols/opcua/readwrite/model/DiagnosticInfo.go
+++ b/plc4go/protocols/opcua/readwrite/model/DiagnosticInfo.go
@@ -265,21 +265,9 @@ func DiagnosticInfoParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuf
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *bool
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadBit("reserved")
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of DiagnosticInfo")
-		}
-		if reserved != bool(false) {
-			log.Info().Fields(map[string]any{
-				"expected value": bool(false),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadBoolean(readBuffer), bool(false))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (innerDiagnosticInfoSpecified)
diff --git a/plc4go/protocols/opcua/readwrite/model/EndpointConfiguration.go b/plc4go/protocols/opcua/readwrite/model/EndpointConfiguration.go
index a9ba12bcf8..bc7b3b8968 100644
--- a/plc4go/protocols/opcua/readwrite/model/EndpointConfiguration.go
+++ b/plc4go/protocols/opcua/readwrite/model/EndpointConfiguration.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -241,21 +243,9 @@ func EndpointConfigurationParseWithBuffer(ctx context.Context, readBuffer utils.
 	}
 	operationTimeout := _operationTimeout
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of EndpointConfiguration")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (useBinaryEncoding)
diff --git a/plc4go/protocols/opcua/readwrite/model/ExtensionHeader.go b/plc4go/protocols/opcua/readwrite/model/ExtensionHeader.go
index 5ba0d60e96..4f095381da 100644
--- a/plc4go/protocols/opcua/readwrite/model/ExtensionHeader.go
+++ b/plc4go/protocols/opcua/readwrite/model/ExtensionHeader.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -129,21 +131,9 @@ func ExtensionHeaderParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *int8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadInt8("reserved", 5)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ExtensionHeader")
-		}
-		if reserved != int8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": int8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadSignedByte(readBuffer, 5), int8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (xmlbody)
diff --git a/plc4go/protocols/opcua/readwrite/model/ExtensionObjectEncodingMask.go b/plc4go/protocols/opcua/readwrite/model/ExtensionObjectEncodingMask.go
index 011ffefaa0..c507329fad 100644
--- a/plc4go/protocols/opcua/readwrite/model/ExtensionObjectEncodingMask.go
+++ b/plc4go/protocols/opcua/readwrite/model/ExtensionObjectEncodingMask.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -139,21 +141,9 @@ func ExtensionObjectEncodingMaskParseWithBuffer(ctx context.Context, readBuffer
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *int8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadInt8("reserved", 5)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ExtensionObjectEncodingMask")
-		}
-		if reserved != int8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": int8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadSignedByte(readBuffer, 5), int8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (typeIdSpecified)
diff --git a/plc4go/protocols/opcua/readwrite/model/HistoryReadRequest.go b/plc4go/protocols/opcua/readwrite/model/HistoryReadRequest.go
index a776aa6272..cc21ba9a8e 100644
--- a/plc4go/protocols/opcua/readwrite/model/HistoryReadRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/HistoryReadRequest.go
@@ -249,21 +249,9 @@ func HistoryReadRequestParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 		return nil, errors.Wrap(closeErr, "Error closing for timestampsToReturn")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of HistoryReadRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (releaseContinuationPoints)
diff --git a/plc4go/protocols/opcua/readwrite/model/LocalizedText.go b/plc4go/protocols/opcua/readwrite/model/LocalizedText.go
index 3ada31fa73..f3d344cf42 100644
--- a/plc4go/protocols/opcua/readwrite/model/LocalizedText.go
+++ b/plc4go/protocols/opcua/readwrite/model/LocalizedText.go
@@ -155,21 +155,9 @@ func LocalizedTextParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuff
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 6)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of LocalizedText")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 6), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (textSpecified)
diff --git a/plc4go/protocols/opcua/readwrite/model/MonitoringParameters.go b/plc4go/protocols/opcua/readwrite/model/MonitoringParameters.go
index ea93bb3c46..7537a3060e 100644
--- a/plc4go/protocols/opcua/readwrite/model/MonitoringParameters.go
+++ b/plc4go/protocols/opcua/readwrite/model/MonitoringParameters.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -224,21 +226,9 @@ func MonitoringParametersParseWithBuffer(ctx context.Context, readBuffer utils.R
 	}
 	queueSize := _queueSize
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of MonitoringParameters")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (discardOldest)
diff --git a/plc4go/protocols/opcua/readwrite/model/NodeId.go b/plc4go/protocols/opcua/readwrite/model/NodeId.go
index a2dfa19e86..c85b4ed821 100644
--- a/plc4go/protocols/opcua/readwrite/model/NodeId.go
+++ b/plc4go/protocols/opcua/readwrite/model/NodeId.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -138,21 +140,9 @@ func NodeIdParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (No
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *int8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadInt8("reserved", 2)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NodeId")
-		}
-		if reserved != int8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": int8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadSignedByte(readBuffer, 2), int8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (nodeId)
diff --git a/plc4go/protocols/opcua/readwrite/model/NodeReference.go b/plc4go/protocols/opcua/readwrite/model/NodeReference.go
index 530c34a59b..3837df3479 100644
--- a/plc4go/protocols/opcua/readwrite/model/NodeReference.go
+++ b/plc4go/protocols/opcua/readwrite/model/NodeReference.go
@@ -225,21 +225,9 @@ func NodeReferenceParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuff
 		return nil, errors.Wrap(closeErr, "Error closing for referenceTypeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NodeReference")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isForward)
diff --git a/plc4go/protocols/opcua/readwrite/model/NodeTypeDescription.go b/plc4go/protocols/opcua/readwrite/model/NodeTypeDescription.go
index 37b574fd69..8c2941c0d4 100644
--- a/plc4go/protocols/opcua/readwrite/model/NodeTypeDescription.go
+++ b/plc4go/protocols/opcua/readwrite/model/NodeTypeDescription.go
@@ -201,21 +201,9 @@ func NodeTypeDescriptionParseWithBuffer(ctx context.Context, readBuffer utils.Re
 		return nil, errors.Wrap(closeErr, "Error closing for typeDefinitionNode")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of NodeTypeDescription")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (includeSubTypes)
diff --git a/plc4go/protocols/opcua/readwrite/model/PubSubConfigurationDataType.go b/plc4go/protocols/opcua/readwrite/model/PubSubConfigurationDataType.go
index 3c6af8ad24..6a237ea110 100644
--- a/plc4go/protocols/opcua/readwrite/model/PubSubConfigurationDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/PubSubConfigurationDataType.go
@@ -242,21 +242,9 @@ func PubSubConfigurationDataTypeParseWithBuffer(ctx context.Context, readBuffer
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'connections' field"))
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of PubSubConfigurationDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/PubSubConnectionDataType.go b/plc4go/protocols/opcua/readwrite/model/PubSubConnectionDataType.go
index 963e40c4b1..a8682c4739 100644
--- a/plc4go/protocols/opcua/readwrite/model/PubSubConnectionDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/PubSubConnectionDataType.go
@@ -303,21 +303,9 @@ func PubSubConnectionDataTypeParseWithBuffer(ctx context.Context, readBuffer uti
 		return nil, errors.Wrap(closeErr, "Error closing for name")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of PubSubConnectionDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/PubSubGroupDataType.go b/plc4go/protocols/opcua/readwrite/model/PubSubGroupDataType.go
index 3b72442a87..9521638e3a 100644
--- a/plc4go/protocols/opcua/readwrite/model/PubSubGroupDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/PubSubGroupDataType.go
@@ -263,21 +263,9 @@ func PubSubGroupDataTypeParseWithBuffer(ctx context.Context, readBuffer utils.Re
 		return nil, errors.Wrap(closeErr, "Error closing for name")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of PubSubGroupDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (enabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/PublishResponse.go b/plc4go/protocols/opcua/readwrite/model/PublishResponse.go
index f5edf0faa7..47d49cfe20 100644
--- a/plc4go/protocols/opcua/readwrite/model/PublishResponse.go
+++ b/plc4go/protocols/opcua/readwrite/model/PublishResponse.go
@@ -295,21 +295,9 @@ func PublishResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBu
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'availableSequenceNumbers' field"))
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of PublishResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (moreNotifications)
diff --git a/plc4go/protocols/opcua/readwrite/model/QueryNextRequest.go b/plc4go/protocols/opcua/readwrite/model/QueryNextRequest.go
index 073b6c9646..b163ab6e55 100644
--- a/plc4go/protocols/opcua/readwrite/model/QueryNextRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/QueryNextRequest.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -181,21 +183,9 @@ func QueryNextRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 		return nil, errors.Wrap(closeErr, "Error closing for requestHeader")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of QueryNextRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (releaseContinuationPoint)
diff --git a/plc4go/protocols/opcua/readwrite/model/ReferenceDescription.go b/plc4go/protocols/opcua/readwrite/model/ReferenceDescription.go
index e0876d7207..7b5d2d84af 100644
--- a/plc4go/protocols/opcua/readwrite/model/ReferenceDescription.go
+++ b/plc4go/protocols/opcua/readwrite/model/ReferenceDescription.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -225,21 +227,9 @@ func ReferenceDescriptionParseWithBuffer(ctx context.Context, readBuffer utils.R
 		return nil, errors.Wrap(closeErr, "Error closing for referenceTypeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ReferenceDescription")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isForward)
diff --git a/plc4go/protocols/opcua/readwrite/model/ReferenceDescriptionDataType.go b/plc4go/protocols/opcua/readwrite/model/ReferenceDescriptionDataType.go
index 3126b4ecd4..7b931231fd 100644
--- a/plc4go/protocols/opcua/readwrite/model/ReferenceDescriptionDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/ReferenceDescriptionDataType.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -205,21 +207,9 @@ func ReferenceDescriptionDataTypeParseWithBuffer(ctx context.Context, readBuffer
 		return nil, errors.Wrap(closeErr, "Error closing for referenceType")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ReferenceDescriptionDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isForward)
diff --git a/plc4go/protocols/opcua/readwrite/model/ReferenceListEntryDataType.go b/plc4go/protocols/opcua/readwrite/model/ReferenceListEntryDataType.go
index 187dac11c0..525c607e12 100644
--- a/plc4go/protocols/opcua/readwrite/model/ReferenceListEntryDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/ReferenceListEntryDataType.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -181,21 +183,9 @@ func ReferenceListEntryDataTypeParseWithBuffer(ctx context.Context, readBuffer u
 		return nil, errors.Wrap(closeErr, "Error closing for referenceType")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of ReferenceListEntryDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isForward)
diff --git a/plc4go/protocols/opcua/readwrite/model/RegisteredServer.go b/plc4go/protocols/opcua/readwrite/model/RegisteredServer.go
index 57ae9c0048..909800484b 100644
--- a/plc4go/protocols/opcua/readwrite/model/RegisteredServer.go
+++ b/plc4go/protocols/opcua/readwrite/model/RegisteredServer.go
@@ -350,21 +350,9 @@ func RegisteredServerParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 		return nil, errors.Wrap(closeErr, "Error closing for semaphoreFilePath")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of RegisteredServer")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isOnline)
diff --git a/plc4go/protocols/opcua/readwrite/model/RelativePathElement.go b/plc4go/protocols/opcua/readwrite/model/RelativePathElement.go
index aeb1b3bbed..ceaf817cf8 100644
--- a/plc4go/protocols/opcua/readwrite/model/RelativePathElement.go
+++ b/plc4go/protocols/opcua/readwrite/model/RelativePathElement.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -192,21 +194,9 @@ func RelativePathElementParseWithBuffer(ctx context.Context, readBuffer utils.Re
 		return nil, errors.Wrap(closeErr, "Error closing for referenceTypeId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 6)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of RelativePathElement")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 6), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (includeSubtypes)
diff --git a/plc4go/protocols/opcua/readwrite/model/SetPublishingModeRequest.go b/plc4go/protocols/opcua/readwrite/model/SetPublishingModeRequest.go
index f38451c6fc..604aa557aa 100644
--- a/plc4go/protocols/opcua/readwrite/model/SetPublishingModeRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/SetPublishingModeRequest.go
@@ -196,21 +196,9 @@ func SetPublishingModeRequestParseWithBuffer(ctx context.Context, readBuffer uti
 		return nil, errors.Wrap(closeErr, "Error closing for requestHeader")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of SetPublishingModeRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (publishingEnabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/StructureField.go b/plc4go/protocols/opcua/readwrite/model/StructureField.go
index 574af317ed..3c477addc9 100644
--- a/plc4go/protocols/opcua/readwrite/model/StructureField.go
+++ b/plc4go/protocols/opcua/readwrite/model/StructureField.go
@@ -292,21 +292,9 @@ func StructureFieldParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuf
 	}
 	maxStringLength := _maxStringLength
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of StructureField")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (isOptional)
diff --git a/plc4go/protocols/opcua/readwrite/model/SubscriptionDiagnosticsDataType.go b/plc4go/protocols/opcua/readwrite/model/SubscriptionDiagnosticsDataType.go
index 81984fb452..b2383aa41c 100644
--- a/plc4go/protocols/opcua/readwrite/model/SubscriptionDiagnosticsDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/SubscriptionDiagnosticsDataType.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -531,21 +533,9 @@ func SubscriptionDiagnosticsDataTypeParseWithBuffer(ctx context.Context, readBuf
 	}
 	maxNotificationsPerPublish := _maxNotificationsPerPublish
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of SubscriptionDiagnosticsDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (publishingEnabled)
diff --git a/plc4go/protocols/opcua/readwrite/model/TimeZoneDataType.go b/plc4go/protocols/opcua/readwrite/model/TimeZoneDataType.go
index a69c495381..78933ab083 100644
--- a/plc4go/protocols/opcua/readwrite/model/TimeZoneDataType.go
+++ b/plc4go/protocols/opcua/readwrite/model/TimeZoneDataType.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -164,21 +166,9 @@ func TimeZoneDataTypeParseWithBuffer(ctx context.Context, readBuffer utils.ReadB
 	}
 	offset := _offset
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TimeZoneDataType")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (daylightSavingInOffset)
diff --git a/plc4go/protocols/opcua/readwrite/model/TransferSubscriptionsRequest.go b/plc4go/protocols/opcua/readwrite/model/TransferSubscriptionsRequest.go
index cad5f18145..5a34e0ebd9 100644
--- a/plc4go/protocols/opcua/readwrite/model/TransferSubscriptionsRequest.go
+++ b/plc4go/protocols/opcua/readwrite/model/TransferSubscriptionsRequest.go
@@ -208,21 +208,9 @@ func TransferSubscriptionsRequestParseWithBuffer(ctx context.Context, readBuffer
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'subscriptionIds' field"))
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 7)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TransferSubscriptionsRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 7), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (sendInitialValues)
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectQueryType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectQueryType.go
index 297c73cf43..9d9ea10e5e 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectQueryType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectQueryType.go
@@ -217,21 +217,9 @@ func AlarmMessageObjectQueryTypeParseWithBuffer(ctx context.Context, readBuffer
 	}
 	lengthDataset := _lengthDataset
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of AlarmMessageObjectQueryType")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	variableSpec, err := ReadConstField[uint8](ctx, "variableSpec", ReadUnsignedByte(readBuffer, 8), AlarmMessageObjectQueryType_VARIABLESPEC)
diff --git a/plc4go/protocols/s7/readwrite/model/S7AddressAny.go b/plc4go/protocols/s7/readwrite/model/S7AddressAny.go
index 1ca03f1636..09ab216ef4 100644
--- a/plc4go/protocols/s7/readwrite/model/S7AddressAny.go
+++ b/plc4go/protocols/s7/readwrite/model/S7AddressAny.go
@@ -235,21 +235,9 @@ func S7AddressAnyParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 		return nil, errors.Wrap(closeErr, "Error closing for area")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 5)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7AddressAny")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 5), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (byteAddress)
diff --git a/plc4go/protocols/s7/readwrite/model/S7Message.go b/plc4go/protocols/s7/readwrite/model/S7Message.go
index 9abc2a93fe..22bcebabc6 100644
--- a/plc4go/protocols/s7/readwrite/model/S7Message.go
+++ b/plc4go/protocols/s7/readwrite/model/S7Message.go
@@ -206,21 +206,9 @@ func S7MessageParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer)
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'messageType' field"))
 	}
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7Message")
-		}
-		if reserved != uint16(0x0000) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0000),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0000))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (tpduReference)
diff --git a/plc4go/protocols/s7/readwrite/model/S7MessageObjectRequest.go b/plc4go/protocols/s7/readwrite/model/S7MessageObjectRequest.go
index 4d24a8f8d4..bcad5b69fb 100644
--- a/plc4go/protocols/s7/readwrite/model/S7MessageObjectRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7MessageObjectRequest.go
@@ -226,21 +226,9 @@ func S7MessageObjectRequestParseWithBuffer(ctx context.Context, readBuffer utils
 		return nil, errors.Wrap(closeErr, "Error closing for syntaxId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7MessageObjectRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (queryType)
@@ -256,21 +244,9 @@ func S7MessageObjectRequestParseWithBuffer(ctx context.Context, readBuffer utils
 		return nil, errors.Wrap(closeErr, "Error closing for queryType")
 	}
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7MessageObjectRequest")
-		}
-		if reserved != uint8(0x34) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x34),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x34))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (alarmType)
diff --git a/plc4go/protocols/s7/readwrite/model/S7MessageObjectResponse.go b/plc4go/protocols/s7/readwrite/model/S7MessageObjectResponse.go
index e8faddc663..f55a85aadc 100644
--- a/plc4go/protocols/s7/readwrite/model/S7MessageObjectResponse.go
+++ b/plc4go/protocols/s7/readwrite/model/S7MessageObjectResponse.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -183,21 +185,9 @@ func S7MessageObjectResponseParseWithBuffer(ctx context.Context, readBuffer util
 		return nil, errors.Wrap(closeErr, "Error closing for transportSize")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7MessageObjectResponse")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("S7MessageObjectResponse"); closeErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7ParameterModeTransition.go b/plc4go/protocols/s7/readwrite/model/S7ParameterModeTransition.go
index f1ee0d6349..f1496c345a 100644
--- a/plc4go/protocols/s7/readwrite/model/S7ParameterModeTransition.go
+++ b/plc4go/protocols/s7/readwrite/model/S7ParameterModeTransition.go
@@ -199,21 +199,9 @@ func S7ParameterModeTransitionParseWithBuffer(ctx context.Context, readBuffer ut
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint16
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint16("reserved", 16)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7ParameterModeTransition")
-		}
-		if reserved != uint16(0x0010) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint16(0x0010),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedShort(readBuffer, 16), uint16(0x0010))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	itemLength, err := ReadImplicitField[uint8](ctx, "itemLength", ReadUnsignedByte(readBuffer, 8))
diff --git a/plc4go/protocols/s7/readwrite/model/S7ParameterSetupCommunication.go b/plc4go/protocols/s7/readwrite/model/S7ParameterSetupCommunication.go
index 5689891af7..1a336edfc2 100644
--- a/plc4go/protocols/s7/readwrite/model/S7ParameterSetupCommunication.go
+++ b/plc4go/protocols/s7/readwrite/model/S7ParameterSetupCommunication.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -172,21 +174,9 @@ func S7ParameterSetupCommunicationParseWithBuffer(ctx context.Context, readBuffe
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7ParameterSetupCommunication")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (maxAmqCaller)
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemClkSetRequest.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemClkSetRequest.go
index a3c22a724e..ab183e4d90 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemClkSetRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemClkSetRequest.go
@@ -26,6 +26,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	. "github.com/apache/plc4x/plc4go/spi/codegen/fields"
+	. "github.com/apache/plc4x/plc4go/spi/codegen/io"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
@@ -162,38 +164,14 @@ func S7PayloadUserDataItemClkSetRequestParseWithBuffer(ctx context.Context, read
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7PayloadUserDataItemClkSetRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7PayloadUserDataItemClkSetRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (timeStamp)
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryRequest.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryRequest.go
index a94b40a313..22b79f955b 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmQueryRequest.go
@@ -266,21 +266,9 @@ func S7PayloadUserDataItemCpuFunctionAlarmQueryRequestParseWithBuffer(ctx contex
 		return nil, errors.Wrap(closeErr, "Error closing for syntaxId")
 	}
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7PayloadUserDataItemCpuFunctionAlarmQueryRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (queryType)
@@ -296,21 +284,9 @@ func S7PayloadUserDataItemCpuFunctionAlarmQueryRequestParseWithBuffer(ctx contex
 		return nil, errors.Wrap(closeErr, "Error closing for queryType")
 	}
 
-	var reservedField1 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7PayloadUserDataItemCpuFunctionAlarmQueryRequest")
-		}
-		if reserved != uint8(0x34) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x34),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField1 = &reserved
-		}
+	reservedField1, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x34))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (alarmType)
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest.go
index a2ae7b21e2..6a0e5cd184 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest.go
@@ -204,21 +204,9 @@ func S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequestParseWithBuffer(ctx c
 	}
 	subscription := _subscription
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of S7PayloadUserDataItemCpuFunctionMsgSubscriptionRequest")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	// Simple Field (magicKey)
diff --git a/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go b/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go
index 4a2952c4e2..f1d45d3673 100644
--- a/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go
+++ b/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go
@@ -185,22 +185,8 @@ func S7VarPayloadDataItemParseWithBuffer(ctx context.Context, readBuffer utils.R
 		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'data' field"))
 	}
 
-	// Padding Field (padding)
-	{
-		if pullErr := readBuffer.PullContext("padding", utils.WithRenderAsList(true)); pullErr != nil {
-			return nil, errors.Wrap(pullErr, "Error pulling for padding")
-		}
-		_timesPadding := (utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() any { return int32((int32(int32(len(data))) % int32(int32(2)))) }, func() any { return int32(int32(0)) }).(int32))
-		for ; (readBuffer.HasMore(8)) && (_timesPadding > 0); _timesPadding-- {
-			// Just read the padding data and ignore it
-			_, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("", 8)
-			if _err != nil {
-				return nil, errors.Wrap(_err, "Error parsing 'padding' field of S7VarPayloadDataItem")
-			}
-		}
-		if closeErr := readBuffer.CloseContext("padding", utils.WithRenderAsList(true)); closeErr != nil {
-			return nil, errors.Wrap(closeErr, "Error closing for padding")
-		}
+	if err := ReadPaddingField(ctx, ReadUnsignedByte(readBuffer, 8), (int)(utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() any { return uint8((uint8(uint8(len(data))) % uint8(uint8(2)))) }, func() any { return uint8(uint8(0)) }).(uint8))); err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing padding field"))
 	}
 
 	if closeErr := readBuffer.CloseContext("S7VarPayloadDataItem"); closeErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/TPKTPacket.go b/plc4go/protocols/s7/readwrite/model/TPKTPacket.go
index a3bbe525f6..96174a80e0 100644
--- a/plc4go/protocols/s7/readwrite/model/TPKTPacket.go
+++ b/plc4go/protocols/s7/readwrite/model/TPKTPacket.go
@@ -151,21 +151,9 @@ func TPKTPacketParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer)
 	}
 	_ = protocolId
 
-	var reservedField0 *uint8
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadUint8("reserved", 8)
-		if _err != nil {
-			return nil, errors.Wrap(_err, "Error parsing 'reserved' field of TPKTPacket")
-		}
-		if reserved != uint8(0x00) {
-			log.Info().Fields(map[string]any{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Msg("Got unexpected response for reserved field.")
-			// We save the value, so it can be re-serialized
-			reservedField0 = &reserved
-		}
+	reservedField0, err := ReadReservedField(ctx, "reserved", ReadUnsignedByte(readBuffer, 8), uint8(0x00), codegen.WithByteOrder(binary.BigEndian))
+	if err != nil {
+		return nil, errors.Wrap(err, fmt.Sprintf("Error parsing reserved field"))
 	}
 
 	len, err := ReadImplicitField[uint16](ctx, "len", ReadUnsignedShort(readBuffer, 16), codegen.WithByteOrder(binary.BigEndian))
diff --git a/plc4go/spi/codegen/fields/FieldReaderFactory.go b/plc4go/spi/codegen/fields/FieldReaderFactory.go
index 0556ee7095..5c611f5480 100644
--- a/plc4go/spi/codegen/fields/FieldReaderFactory.go
+++ b/plc4go/spi/codegen/fields/FieldReaderFactory.go
@@ -120,12 +120,12 @@ func ReadManualField[T any](ctx context.Context, logicalName string, readBuffer
 	return NewFieldReaderManual[T](log).ReadManualField(ctx, logicalName, readBuffer, parseSupplier, readerArgs...)
 }
 
-func ReadPaddingField[T any](ctx context.Context, logicalName string, dataReader io.DataReader[T], timesPadding int, readerArgs ...utils.WithReaderArgs) error {
+func ReadPaddingField[T any](ctx context.Context, dataReader io.DataReader[T], timesPadding int, readerArgs ...utils.WithReaderArgs) error {
 	log := *zerolog.Ctx(ctx)
-	return NewFieldReaderPadding[T](log).ReadPaddingField(ctx, logicalName, dataReader, timesPadding, readerArgs...)
+	return NewFieldReaderPadding[T](log).ReadPaddingField(ctx, dataReader, timesPadding, readerArgs...)
 }
 
-func ReadReservedField[T comparable](ctx context.Context, logicalName string, dataReader io.DataReader[T], expectedValue T, readerArgs ...utils.WithReaderArgs) (T, error) {
+func ReadReservedField[T comparable](ctx context.Context, logicalName string, dataReader io.DataReader[T], expectedValue T, readerArgs ...utils.WithReaderArgs) (*T, error) {
 	log := *zerolog.Ctx(ctx)
 	return NewFieldReaderReserved[T](log).ReadReservedField(ctx, logicalName, dataReader, expectedValue, readerArgs...)
 }
diff --git a/plc4go/spi/codegen/fields/FieldReaderOptional.go b/plc4go/spi/codegen/fields/FieldReaderOptional.go
index a40f238d97..25d76b4657 100644
--- a/plc4go/spi/codegen/fields/FieldReaderOptional.go
+++ b/plc4go/spi/codegen/fields/FieldReaderOptional.go
@@ -59,14 +59,16 @@ func (f *FieldReaderOptional[T]) ReadOptionalField(ctx context.Context, logicalN
 	case errors.Is(err, utils.ParseAssertError{}):
 		f.log.Debug().Err(err).Str("logicalName", logicalName).Uint16("oldPos", currentPos).Msg("Assertion doesn't match for field. Resetting read position to oldPos")
 		dataReader.SetPos(currentPos)
+		return nil, nil
 	case errors.Is(err, io2.EOF):
 		f.log.Debug().Err(err).Str("logicalName", logicalName).Uint16("oldPos", currentPos).Msg("Not enough bytes. Resetting read position to oldPos")
 		dataReader.SetPos(currentPos)
+		return nil, nil
 	case err != nil:
 		return nil, errors.Wrapf(err, "Error parsing '%s' field", logicalName)
 	default:
 		// All good
+		f.log.Debug().Str("logicalName", logicalName).Msg("done reading field")
+		return &optionalValue, nil
 	}
-	f.log.Debug().Str("logicalName", logicalName).Msg("done reading field")
-	return &optionalValue, nil
 }
diff --git a/plc4go/spi/codegen/fields/FieldReaderPadding.go b/plc4go/spi/codegen/fields/FieldReaderPadding.go
index 54f3a83c30..cc29498988 100644
--- a/plc4go/spi/codegen/fields/FieldReaderPadding.go
+++ b/plc4go/spi/codegen/fields/FieldReaderPadding.go
@@ -40,9 +40,9 @@ func NewFieldReaderPadding[T any](logger zerolog.Logger) *FieldReaderPadding[T]
 	return &FieldReaderPadding[T]{log: logger}
 }
 
-func (f *FieldReaderPadding[T]) ReadPaddingField(ctx context.Context, logicalName string, dataReader io.DataReader[T], timesPadding int, readerArgs ...utils.WithReaderArgs) error {
-	f.log.Debug().Str("logicalName", logicalName).Msg("reading field")
-	if err := dataReader.PullContext(logicalName, utils.WithRenderAsList(true)); err != nil {
+func (f *FieldReaderPadding[T]) ReadPaddingField(ctx context.Context, dataReader io.DataReader[T], timesPadding int, readerArgs ...utils.WithReaderArgs) error {
+	f.log.Debug().Msg("reading padding field")
+	if err := dataReader.PullContext("padding", utils.WithRenderAsList(true)); err != nil {
 		return errors.Wrap(err, "error pulling context")
 	}
 	for timesPadding > 0 {
@@ -55,9 +55,9 @@ func (f *FieldReaderPadding[T]) ReadPaddingField(ctx context.Context, logicalNam
 		// last field item, then the packet might end here.
 		timesPadding--
 	}
-	if err := dataReader.CloseContext(logicalName, utils.WithRenderAsList(true)); err != nil {
+	if err := dataReader.CloseContext("padding", utils.WithRenderAsList(true)); err != nil {
 		return errors.Wrap(err, "error closing context")
 	}
-	f.log.Debug().Str("logicalName", logicalName).Msg("done reading field")
+	f.log.Debug().Msg("done reading padding field")
 	return nil
 }
diff --git a/plc4go/spi/codegen/fields/FieldReaderReserved.go b/plc4go/spi/codegen/fields/FieldReaderReserved.go
index 5df9723fc4..1bdf3a2e53 100644
--- a/plc4go/spi/codegen/fields/FieldReaderReserved.go
+++ b/plc4go/spi/codegen/fields/FieldReaderReserved.go
@@ -40,13 +40,13 @@ func NewFieldReaderReserved[T comparable](logger zerolog.Logger) *FieldReaderRes
 	return &FieldReaderReserved[T]{log: logger}
 }
 
-func (f *FieldReaderReserved[T]) ReadReservedField(ctx context.Context, logicalName string, dataReader io.DataReader[T], referenceValue T, readerArgs ...utils.WithReaderArgs) (T, error) {
+func (f *FieldReaderReserved[T]) ReadReservedField(ctx context.Context, logicalName string, dataReader io.DataReader[T], referenceValue T, readerArgs ...utils.WithReaderArgs) (*T, error) {
 	f.log.Debug().Str("logicalName", logicalName).Msg("reading field")
 	value, err := f.SwitchParseByteOrderIfNecessary(ctx, func(ctx context.Context) (T, error) {
 		return dataReader.Read(ctx, logicalName, readerArgs...)
 	}, dataReader, f.ExtractByteOrder(utils.UpcastReaderArgs(readerArgs...)...))
 	if value != referenceValue {
-		return value, utils.ParseAssertError{Message: fmt.Sprintf("Expected constant value %v but got %v for reserved field", referenceValue, value), Err: err}
+		return nil, utils.ParseAssertError{Message: fmt.Sprintf("Expected constant value %v but got %v for reserved field", referenceValue, value), Err: err}
 	}
-	return value, nil
+	return &value, nil
 }