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 2023/04/19 10:46:25 UTC

[plc4x] 02/02: refactor(plc4go/spi): move ArrayContext to utils

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 e36433a42513e1d83fd250635015342f8b91fc30
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Apr 19 12:46:14 2023 +0200

    refactor(plc4go/spi): move ArrayContext to utils
---
 .../language/go/GoLanguageTemplateHelper.java      |  2 +-
 .../templates/go/complex-type-template.go.ftlh     |  9 ++++----
 .../readwrite/model/CIPEncapsulationPacket.go      |  3 +--
 .../ads/discovery/readwrite/model/AdsDiscovery.go  |  7 +++---
 .../readwrite/model/AdsDataTypeTableChildEntry.go  | 13 +++++------
 .../ads/readwrite/model/AdsDataTypeTableEntry.go   | 13 +++++------
 .../model/AdsDeviceNotificationRequest.go          |  7 +++---
 .../ads/readwrite/model/AdsReadWriteRequest.go     |  7 +++---
 .../ads/readwrite/model/AdsStampHeader.go          |  7 +++---
 .../bacnetip/readwrite/model/BACnetActionList.go   |  3 +--
 .../BACnetAssignedLandingCallsLandingCallsList.go  |  3 +--
 .../model/BACnetAuthenticationPolicyList.go        |  3 +--
 ...bscriptionListOfCovSubscriptionSpecification.go |  3 +--
 ...riptionSpecificationEntryListOfCovReferences.go |  3 +--
 ...tConfirmedServiceRequestReadPropertyMultiple.go |  3 +--
 ...yMultipleListOfCovSubscriptionSpecifications.go |  3 +--
 ...tipleListOfCovSubscriptionSpecificationsList.go |  3 +--
 .../model/BACnetConfirmedServiceRequestVTClose.go  |  3 +--
 ...ConfirmedServiceRequestWritePropertyMultiple.go |  3 +--
 .../model/BACnetConstructedDataAcceptedModes.go    |  3 +--
 .../BACnetConstructedDataAccessAlarmEvents.go      |  3 +--
 .../BACnetConstructedDataAccessDoorAlarmValues.go  |  3 +--
 .../BACnetConstructedDataAccessDoorFaultValues.go  |  3 +--
 .../model/BACnetConstructedDataAccessDoors.go      |  3 +--
 ...BACnetConstructedDataAccessTransactionEvents.go |  3 +--
 .../BACnetConstructedDataAccessZoneAlarmValues.go  |  3 +--
 .../readwrite/model/BACnetConstructedDataAction.go |  3 +--
 .../model/BACnetConstructedDataActionText.go       |  3 +--
 ...onstructedDataActiveCOVMultipleSubscriptions.go |  3 +--
 .../BACnetConstructedDataActiveCOVSubscriptions.go |  3 +--
 .../model/BACnetConstructedDataActiveVTSessions.go |  3 +--
 .../model/BACnetConstructedDataAlarmValues.go      |  3 +--
 .../BACnetConstructedDataAssignedAccessRights.go   |  3 +--
 .../BACnetConstructedDataAssignedLandingCalls.go   |  3 +--
 .../BACnetConstructedDataAuthenticationFactors.go  |  3 +--
 ...ACnetConstructedDataAuthenticationPolicyList.go |  3 +--
 ...CnetConstructedDataAuthenticationPolicyNames.go |  3 +--
 ...BACnetConstructedDataAuthorizationExemptions.go |  3 +--
 ...onstructedDataBBMDBroadcastDistributionTable.go |  3 +--
 .../BACnetConstructedDataBBMDForeignDeviceTable.go |  3 +--
 ...CnetConstructedDataBitStringValueAlarmValues.go |  3 +--
 .../model/BACnetConstructedDataBitText.go          |  3 +--
 .../model/BACnetConstructedDataCOVURecipients.go   |  3 +--
 .../model/BACnetConstructedDataCarDoorCommand.go   |  3 +--
 .../model/BACnetConstructedDataCarDoorStatus.go    |  3 +--
 .../model/BACnetConstructedDataCarDoorText.go      |  3 +--
 ...tedDataChannelListOfObjectPropertyReferences.go |  3 +--
 ...nstructedDataCharacterStringValueAlarmValues.go |  3 +--
 ...nstructedDataCharacterStringValueFaultValues.go |  3 +--
 .../model/BACnetConstructedDataCommandAction.go    |  3 +--
 .../model/BACnetConstructedDataCommandTimeArray.go |  3 +--
 .../BACnetConstructedDataConfigurationFiles.go     |  3 +--
 .../model/BACnetConstructedDataControlGroups.go    |  3 +--
 .../model/BACnetConstructedDataCredentials.go      |  3 +--
 .../BACnetConstructedDataCredentialsInZone.go      |  3 +--
 .../model/BACnetConstructedDataDateList.go         |  3 +--
 .../BACnetConstructedDataDeviceAddressBinding.go   |  3 +--
 .../model/BACnetConstructedDataDoorMembers.go      |  3 +--
 ...CnetConstructedDataElevatorGroupGroupMembers.go |  3 +--
 .../model/BACnetConstructedDataEntryPoints.go      |  3 +--
 .../BACnetConstructedDataEscalatorFaultSignals.go  |  3 +--
 .../BACnetConstructedDataEventLogLogBuffer.go      |  3 +--
 .../BACnetConstructedDataEventMessageTexts.go      |  3 +--
 ...BACnetConstructedDataEventMessageTextsConfig.go |  3 +--
 .../model/BACnetConstructedDataEventTimeStamps.go  |  3 +--
 .../BACnetConstructedDataExceptionSchedule.go      |  3 +--
 .../model/BACnetConstructedDataExecutionDelay.go   |  3 +--
 .../model/BACnetConstructedDataExitPoints.go       |  3 +--
 .../BACnetConstructedDataFailedAttemptEvents.go    |  3 +--
 .../model/BACnetConstructedDataFaultSignals.go     |  3 +--
 .../model/BACnetConstructedDataFaultValues.go      |  3 +--
 .../model/BACnetConstructedDataFloorText.go        |  3 +--
 ...BACnetConstructedDataGlobalGroupGroupMembers.go |  3 +--
 ...BACnetConstructedDataGlobalGroupPresentValue.go |  3 +--
 .../model/BACnetConstructedDataGroupMemberNames.go |  3 +--
 .../model/BACnetConstructedDataGroupMembers.go     |  3 +--
 .../BACnetConstructedDataGroupPresentValue.go      |  3 +--
 .../model/BACnetConstructedDataIPDNSServer.go      |  3 +--
 .../model/BACnetConstructedDataIPv6DNSServer.go    |  3 +--
 .../model/BACnetConstructedDataKeySets.go          |  3 +--
 .../model/BACnetConstructedDataLandingCalls.go     |  3 +--
 .../BACnetConstructedDataLandingDoorStatus.go      |  3 +--
 .../BACnetConstructedDataLifeSafetyAlarmValues.go  |  3 +--
 ...netConstructedDataLifeSafetyPointAlarmValues.go |  3 +--
 ...netConstructedDataLifeSafetyPointFaultValues.go |  3 +--
 ...CnetConstructedDataLifeSafetyZoneAlarmValues.go |  3 +--
 ...CnetConstructedDataLifeSafetyZoneFaultValues.go |  3 +--
 .../model/BACnetConstructedDataLiftFaultSignals.go |  3 +--
 .../model/BACnetConstructedDataLinkSpeeds.go       |  3 +--
 .../BACnetConstructedDataListOfGroupMembers.go     |  3 +--
 ...onstructedDataListOfObjectPropertyReferences.go |  3 +--
 .../model/BACnetConstructedDataLogBuffer.go        |  3 +--
 .../model/BACnetConstructedDataMakingCarCall.go    |  3 +--
 ...CnetConstructedDataManualSlaveAddressBinding.go |  3 +--
 .../BACnetConstructedDataMaskedAlarmValues.go      |  3 +--
 .../model/BACnetConstructedDataMemberOf.go         |  3 +--
 .../model/BACnetConstructedDataMembers.go          |  3 +--
 ...netConstructedDataMultiStateInputAlarmValues.go |  3 +--
 ...netConstructedDataMultiStateInputFaultValues.go |  3 +--
 ...netConstructedDataMultiStateValueAlarmValues.go |  3 +--
 ...netConstructedDataMultiStateValueFaultValues.go |  3 +--
 .../BACnetConstructedDataNegativeAccessRules.go    |  3 +--
 ...ConstructedDataNetworkAccessSecurityPolicies.go |  3 +--
 .../model/BACnetConstructedDataObjectList.go       |  3 +--
 .../model/BACnetConstructedDataPortFilter.go       |  3 +--
 .../BACnetConstructedDataPositiveAccessRules.go    |  3 +--
 .../model/BACnetConstructedDataPriority.go         |  3 +--
 .../model/BACnetConstructedDataPropertyList.go     |  3 +--
 .../model/BACnetConstructedDataReasonForDisable.go |  3 +--
 .../model/BACnetConstructedDataRecipientList.go    |  3 +--
 .../BACnetConstructedDataRegisteredCarCall.go      |  3 +--
 ...ConstructedDataRestartNotificationRecipients.go |  3 +--
 .../model/BACnetConstructedDataRoutingTable.go     |  3 +--
 .../BACnetConstructedDataShedLevelDescriptions.go  |  3 +--
 .../model/BACnetConstructedDataShedLevels.go       |  3 +--
 .../BACnetConstructedDataSlaveAddressBinding.go    |  3 +--
 .../BACnetConstructedDataStateChangeValues.go      |  3 +--
 .../model/BACnetConstructedDataStateText.go        |  3 +--
 .../BACnetConstructedDataStructuredObjectList.go   |  3 +--
 .../BACnetConstructedDataSubordinateAnnotations.go |  3 +--
 .../model/BACnetConstructedDataSubordinateList.go  |  3 +--
 .../BACnetConstructedDataSubordinateNodeTypes.go   |  3 +--
 ...ACnetConstructedDataSubordinateRelationships.go |  3 +--
 .../model/BACnetConstructedDataSubordinateTags.go  |  3 +--
 .../BACnetConstructedDataSubscribedRecipients.go   |  3 +--
 .../BACnetConstructedDataSupportedFormatClasses.go |  3 +--
 .../model/BACnetConstructedDataSupportedFormats.go |  3 +--
 ...etConstructedDataSupportedSecurityAlgorithms.go |  3 +--
 .../readwrite/model/BACnetConstructedDataTags.go   |  3 +--
 ...ConstructedDataTimeSynchronizationRecipients.go |  3 +--
 .../model/BACnetConstructedDataTimerAlarmValues.go |  3 +--
 .../BACnetConstructedDataTrendLogLogBuffer.go      |  3 +--
 ...CnetConstructedDataTrendLogMultipleLogBuffer.go |  3 +--
 ...dDataTrendLogMultipleLogDeviceObjectProperty.go |  3 +--
 ...structedDataUTCTimeSynchronizationRecipients.go |  3 +--
 .../model/BACnetConstructedDataUnspecified.go      |  3 +--
 .../BACnetConstructedDataVTClassesSupported.go     |  3 +--
 .../model/BACnetConstructedDataValueSourceArray.go |  3 +--
 .../BACnetConstructedDataVirtualMACAddressTable.go |  3 +--
 .../model/BACnetConstructedDataWeeklySchedule.go   |  3 +--
 .../model/BACnetConstructedDataZoneMembers.go      |  3 +--
 .../readwrite/model/BACnetDailySchedule.go         |  3 +--
 ...tEventParameterAccessEventListOfAccessEvents.go |  3 +--
 ...ameterChangeOfBitstringListOfBitstringValues.go |  3 +--
 ...eterChangeOfCharacterStringListOfAlarmValues.go |  3 +--
 ...ParameterChangeOfLifeSavetyListOfAlarmValues.go |  3 +--
 ...hangeOfLifeSavetyListOfLifeSavetyAlarmValues.go |  3 +--
 ...ACnetEventParameterChangeOfStateListOfValues.go |  3 +--
 .../BACnetEventParameterChangeOfTimerAlarmValue.go |  3 +--
 .../readwrite/model/BACnetEventSummariesList.go    |  3 +--
 ...rameterFaultCharacterStringListOfFaultValues.go |  3 +--
 .../BACnetFaultParameterFaultExtendedParameters.go |  3 +--
 ...ultParameterFaultLifeSafetyListOfFaultValues.go |  3 +--
 ...netFaultParameterFaultStateListOfFaultValues.go |  3 +--
 .../readwrite/model/BACnetGroupChannelValueList.go |  3 +--
 .../BACnetLandingDoorStatusLandingDoorsList.go     |  3 +--
 .../model/BACnetLiftCarCallListFloorList.go        |  3 +--
 .../readwrite/model/BACnetLogDataLogData.go        |  3 +--
 .../readwrite/model/BACnetNameValueCollection.go   |  3 +--
 .../readwrite/model/BACnetPriorityArray.go         |  3 +--
 .../readwrite/model/BACnetPropertyValues.go        |  3 +--
 .../model/BACnetReadAccessResultListOfResults.go   |  3 +--
 .../model/BACnetReadAccessSpecification.go         |  3 +--
 .../readwrite/model/BACnetSecurityKeySetKeyIds.go  |  3 +--
 .../model/BACnetServiceAckAtomicReadFileRecord.go  |  7 +++---
 .../model/BACnetServiceAckReadPropertyMultiple.go  |  3 +--
 .../model/BACnetSpecialEventListOfTimeValues.go    |  3 +--
 .../readwrite/model/BACnetTagPayloadBitString.go   |  5 ++---
 .../readwrite/model/BACnetTimeStampsEnclosed.go    |  3 +--
 .../model/BACnetWriteAccessSpecification.go        |  3 +--
 .../model/BVLCBroadcastDistributionTableEntry.go   |  5 ++---
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |  3 +--
 .../readwrite/model/BVLCForeignDeviceTableEntry.go |  3 +--
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |  3 +--
 .../model/BVLCReadBroadcastDistributionTableAck.go |  3 +--
 .../model/BVLCReadForeignDeviceTableAck.go         |  3 +--
 .../model/BVLCWriteBroadcastDistributionTable.go   |  3 +--
 .../readwrite/model/ListOfCovNotifications.go      |  3 +--
 .../readwrite/model/ListOfCovNotificationsList.go  |  3 +--
 .../readwrite/model/NLMInitalizeRoutingTable.go    |  7 +++---
 .../readwrite/model/NLMInitalizeRoutingTableAck.go |  7 +++---
 .../bacnetip/readwrite/model/NLMUpdateKeyUpdate.go | 13 +++++------
 plc4go/protocols/bacnetip/readwrite/model/NPDU.go  |  5 ++---
 .../VTCloseErrorListOfVTSessionIdentifiers.go      |  3 +--
 .../cbus/readwrite/model/CALDataStatus.go          |  7 +++---
 .../cbus/readwrite/model/CALDataStatusExtended.go  | 13 +++++------
 .../model/IdentifyReplyCommandLogicalAssignment.go |  7 +++---
 .../protocols/cbus/readwrite/model/NetworkRoute.go |  7 +++---
 .../readwrite/model/SecurityDataStatusReport1.go   |  7 +++---
 .../readwrite/model/SecurityDataStatusReport2.go   |  7 +++---
 .../protocols/eip/readwrite/model/CIPAttributes.go |  3 +--
 .../model/CipConnectionManagerCloseRequest.go      |  3 +--
 .../readwrite/model/CipConnectionManagerRequest.go |  3 +--
 plc4go/protocols/eip/readwrite/model/CipRRData.go  |  7 +++---
 .../eip/readwrite/model/ListServicesResponse.go    |  7 +++---
 .../eip/readwrite/model/MultipleServiceResponse.go |  3 +--
 .../protocols/eip/readwrite/model/SendUnitData.go  |  7 +++---
 plc4go/protocols/eip/readwrite/model/Services.go   |  9 ++++----
 .../readwrite/model/FirmataMessageAnalogIO.go      |  3 +--
 .../readwrite/model/FirmataMessageDigitalIO.go     |  3 +--
 .../readwrite/model/SysexCommandExtendedId.go      |  3 +--
 .../model/ComObjectTableRealisationType1.go        |  7 +++---
 .../model/ComObjectTableRealisationType2.go        |  7 +++---
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |  3 +--
 .../knxnetip/readwrite/model/KnxManufacturer.go    | 26 +++++++++++++++++-----
 .../knxnetip/readwrite/model/LBusmonInd.go         |  3 +--
 .../protocols/knxnetip/readwrite/model/LDataCon.go |  3 +--
 .../protocols/knxnetip/readwrite/model/LDataInd.go |  3 +--
 .../protocols/knxnetip/readwrite/model/LDataReq.go |  3 +--
 .../ModbusPDUReadDeviceIdentificationResponse.go   |  7 +++---
 .../model/ModbusPDUReadFifoQueueResponse.go        |  3 +--
 .../model/ModbusPDUReadFileRecordRequest.go        |  3 +--
 .../model/ModbusPDUReadFileRecordResponse.go       |  3 +--
 .../model/ModbusPDUWriteFileRecordRequest.go       |  3 +--
 .../model/ModbusPDUWriteFileRecordResponse.go      |  3 +--
 .../s7/readwrite/model/AlarmMessageAckPushType.go  |  7 +++---
 .../readwrite/model/AlarmMessageAckResponseType.go |  3 +--
 .../s7/readwrite/model/AlarmMessageAckType.go      |  7 +++---
 .../readwrite/model/AlarmMessageObjectPushType.go  |  7 +++---
 .../s7/readwrite/model/AlarmMessagePushType.go     |  7 +++---
 .../s7/readwrite/model/AlarmMessageQueryType.go    |  7 +++---
 .../s7/readwrite/model/AssociatedValueType.go      |  3 +--
 plc4go/protocols/s7/readwrite/model/COTPPacket.go  |  3 +--
 .../readwrite/model/S7ParameterReadVarRequest.go   |  7 +++---
 .../s7/readwrite/model/S7ParameterUserData.go      |  7 +++---
 .../readwrite/model/S7ParameterWriteVarRequest.go  |  7 +++---
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |  7 +++---
 .../s7/readwrite/model/S7PayloadUserData.go        |  7 +++---
 .../S7PayloadUserDataItemCpuFunctionAlarmAck.go    |  7 +++---
 ...yloadUserDataItemCpuFunctionAlarmAckResponse.go |  3 +--
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |  7 +++---
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |  7 +++---
 .../readwrite/model/S7PayloadWriteVarResponse.go   |  7 +++---
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  7 +++---
 plc4go/spi/{context => utils}/ArrayContext.go      |  2 +-
 235 files changed, 350 insertions(+), 566 deletions(-)

diff --git a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index 528d6fd90a..841bda3f98 100644
--- a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -1153,7 +1153,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
 
     private String toLastItemVariableExpression(TypeReference typeReference, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("lastItem");
-        return tracer + "spiContext.GetLastItemFromContext(ctx)";
+        return tracer + "utils.GetLastItemFromContext(ctx)";
     }
 
     private String toLengthVariableExpression(Field field, VariableLiteral variableLiteral, boolean serialize, Tracer tracer) {
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 2d0a650643..4c7ebf0312 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
@@ -404,7 +404,6 @@ func (m *_${type.name}) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 		</#if>
 		<#list type.fields as field>
-            <#if helper.needsVariable(field, "_lastItem", true)><@emitImportWithAlias alias="spiContext" import="github.com/apache/plc4x/plc4go/spi/context" /></#if>
 			<#switch field.typeName>
 				<#case "array">
 					<#assign arrayField = field.asArrayField().orElseThrow()>
@@ -421,7 +420,7 @@ func (m *_${type.name}) GetLengthInBits(ctx context.Context) uint16 {
 				<#else>
 				<#if arrayField.isCountArrayField()>
 		for _curItem, element := range m.${arrayField.name?cap_first} {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.${arrayField.name?cap_first}), _curItem)<@emitImportWithAlias alias="spiContext" import="github.com/apache/plc4x/plc4go/spi/context" />
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.${arrayField.name?cap_first}), _curItem)
 			<#-- TODO: find a way to do this nicer -->
 			_ = arrayCtx
 			_ = _curItem
@@ -594,7 +593,7 @@ func (m *_${type.name}) GetParentLengthInBits(ctx context.Context) uint16 {
 				<#else>
 					<#if arrayField.isCountArrayField()>
 		for _curItem, element := range m.${arrayField.name?cap_first} {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.${arrayField.name?cap_first}), _curItem)<@emitImportWithAlias alias="spiContext" import="github.com/apache/plc4x/plc4go/spi/context" />
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.${arrayField.name?cap_first}), _curItem)
             <#-- TODO: find a way to do this nicer -->
 			_ = arrayCtx
 			_ = _curItem
@@ -811,7 +810,7 @@ func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	{
 		_numItems := uint16(${helper.toIntegerParseExpression(arrayField, 16, arrayField.loopExpression, parserArguments)})
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))<@emitImportWithAlias alias="spiContext" import="github.com/apache/plc4x/plc4go/spi/context" />
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
             <#-- TODO: find a way to do this nicer -->
 			_ = arrayCtx
 			_ = _curItem
@@ -1610,7 +1609,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		_elementErr := ${helper.getWriteBufferWriteMethodCall("", simpleTypeReference, "_element", arrayField)}
 						<#else>
 						<#assign complexTypeReference = arrayElementType>
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Get${arrayField.name?cap_first}()), _curItem)<@emitImportWithAlias alias="spiContext" import="github.com/apache/plc4x/plc4go/spi/context" />
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.Get${arrayField.name?cap_first}()), _curItem)
         <#-- TODO: find a way to do this nicer -->
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
index 813a772b1d..65c8d89b99 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -216,7 +215,7 @@ func CIPEncapsulationPacketParseWithBuffer(ctx context.Context, readBuffer utils
 	{
 		_numItems := uint16(uint16(8))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go
index 7d55699c2f..e5d3a4c051 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -153,7 +152,7 @@ func (m *_AdsDiscovery) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Blocks) > 0 {
 		for _curItem, element := range m.Blocks {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Blocks), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Blocks), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -255,7 +254,7 @@ func AdsDiscoveryParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	{
 		_numItems := uint16(numBlocks)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsDiscoveryBlockParseWithBuffer(arrayCtx, readBuffer)
@@ -360,7 +359,7 @@ func (m *_AdsDiscovery) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 	}
 	for _curItem, _element := range m.GetBlocks() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetBlocks()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetBlocks()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go
index f5946db0b9..193046c349 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -279,7 +278,7 @@ func (m *_AdsDataTypeTableChildEntry) GetLengthInBits(ctx context.Context) uint1
 	// Array field
 	if len(m.ArrayInfo) > 0 {
 		for _curItem, element := range m.ArrayInfo {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ArrayInfo), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.ArrayInfo), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -289,7 +288,7 @@ func (m *_AdsDataTypeTableChildEntry) GetLengthInBits(ctx context.Context) uint1
 	// Array field
 	if len(m.Children) > 0 {
 		for _curItem, element := range m.Children {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Children), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Children), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -475,7 +474,7 @@ func AdsDataTypeTableChildEntryParseWithBuffer(ctx context.Context, readBuffer u
 	{
 		_numItems := uint16(arrayDimensions)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsDataTypeArrayInfoParseWithBuffer(arrayCtx, readBuffer)
@@ -502,7 +501,7 @@ func AdsDataTypeTableChildEntryParseWithBuffer(ctx context.Context, readBuffer u
 	{
 		_numItems := uint16(numChildren)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsDataTypeTableEntryParseWithBuffer(arrayCtx, readBuffer)
@@ -698,7 +697,7 @@ func (m *_AdsDataTypeTableChildEntry) SerializeWithWriteBuffer(ctx context.Conte
 	}
 	for _curItem, _element := range m.GetArrayInfo() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetArrayInfo()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetArrayInfo()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
@@ -715,7 +714,7 @@ func (m *_AdsDataTypeTableChildEntry) SerializeWithWriteBuffer(ctx context.Conte
 	}
 	for _curItem, _element := range m.GetChildren() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetChildren()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetChildren()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go
index c14b69bfda..07583b1aee 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -279,7 +278,7 @@ func (m *_AdsDataTypeTableEntry) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.ArrayInfo) > 0 {
 		for _curItem, element := range m.ArrayInfo {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ArrayInfo), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.ArrayInfo), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -289,7 +288,7 @@ func (m *_AdsDataTypeTableEntry) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Children) > 0 {
 		for _curItem, element := range m.Children {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Children), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Children), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -475,7 +474,7 @@ func AdsDataTypeTableEntryParseWithBuffer(ctx context.Context, readBuffer utils.
 	{
 		_numItems := uint16(arrayDimensions)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsDataTypeArrayInfoParseWithBuffer(arrayCtx, readBuffer)
@@ -502,7 +501,7 @@ func AdsDataTypeTableEntryParseWithBuffer(ctx context.Context, readBuffer utils.
 	{
 		_numItems := uint16(numChildren)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsDataTypeTableChildEntryParseWithBuffer(arrayCtx, readBuffer)
@@ -698,7 +697,7 @@ func (m *_AdsDataTypeTableEntry) SerializeWithWriteBuffer(ctx context.Context, w
 	}
 	for _curItem, _element := range m.GetArrayInfo() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetArrayInfo()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetArrayInfo()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
@@ -715,7 +714,7 @@ func (m *_AdsDataTypeTableEntry) SerializeWithWriteBuffer(ctx context.Context, w
 	}
 	for _curItem, _element := range m.GetChildren() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetChildren()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetChildren()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go b/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go
index ef00f60c6a..8dba4091b5 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -150,7 +149,7 @@ func (m *_AdsDeviceNotificationRequest) GetLengthInBits(ctx context.Context) uin
 	// Array field
 	if len(m.AdsStampHeaders) > 0 {
 		for _curItem, element := range m.AdsStampHeaders {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.AdsStampHeaders), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.AdsStampHeaders), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -204,7 +203,7 @@ func AdsDeviceNotificationRequestParseWithBuffer(ctx context.Context, readBuffer
 	{
 		_numItems := uint16(stamps)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsStampHeaderParseWithBuffer(arrayCtx, readBuffer)
@@ -269,7 +268,7 @@ func (m *_AdsDeviceNotificationRequest) SerializeWithWriteBuffer(ctx context.Con
 		}
 		for _curItem, _element := range m.GetAdsStampHeaders() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdsStampHeaders()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdsStampHeaders()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go
index 405faeb4ee..89da0c9af0 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -172,7 +171,7 @@ func (m *_AdsReadWriteRequest) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -245,7 +244,7 @@ func AdsReadWriteRequestParseWithBuffer(ctx context.Context, readBuffer utils.Re
 	{
 		_numItems := uint16(utils.InlineIf((bool(bool((bool((indexGroup) == (61568)))) || bool((bool((indexGroup) == (61569))))) || bool((bool((indexGroup) == (61570))))), func() interface{} { return uint16(indexOffset) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsMultiRequestItemParseWithBuffer(arrayCtx, readBuffer, indexGroup)
@@ -332,7 +331,7 @@ func (m *_AdsReadWriteRequest) SerializeWithWriteBuffer(ctx context.Context, wri
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go b/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go
index 222c9239d6..8c2715032c 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -110,7 +109,7 @@ func (m *_AdsStampHeader) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.AdsNotificationSamples) > 0 {
 		for _curItem, element := range m.AdsNotificationSamples {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.AdsNotificationSamples), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.AdsNotificationSamples), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -164,7 +163,7 @@ func AdsStampHeaderParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuf
 	{
 		_numItems := uint16(samples)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AdsNotificationSampleParseWithBuffer(arrayCtx, readBuffer)
@@ -225,7 +224,7 @@ func (m *_AdsStampHeader) SerializeWithWriteBuffer(ctx context.Context, writeBuf
 	}
 	for _curItem, _element := range m.GetAdsNotificationSamples() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdsNotificationSamples()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdsNotificationSamples()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetActionList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetActionList.go
index 500265cc19..7795121416 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetActionList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetActionList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -224,7 +223,7 @@ func (m *_BACnetActionList) SerializeWithWriteBuffer(ctx context.Context, writeB
 	}
 	for _curItem, _element := range m.GetAction() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAction()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAction()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetAssignedLandingCallsLandingCallsList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetAssignedLandingCallsLandingCallsList.go
index d483eb498d..c11b6012c3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetAssignedLandingCallsLandingCallsList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetAssignedLandingCallsLandingCallsList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetAssignedLandingCallsLandingCallsList) SerializeWithWriteBuffer(c
 	}
 	for _curItem, _element := range m.GetLandingCalls() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLandingCalls()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLandingCalls()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetAuthenticationPolicyList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetAuthenticationPolicyList.go
index f925e21ac5..ff81c38213 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetAuthenticationPolicyList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetAuthenticationPolicyList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetAuthenticationPolicyList) SerializeWithWriteBuffer(ctx context.C
 	}
 	for _curItem, _element := range m.GetEntries() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetEntries()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetEntries()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.go
index 497c0be35d..32b3c91b6a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification) Seria
 	}
 	for _curItem, _element := range m.GetListOfCovSubscriptionSpecificationEntry() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfCovSubscriptionSpecificationEntry()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfCovSubscriptionSpecificationEntry()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.go
index c996ddb2b2..399d0db2fb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryLi
 	}
 	for _curItem, _element := range m.GetListOfCovReferences() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfCovReferences()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfCovReferences()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
index 01eb602fdf..e124a1f3b6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -203,7 +202,7 @@ func (m *_BACnetConfirmedServiceRequestReadPropertyMultiple) SerializeWithWriteB
 		}
 		for _curItem, _element := range m.GetData() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetData()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetData()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.go
index 1884e7bad4..298a79850a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -260,7 +259,7 @@ func (m *_BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubs
 	}
 	for _curItem, _element := range m.GetListOfCovReferences() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfCovReferences()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfCovReferences()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.go
index 4be66dce60..0f0c1b2679 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubs
 	}
 	for _curItem, _element := range m.GetSpecifications() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSpecifications()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSpecifications()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
index 77841b812a..060bb73b07 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -203,7 +202,7 @@ func (m *_BACnetConfirmedServiceRequestVTClose) SerializeWithWriteBuffer(ctx con
 		}
 		for _curItem, _element := range m.GetListOfRemoteVtSessionIdentifiers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfRemoteVtSessionIdentifiers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfRemoteVtSessionIdentifiers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
index 6e98057d97..7e99d8ad25 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -203,7 +202,7 @@ func (m *_BACnetConfirmedServiceRequestWritePropertyMultiple) SerializeWithWrite
 		}
 		for _curItem, _element := range m.GetData() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetData()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetData()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAcceptedModes.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAcceptedModes.go
index 9167e41b84..11ede2d6bb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAcceptedModes.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAcceptedModes.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAcceptedModes) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetAcceptedModes() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAcceptedModes()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAcceptedModes()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessAlarmEvents.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessAlarmEvents.go
index 797ec0ba48..ec373f7dd8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessAlarmEvents.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessAlarmEvents.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAccessAlarmEvents) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetAccessAlarmEvents() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAccessAlarmEvents()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAccessAlarmEvents()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorAlarmValues.go
index 0da7cc6444..d8981c12a1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAccessDoorAlarmValues) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorFaultValues.go
index b5fe3fa1ac..e57485d496 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoorFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAccessDoorFaultValues) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoors.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoors.go
index 8bd5585e15..db8b43d7a6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoors.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessDoors.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAccessDoors) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetAccessDoors() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAccessDoors()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAccessDoors()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessTransactionEvents.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessTransactionEvents.go
index 32490b05db..f6fbab2f5c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessTransactionEvents.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessTransactionEvents.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAccessTransactionEvents) SerializeWithWriteBuffer
 		}
 		for _curItem, _element := range m.GetAccessTransactionEvents() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAccessTransactionEvents()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAccessTransactionEvents()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessZoneAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessZoneAlarmValues.go
index 44f9f017cc..769b37bf0c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessZoneAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAccessZoneAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAccessZoneAlarmValues) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAction.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAction.go
index b2684c1362..9691a296c1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAction.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAction.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAction) SerializeWithWriteBuffer(ctx context.Cont
 		}
 		for _curItem, _element := range m.GetActionLists() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetActionLists()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetActionLists()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActionText.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActionText.go
index 68f4f1480a..3b9d16652c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActionText.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActionText.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataActionText) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetActionText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetActionText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetActionText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVMultipleSubscriptions.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVMultipleSubscriptions.go
index 19f90ad1c6..8f1919b596 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVMultipleSubscriptions.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVMultipleSubscriptions.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataActiveCOVMultipleSubscriptions) SerializeWithWrit
 		}
 		for _curItem, _element := range m.GetActiveCOVMultipleSubscriptions() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetActiveCOVMultipleSubscriptions()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetActiveCOVMultipleSubscriptions()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVSubscriptions.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVSubscriptions.go
index a9b85b549f..ef3bcb3941 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVSubscriptions.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveCOVSubscriptions.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataActiveCOVSubscriptions) SerializeWithWriteBuffer(
 		}
 		for _curItem, _element := range m.GetActiveCOVSubscriptions() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetActiveCOVSubscriptions()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetActiveCOVSubscriptions()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveVTSessions.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveVTSessions.go
index 3db93baf10..3aefc5b6c9 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveVTSessions.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataActiveVTSessions.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataActiveVTSessions) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetActiveVTSession() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetActiveVTSession()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetActiveVTSession()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAlarmValues.go
index 1b7b23ad09..59543ac659 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAlarmValues) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedAccessRights.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedAccessRights.go
index b0a615c8d8..0da6f9002c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedAccessRights.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedAccessRights.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAssignedAccessRights) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetAssignedAccessRights() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAssignedAccessRights()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAssignedAccessRights()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedLandingCalls.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedLandingCalls.go
index 96bc479a25..f923b5b6d2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedLandingCalls.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAssignedLandingCalls.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAssignedLandingCalls) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetAssignedLandingCalls() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAssignedLandingCalls()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAssignedLandingCalls()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationFactors.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationFactors.go
index ab6e2b27c8..a7e7809ebc 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationFactors.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationFactors.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAuthenticationFactors) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetAuthenticationFactors() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAuthenticationFactors()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAuthenticationFactors()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyList.go
index 31635943eb..c4a317afeb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAuthenticationPolicyList) SerializeWithWriteBuffe
 		}
 		for _curItem, _element := range m.GetAuthenticationPolicyList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAuthenticationPolicyList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAuthenticationPolicyList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyNames.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyNames.go
index 0dcb198b57..b547e9e231 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyNames.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthenticationPolicyNames.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataAuthenticationPolicyNames) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetAuthenticationPolicyNames() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAuthenticationPolicyNames()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAuthenticationPolicyNames()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthorizationExemptions.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthorizationExemptions.go
index 27ed79cf6b..88481d0fdd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthorizationExemptions.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataAuthorizationExemptions.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataAuthorizationExemptions) SerializeWithWriteBuffer
 		}
 		for _curItem, _element := range m.GetAuthorizationExemption() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAuthorizationExemption()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAuthorizationExemption()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDBroadcastDistributionTable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDBroadcastDistributionTable.go
index 46bcd3d146..a59d4151e2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDBroadcastDistributionTable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDBroadcastDistributionTable.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataBBMDBroadcastDistributionTable) SerializeWithWrit
 		}
 		for _curItem, _element := range m.GetBbmdBroadcastDistributionTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetBbmdBroadcastDistributionTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetBbmdBroadcastDistributionTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDForeignDeviceTable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDForeignDeviceTable.go
index a649365385..c06ccb50f1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDForeignDeviceTable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBBMDForeignDeviceTable.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataBBMDForeignDeviceTable) SerializeWithWriteBuffer(
 		}
 		for _curItem, _element := range m.GetBbmdForeignDeviceTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetBbmdForeignDeviceTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetBbmdForeignDeviceTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitStringValueAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitStringValueAlarmValues.go
index 85e7446fb8..b7dddc676e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitStringValueAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitStringValueAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataBitStringValueAlarmValues) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitText.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitText.go
index 62ef56ccf2..0874851587 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitText.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataBitText.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataBitText) SerializeWithWriteBuffer(ctx context.Con
 		}
 		for _curItem, _element := range m.GetBitText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetBitText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetBitText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCOVURecipients.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCOVURecipients.go
index 4cb2b268c6..198d73f9d3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCOVURecipients.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCOVURecipients.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataCOVURecipients) SerializeWithWriteBuffer(ctx cont
 		}
 		for _curItem, _element := range m.GetCovuRecipients() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCovuRecipients()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCovuRecipients()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorCommand.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorCommand.go
index eb6d4c4ea0..5a1fba5af6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorCommand.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorCommand.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataCarDoorCommand) SerializeWithWriteBuffer(ctx cont
 		}
 		for _curItem, _element := range m.GetCarDoorCommand() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCarDoorCommand()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCarDoorCommand()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorStatus.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorStatus.go
index e1f954bdb8..9cf9111bf3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorStatus.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorStatus.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataCarDoorStatus) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetCarDoorStatus() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCarDoorStatus()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCarDoorStatus()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorText.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorText.go
index 3361b24c20..3846e40ac5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorText.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarDoorText.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataCarDoorText) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetCarDoorText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCarDoorText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCarDoorText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataChannelListOfObjectPropertyReferences.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataChannelListOfObjectPropertyReferences.go
index 95a61424c0..6e0959729c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataChannelListOfObjectPropertyReferences.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataChannelListOfObjectPropertyReferences.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataChannelListOfObjectPropertyReferences) SerializeW
 		}
 		for _curItem, _element := range m.GetReferences() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetReferences()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetReferences()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueAlarmValues.go
index b3e3295bd8..50cce61e67 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataCharacterStringValueAlarmValues) SerializeWithWri
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueFaultValues.go
index 89e74faf6d..ac109ef487 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCharacterStringValueFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataCharacterStringValueFaultValues) SerializeWithWri
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandAction.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandAction.go
index 0feea6a001..534e244043 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandAction.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandAction.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataCommandAction) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetActionLists() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetActionLists()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetActionLists()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandTimeArray.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandTimeArray.go
index b000444795..dc4d0044af 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandTimeArray.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCommandTimeArray.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -294,7 +293,7 @@ func (m *_BACnetConstructedDataCommandTimeArray) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetCommandTimeArray() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCommandTimeArray()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCommandTimeArray()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataConfigurationFiles.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataConfigurationFiles.go
index f856b83028..464e373579 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataConfigurationFiles.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataConfigurationFiles.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataConfigurationFiles) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetConfigurationFiles() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetConfigurationFiles()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetConfigurationFiles()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlGroups.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlGroups.go
index 33ef96136c..f35061a141 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlGroups.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlGroups.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataControlGroups) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetControlGroups() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetControlGroups()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetControlGroups()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentials.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentials.go
index 697cbe83b4..bc0a00b900 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentials.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentials.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataCredentials) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetCredentials() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCredentials()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCredentials()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentialsInZone.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentialsInZone.go
index 17b969ce81..6fb0284113 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentialsInZone.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCredentialsInZone.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataCredentialsInZone) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetCredentialsInZone() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetCredentialsInZone()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetCredentialsInZone()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDateList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDateList.go
index c931d9916a..ce581eb162 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDateList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDateList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataDateList) SerializeWithWriteBuffer(ctx context.Co
 		}
 		for _curItem, _element := range m.GetDateList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetDateList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetDateList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDeviceAddressBinding.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDeviceAddressBinding.go
index a61a981f18..c82d33f031 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDeviceAddressBinding.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDeviceAddressBinding.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataDeviceAddressBinding) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetDeviceAddressBinding() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetDeviceAddressBinding()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetDeviceAddressBinding()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDoorMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDoorMembers.go
index b288c0e8ba..b09b631dd3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDoorMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDoorMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataDoorMembers) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetDoorMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetDoorMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetDoorMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataElevatorGroupGroupMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataElevatorGroupGroupMembers.go
index 3530b38d1f..acf464ee0f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataElevatorGroupGroupMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataElevatorGroupGroupMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataElevatorGroupGroupMembers) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetGroupMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEntryPoints.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEntryPoints.go
index f566174658..1bbe4bc60d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEntryPoints.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEntryPoints.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataEntryPoints) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetEntryPoints() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetEntryPoints()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetEntryPoints()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEscalatorFaultSignals.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEscalatorFaultSignals.go
index 43f4734752..f73c123dc8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEscalatorFaultSignals.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEscalatorFaultSignals.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataEscalatorFaultSignals) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetFaultSignals() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultSignals()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultSignals()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventLogLogBuffer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventLogLogBuffer.go
index e3cc0f156c..777280f762 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventLogLogBuffer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventLogLogBuffer.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataEventLogLogBuffer) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetFloorText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTexts.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTexts.go
index af85c4a816..d30974239c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTexts.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTexts.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -345,7 +344,7 @@ func (m *_BACnetConstructedDataEventMessageTexts) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetEventMessageTexts() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetEventMessageTexts()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetEventMessageTexts()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTextsConfig.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTextsConfig.go
index a4da696a76..e0dc477ef8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTextsConfig.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventMessageTextsConfig.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -345,7 +344,7 @@ func (m *_BACnetConstructedDataEventMessageTextsConfig) SerializeWithWriteBuffer
 		}
 		for _curItem, _element := range m.GetEventMessageTextsConfig() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetEventMessageTextsConfig()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetEventMessageTextsConfig()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventTimeStamps.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventTimeStamps.go
index 6c8b7efe6b..2a5654aefa 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventTimeStamps.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataEventTimeStamps.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -345,7 +344,7 @@ func (m *_BACnetConstructedDataEventTimeStamps) SerializeWithWriteBuffer(ctx con
 		}
 		for _curItem, _element := range m.GetEventTimeStamps() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetEventTimeStamps()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetEventTimeStamps()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExceptionSchedule.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExceptionSchedule.go
index bab5c47dc2..76a51dd345 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExceptionSchedule.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExceptionSchedule.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataExceptionSchedule) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetExceptionSchedule() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetExceptionSchedule()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetExceptionSchedule()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExecutionDelay.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExecutionDelay.go
index 3ec8616eef..62a30d2fdb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExecutionDelay.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExecutionDelay.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataExecutionDelay) SerializeWithWriteBuffer(ctx cont
 		}
 		for _curItem, _element := range m.GetExecutionDelay() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetExecutionDelay()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetExecutionDelay()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExitPoints.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExitPoints.go
index d691908325..eaa8ad2f5f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExitPoints.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataExitPoints.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataExitPoints) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetExitPoints() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetExitPoints()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetExitPoints()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFailedAttemptEvents.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFailedAttemptEvents.go
index c43d03c026..be3c4b6d5f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFailedAttemptEvents.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFailedAttemptEvents.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataFailedAttemptEvents) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetFailedAttemptEvents() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFailedAttemptEvents()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFailedAttemptEvents()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultSignals.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultSignals.go
index 97331adea2..6b678fd849 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultSignals.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultSignals.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataFaultSignals) SerializeWithWriteBuffer(ctx contex
 		}
 		for _curItem, _element := range m.GetFaultSignals() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultSignals()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultSignals()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultValues.go
index 3f31fa90a2..4f9b2ea46d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataFaultValues) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFloorText.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFloorText.go
index 9422fb1f7f..13c20e1531 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFloorText.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataFloorText.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataFloorText) SerializeWithWriteBuffer(ctx context.C
 		}
 		for _curItem, _element := range m.GetFloorText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupGroupMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupGroupMembers.go
index f2ba94804e..1887be4b47 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupGroupMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupGroupMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataGlobalGroupGroupMembers) SerializeWithWriteBuffer
 		}
 		for _curItem, _element := range m.GetGroupMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupPresentValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupPresentValue.go
index 6d0c8b0f85..d88bb8351f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupPresentValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGlobalGroupPresentValue.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataGlobalGroupPresentValue) SerializeWithWriteBuffer
 		}
 		for _curItem, _element := range m.GetPresentValue() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPresentValue()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPresentValue()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMemberNames.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMemberNames.go
index 9c53d6c165..ffa6e8cad6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMemberNames.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMemberNames.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataGroupMemberNames) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetGroupMemberNames() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetGroupMemberNames()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetGroupMemberNames()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMembers.go
index 5aded54ba8..7659e0dd3e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataGroupMembers) SerializeWithWriteBuffer(ctx contex
 		}
 		for _curItem, _element := range m.GetGroupMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupPresentValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupPresentValue.go
index 7494f87593..29a1d80217 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupPresentValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataGroupPresentValue.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataGroupPresentValue) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetPresentValue() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPresentValue()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPresentValue()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPDNSServer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPDNSServer.go
index 208211fb63..e6b25a8d23 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPDNSServer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPDNSServer.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataIPDNSServer) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetIpDnsServer() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetIpDnsServer()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetIpDnsServer()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPv6DNSServer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPv6DNSServer.go
index 0cc1a0d109..6845ff8523 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPv6DNSServer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIPv6DNSServer.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataIPv6DNSServer) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetIpv6DnsServer() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetIpv6DnsServer()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetIpv6DnsServer()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataKeySets.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataKeySets.go
index 572417ae36..71c84eab4e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataKeySets.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataKeySets.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -294,7 +293,7 @@ func (m *_BACnetConstructedDataKeySets) SerializeWithWriteBuffer(ctx context.Con
 		}
 		for _curItem, _element := range m.GetKeySets() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetKeySets()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetKeySets()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingCalls.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingCalls.go
index 1a1bc51042..3d85ce7042 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingCalls.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingCalls.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLandingCalls) SerializeWithWriteBuffer(ctx contex
 		}
 		for _curItem, _element := range m.GetLandingCallStatus() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLandingCallStatus()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLandingCallStatus()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingDoorStatus.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingDoorStatus.go
index c0357ec766..7034bca804 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingDoorStatus.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLandingDoorStatus.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataLandingDoorStatus) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetLandingDoorStatus() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLandingDoorStatus()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLandingDoorStatus()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyAlarmValues.go
index e6e741d7af..77bb64a980 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLifeSafetyAlarmValues) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointAlarmValues.go
index 07d4b556ce..2bdcd47841 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLifeSafetyPointAlarmValues) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointFaultValues.go
index de19018f2e..fc12e82674 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyPointFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLifeSafetyPointFaultValues) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneAlarmValues.go
index f55937cf5d..dc634c1535 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLifeSafetyZoneAlarmValues) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneFaultValues.go
index 27e68807a6..d84e559ded 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLifeSafetyZoneFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLifeSafetyZoneFaultValues) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLiftFaultSignals.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLiftFaultSignals.go
index 791fd67141..a87b989d86 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLiftFaultSignals.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLiftFaultSignals.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataLiftFaultSignals) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetFaultSignals() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultSignals()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultSignals()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLinkSpeeds.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLinkSpeeds.go
index 3bd1e9e19e..46756cb639 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLinkSpeeds.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLinkSpeeds.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataLinkSpeeds) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetLinkSpeeds() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLinkSpeeds()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLinkSpeeds()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfGroupMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfGroupMembers.go
index cca1f84f38..17ec467ef7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfGroupMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfGroupMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataListOfGroupMembers) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetListOfGroupMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfGroupMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfGroupMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfObjectPropertyReferences.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfObjectPropertyReferences.go
index 6990c66661..712f0fa07b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfObjectPropertyReferences.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataListOfObjectPropertyReferences.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataListOfObjectPropertyReferences) SerializeWithWrit
 		}
 		for _curItem, _element := range m.GetReferences() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetReferences()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetReferences()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLogBuffer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLogBuffer.go
index ae81cc5693..48f2affbe3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLogBuffer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataLogBuffer.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataLogBuffer) SerializeWithWriteBuffer(ctx context.C
 		}
 		for _curItem, _element := range m.GetFloorText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMakingCarCall.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMakingCarCall.go
index 2ef4f5f2a1..8c61580262 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMakingCarCall.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMakingCarCall.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataMakingCarCall) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetMakingCarCall() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMakingCarCall()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMakingCarCall()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataManualSlaveAddressBinding.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataManualSlaveAddressBinding.go
index 30e737ea6c..3766b4bdf3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataManualSlaveAddressBinding.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataManualSlaveAddressBinding.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataManualSlaveAddressBinding) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetManualSlaveAddressBinding() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetManualSlaveAddressBinding()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetManualSlaveAddressBinding()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMaskedAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMaskedAlarmValues.go
index 66320cf10d..4732c2c18a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMaskedAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMaskedAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMaskedAlarmValues) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetMaskedAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMaskedAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMaskedAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMemberOf.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMemberOf.go
index 9aae70db75..509b60c026 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMemberOf.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMemberOf.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMemberOf) SerializeWithWriteBuffer(ctx context.Co
 		}
 		for _curItem, _element := range m.GetZones() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetZones()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetZones()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMembers.go
index 0a8a92b90c..73a362c210 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMembers) SerializeWithWriteBuffer(ctx context.Con
 		}
 		for _curItem, _element := range m.GetMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputAlarmValues.go
index 14e637407e..9f4d799da1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMultiStateInputAlarmValues) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputFaultValues.go
index 8dd48ff39e..25a9674bb5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateInputFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMultiStateInputFaultValues) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueAlarmValues.go
index 3d4311789b..82816772b4 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMultiStateValueAlarmValues) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueFaultValues.go
index 6da215e337..182c554426 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataMultiStateValueFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataMultiStateValueFaultValues) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetFaultValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFaultValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNegativeAccessRules.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNegativeAccessRules.go
index e7dc1dada3..7bf5a443ca 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNegativeAccessRules.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNegativeAccessRules.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataNegativeAccessRules) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetNegativeAccessRules() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetNegativeAccessRules()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetNegativeAccessRules()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNetworkAccessSecurityPolicies.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNetworkAccessSecurityPolicies.go
index 29a15e7b70..55556cfed3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNetworkAccessSecurityPolicies.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataNetworkAccessSecurityPolicies.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataNetworkAccessSecurityPolicies) SerializeWithWrite
 		}
 		for _curItem, _element := range m.GetNetworkAccessSecurityPolicies() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetNetworkAccessSecurityPolicies()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetNetworkAccessSecurityPolicies()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataObjectList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataObjectList.go
index 874aec7613..e58fa7e5e8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataObjectList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataObjectList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataObjectList) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetObjectList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetObjectList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetObjectList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPortFilter.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPortFilter.go
index 76356ef202..12c4e79305 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPortFilter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPortFilter.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataPortFilter) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetPortFilter() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPortFilter()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPortFilter()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPositiveAccessRules.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPositiveAccessRules.go
index 22dfb1f4e0..8f716e804b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPositiveAccessRules.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPositiveAccessRules.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataPositiveAccessRules) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetPositiveAccessRules() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPositiveAccessRules()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPositiveAccessRules()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPriority.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPriority.go
index 46457faf31..b62e0b25e6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPriority.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPriority.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -294,7 +293,7 @@ func (m *_BACnetConstructedDataPriority) SerializeWithWriteBuffer(ctx context.Co
 		}
 		for _curItem, _element := range m.GetPriority() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPriority()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPriority()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPropertyList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPropertyList.go
index dbaf0b27e9..e364eeead8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPropertyList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataPropertyList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataPropertyList) SerializeWithWriteBuffer(ctx contex
 		}
 		for _curItem, _element := range m.GetPropertyList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPropertyList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPropertyList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataReasonForDisable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataReasonForDisable.go
index e1411c4494..f14cbd081a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataReasonForDisable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataReasonForDisable.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataReasonForDisable) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetReasonForDisable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetReasonForDisable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetReasonForDisable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRecipientList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRecipientList.go
index 25031a6104..1aa3a537ef 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRecipientList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRecipientList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataRecipientList) SerializeWithWriteBuffer(ctx conte
 		}
 		for _curItem, _element := range m.GetRecipientList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetRecipientList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetRecipientList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRegisteredCarCall.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRegisteredCarCall.go
index 08ed3facdb..1cbabc2054 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRegisteredCarCall.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRegisteredCarCall.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataRegisteredCarCall) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetRegisteredCarCall() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetRegisteredCarCall()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetRegisteredCarCall()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRestartNotificationRecipients.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRestartNotificationRecipients.go
index 73bb3a0874..2eb21ee576 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRestartNotificationRecipients.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRestartNotificationRecipients.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataRestartNotificationRecipients) SerializeWithWrite
 		}
 		for _curItem, _element := range m.GetRestartNotificationRecipients() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetRestartNotificationRecipients()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetRestartNotificationRecipients()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRoutingTable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRoutingTable.go
index a6eb9c8be8..b0b5abce87 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRoutingTable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataRoutingTable.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataRoutingTable) SerializeWithWriteBuffer(ctx contex
 		}
 		for _curItem, _element := range m.GetRoutingTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetRoutingTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetRoutingTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevelDescriptions.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevelDescriptions.go
index 01c86fa093..c3bd18cea2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevelDescriptions.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevelDescriptions.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataShedLevelDescriptions) SerializeWithWriteBuffer(c
 		}
 		for _curItem, _element := range m.GetShedLevelDescriptions() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetShedLevelDescriptions()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetShedLevelDescriptions()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevels.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevels.go
index 660004b8df..f4f5f2f3e9 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevels.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataShedLevels.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataShedLevels) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetShedLevels() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetShedLevels()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetShedLevels()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSlaveAddressBinding.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSlaveAddressBinding.go
index eee8625d6f..02af36e975 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSlaveAddressBinding.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSlaveAddressBinding.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataSlaveAddressBinding) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetSlaveAddressBinding() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSlaveAddressBinding()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSlaveAddressBinding()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateChangeValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateChangeValues.go
index dca869afa4..e4c53e0b26 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateChangeValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateChangeValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -294,7 +293,7 @@ func (m *_BACnetConstructedDataStateChangeValues) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetStateChangeValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetStateChangeValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetStateChangeValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateText.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateText.go
index 20bb3c732c..ba63453b98 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateText.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStateText.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataStateText) SerializeWithWriteBuffer(ctx context.C
 		}
 		for _curItem, _element := range m.GetStateText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetStateText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetStateText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStructuredObjectList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStructuredObjectList.go
index 0647dba185..e6bf7479f4 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStructuredObjectList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataStructuredObjectList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataStructuredObjectList) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetStructuredObjectList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetStructuredObjectList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetStructuredObjectList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateAnnotations.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateAnnotations.go
index 6c9889e93c..fded397f74 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateAnnotations.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateAnnotations.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSubordinateAnnotations) SerializeWithWriteBuffer(
 		}
 		for _curItem, _element := range m.GetSubordinateAnnotations() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSubordinateAnnotations()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSubordinateAnnotations()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateList.go
index 88c282dec9..afe90ca88a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSubordinateList) SerializeWithWriteBuffer(ctx con
 		}
 		for _curItem, _element := range m.GetSubordinateList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSubordinateList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSubordinateList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateNodeTypes.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateNodeTypes.go
index 4181c2b210..7700ac6b41 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateNodeTypes.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateNodeTypes.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSubordinateNodeTypes) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetSubordinateNodeTypes() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSubordinateNodeTypes()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSubordinateNodeTypes()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateRelationships.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateRelationships.go
index 6872a77491..9e376096f3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateRelationships.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateRelationships.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSubordinateRelationships) SerializeWithWriteBuffe
 		}
 		for _curItem, _element := range m.GetSubordinateRelationships() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSubordinateRelationships()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSubordinateRelationships()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateTags.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateTags.go
index 5841cc122d..c770bdfcda 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateTags.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubordinateTags.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSubordinateTags) SerializeWithWriteBuffer(ctx con
 		}
 		for _curItem, _element := range m.GetSubordinateList() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSubordinateList()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSubordinateList()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubscribedRecipients.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubscribedRecipients.go
index 9b1019a6c2..861866bd1b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubscribedRecipients.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSubscribedRecipients.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataSubscribedRecipients) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetSubscribedRecipients() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSubscribedRecipients()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSubscribedRecipients()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormatClasses.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormatClasses.go
index 9255ccc276..ca5af7c43e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormatClasses.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormatClasses.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSupportedFormatClasses) SerializeWithWriteBuffer(
 		}
 		for _curItem, _element := range m.GetSupportedFormats() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSupportedFormats()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSupportedFormats()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormats.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormats.go
index 0ee5937f09..f4347365b5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormats.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedFormats.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataSupportedFormats) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetSupportedFormats() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSupportedFormats()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSupportedFormats()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedSecurityAlgorithms.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedSecurityAlgorithms.go
index a2045b3a08..18e9fb43bf 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedSecurityAlgorithms.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataSupportedSecurityAlgorithms.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataSupportedSecurityAlgorithms) SerializeWithWriteBu
 		}
 		for _curItem, _element := range m.GetSupportedSecurityAlgorithms() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSupportedSecurityAlgorithms()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSupportedSecurityAlgorithms()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTags.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTags.go
index d1afdc640a..68af1b442e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTags.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTags.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataTags) SerializeWithWriteBuffer(ctx context.Contex
 		}
 		for _curItem, _element := range m.GetTags() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTags()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTags()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimeSynchronizationRecipients.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimeSynchronizationRecipients.go
index ea0f623130..a3264064ea 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimeSynchronizationRecipients.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimeSynchronizationRecipients.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataTimeSynchronizationRecipients) SerializeWithWrite
 		}
 		for _curItem, _element := range m.GetTimeSynchronizationRecipients() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTimeSynchronizationRecipients()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTimeSynchronizationRecipients()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimerAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimerAlarmValues.go
index ba40d70735..f45a49ab04 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimerAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTimerAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataTimerAlarmValues) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetAlarmValues() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogLogBuffer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogLogBuffer.go
index ea2c59c47f..e534ae7aa6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogLogBuffer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogLogBuffer.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataTrendLogLogBuffer) SerializeWithWriteBuffer(ctx c
 		}
 		for _curItem, _element := range m.GetFloorText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogBuffer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogBuffer.go
index 1ed2d6a519..a85a2e35a8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogBuffer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogBuffer.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataTrendLogMultipleLogBuffer) SerializeWithWriteBuff
 		}
 		for _curItem, _element := range m.GetFloorText() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFloorText()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty.go
index 7e1dccf5fa..3d7cfa73da 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataTrendLogMultipleLogDeviceObjectProperty) Serializ
 		}
 		for _curItem, _element := range m.GetGroupMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetGroupMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUTCTimeSynchronizationRecipients.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUTCTimeSynchronizationRecipients.go
index 707a0d3e11..529823d7dd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUTCTimeSynchronizationRecipients.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUTCTimeSynchronizationRecipients.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataUTCTimeSynchronizationRecipients) SerializeWithWr
 		}
 		for _curItem, _element := range m.GetUtcTimeSynchronizationRecipients() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetUtcTimeSynchronizationRecipients()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetUtcTimeSynchronizationRecipients()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go
index 425dc7ec24..84998bc9b8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnspecified.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -289,7 +288,7 @@ func (m *_BACnetConstructedDataUnspecified) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetData() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetData()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetData()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVTClassesSupported.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVTClassesSupported.go
index b050b6f9ff..7af815db19 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVTClassesSupported.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVTClassesSupported.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataVTClassesSupported) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetVtClassesSupported() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetVtClassesSupported()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetVtClassesSupported()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataValueSourceArray.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataValueSourceArray.go
index 2f7404961d..3e8e9d3b95 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataValueSourceArray.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataValueSourceArray.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -294,7 +293,7 @@ func (m *_BACnetConstructedDataValueSourceArray) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetVtClassesSupported() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetVtClassesSupported()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetVtClassesSupported()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVirtualMACAddressTable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVirtualMACAddressTable.go
index 9c95a2a637..341ad84862 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVirtualMACAddressTable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataVirtualMACAddressTable.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataVirtualMACAddressTable) SerializeWithWriteBuffer(
 		}
 		for _curItem, _element := range m.GetVirtualMacAddressTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetVirtualMacAddressTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetVirtualMacAddressTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataWeeklySchedule.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataWeeklySchedule.go
index a3e61a0025..4ec35e5ae9 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataWeeklySchedule.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataWeeklySchedule.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -294,7 +293,7 @@ func (m *_BACnetConstructedDataWeeklySchedule) SerializeWithWriteBuffer(ctx cont
 		}
 		for _curItem, _element := range m.GetWeeklySchedule() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetWeeklySchedule()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetWeeklySchedule()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataZoneMembers.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataZoneMembers.go
index eac9ee627c..677ba0f6c8 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataZoneMembers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataZoneMembers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -206,7 +205,7 @@ func (m *_BACnetConstructedDataZoneMembers) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetMembers() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMembers()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMembers()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetDailySchedule.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetDailySchedule.go
index 9e290deba6..61e3d3b286 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetDailySchedule.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetDailySchedule.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -224,7 +223,7 @@ func (m *_BACnetDailySchedule) SerializeWithWriteBuffer(ctx context.Context, wri
 	}
 	for _curItem, _element := range m.GetDaySchedule() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetDaySchedule()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetDaySchedule()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterAccessEventListOfAccessEvents.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterAccessEventListOfAccessEvents.go
index 00ba7ca3ca..b13e0877b7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterAccessEventListOfAccessEvents.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterAccessEventListOfAccessEvents.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterAccessEventListOfAccessEvents) SerializeWithWriteB
 	}
 	for _curItem, _element := range m.GetListOfAccessEvents() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfAccessEvents()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfAccessEvents()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfBitstringListOfBitstringValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfBitstringListOfBitstringValues.go
index c946fffe94..c719eccd19 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfBitstringListOfBitstringValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfBitstringListOfBitstringValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterChangeOfBitstringListOfBitstringValues) SerializeW
 	}
 	for _curItem, _element := range m.GetListOfBitstringValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfBitstringValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfBitstringValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfCharacterStringListOfAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfCharacterStringListOfAlarmValues.go
index 5524f3e925..5f248a552f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfCharacterStringListOfAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfCharacterStringListOfAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterChangeOfCharacterStringListOfAlarmValues) Serializ
 	}
 	for _curItem, _element := range m.GetListOfAlarmValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfAlarmValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfAlarmValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfAlarmValues.go
index 00417b3ca3..a64ce0ebf5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterChangeOfLifeSavetyListOfAlarmValues) SerializeWith
 	}
 	for _curItem, _element := range m.GetListOfAlarmValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfAlarmValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfAlarmValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfLifeSavetyAlarmValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfLifeSavetyAlarmValues.go
index 836598de43..0a9473cf79 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfLifeSavetyAlarmValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfLifeSavetyListOfLifeSavetyAlarmValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterChangeOfLifeSavetyListOfLifeSavetyAlarmValues) Ser
 	}
 	for _curItem, _element := range m.GetListOfLifeSavetyAlarmValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfLifeSavetyAlarmValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfLifeSavetyAlarmValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfStateListOfValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfStateListOfValues.go
index 7e151bc7c3..4ebdd591a1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfStateListOfValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfStateListOfValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterChangeOfStateListOfValues) SerializeWithWriteBuffe
 	}
 	for _curItem, _element := range m.GetListOfValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfTimerAlarmValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfTimerAlarmValue.go
index a7eced74d6..22001e0849 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfTimerAlarmValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfTimerAlarmValue.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventParameterChangeOfTimerAlarmValue) SerializeWithWriteBuffer(
 	}
 	for _curItem, _element := range m.GetAlarmValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAlarmValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventSummariesList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventSummariesList.go
index 5b1599def7..e4b810639a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventSummariesList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventSummariesList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetEventSummariesList) SerializeWithWriteBuffer(ctx context.Context
 	}
 	for _curItem, _element := range m.GetListOfEventSummaries() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfEventSummaries()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfEventSummaries()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultCharacterStringListOfFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultCharacterStringListOfFaultValues.go
index 62dc556c1f..db8033f834 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultCharacterStringListOfFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultCharacterStringListOfFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetFaultParameterFaultCharacterStringListOfFaultValues) SerializeWi
 	}
 	for _curItem, _element := range m.GetListOfFaultValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfFaultValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfFaultValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParameters.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParameters.go
index db75583bbb..9efae292c3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParameters.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParameters.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetFaultParameterFaultExtendedParameters) SerializeWithWriteBuffer(
 	}
 	for _curItem, _element := range m.GetParameters() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetParameters()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetParameters()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultLifeSafetyListOfFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultLifeSafetyListOfFaultValues.go
index ecf20717bc..ec6f15e5f7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultLifeSafetyListOfFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultLifeSafetyListOfFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetFaultParameterFaultLifeSafetyListOfFaultValues) SerializeWithWri
 	}
 	for _curItem, _element := range m.GetListIfFaultValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListIfFaultValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListIfFaultValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultStateListOfFaultValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultStateListOfFaultValues.go
index 403bf32b41..ee88107969 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultStateListOfFaultValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultStateListOfFaultValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetFaultParameterFaultStateListOfFaultValues) SerializeWithWriteBuf
 	}
 	for _curItem, _element := range m.GetListIfFaultValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListIfFaultValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListIfFaultValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetGroupChannelValueList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetGroupChannelValueList.go
index 8c3f1094a5..ea3f9879ae 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetGroupChannelValueList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetGroupChannelValueList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetGroupChannelValueList) SerializeWithWriteBuffer(ctx context.Cont
 	}
 	for _curItem, _element := range m.GetListOfEventSummaries() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfEventSummaries()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfEventSummaries()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingDoorStatusLandingDoorsList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingDoorStatusLandingDoorsList.go
index e35c56acab..6c8fb8fc25 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingDoorStatusLandingDoorsList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingDoorStatusLandingDoorsList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetLandingDoorStatusLandingDoorsList) SerializeWithWriteBuffer(ctx
 	}
 	for _curItem, _element := range m.GetLandingDoors() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLandingDoors()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLandingDoors()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLiftCarCallListFloorList.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLiftCarCallListFloorList.go
index 34829e0214..d5a8db250c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLiftCarCallListFloorList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLiftCarCallListFloorList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetLiftCarCallListFloorList) SerializeWithWriteBuffer(ctx context.C
 	}
 	for _curItem, _element := range m.GetFloorNumbers() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFloorNumbers()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFloorNumbers()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogData.go
index d4b0912a23..22ec1bae53 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogData.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -259,7 +258,7 @@ func (m *_BACnetLogDataLogData) SerializeWithWriteBuffer(ctx context.Context, wr
 		}
 		for _curItem, _element := range m.GetLogData() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLogData()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLogData()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNameValueCollection.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNameValueCollection.go
index cfe3d06fce..d81121a185 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNameValueCollection.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNameValueCollection.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetNameValueCollection) SerializeWithWriteBuffer(ctx context.Contex
 	}
 	for _curItem, _element := range m.GetMembers() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMembers()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMembers()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityArray.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityArray.go
index 1b96803962..ed19dc62a3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityArray.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityArray.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -565,7 +564,7 @@ func (m *_BACnetPriorityArray) SerializeWithWriteBuffer(ctx context.Context, wri
 	}
 	for _curItem, _element := range m.GetData() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetData()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetData()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyValues.go
index 7622b7bd3f..0711750bc0 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -230,7 +229,7 @@ func (m *_BACnetPropertyValues) SerializeWithWriteBuffer(ctx context.Context, wr
 	}
 	for _curItem, _element := range m.GetData() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetData()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetData()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessResultListOfResults.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessResultListOfResults.go
index 2eee2e3945..2f3f053d6d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessResultListOfResults.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessResultListOfResults.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -230,7 +229,7 @@ func (m *_BACnetReadAccessResultListOfResults) SerializeWithWriteBuffer(ctx cont
 	}
 	for _curItem, _element := range m.GetListOfReadAccessProperty() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfReadAccessProperty()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfReadAccessProperty()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessSpecification.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessSpecification.go
index d7c6db9805..f29a84ec2e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessSpecification.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetReadAccessSpecification.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -260,7 +259,7 @@ func (m *_BACnetReadAccessSpecification) SerializeWithWriteBuffer(ctx context.Co
 	}
 	for _curItem, _element := range m.GetListOfPropertyReferences() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfPropertyReferences()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfPropertyReferences()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetSecurityKeySetKeyIds.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetSecurityKeySetKeyIds.go
index c622f09f3b..9443e7882a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetSecurityKeySetKeyIds.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetSecurityKeySetKeyIds.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetSecurityKeySetKeyIds) SerializeWithWriteBuffer(ctx context.Conte
 	}
 	for _curItem, _element := range m.GetKeyIds() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetKeyIds()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetKeyIds()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileRecord.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileRecord.go
index daf8517706..03c9420f47 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileRecord.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileRecord.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -139,7 +138,7 @@ func (m *_BACnetServiceAckAtomicReadFileRecord) GetLengthInBits(ctx context.Cont
 	// Array field
 	if len(m.FileRecordData) > 0 {
 		for _curItem, element := range m.FileRecordData {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.FileRecordData), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.FileRecordData), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -205,7 +204,7 @@ func BACnetServiceAckAtomicReadFileRecordParseWithBuffer(ctx context.Context, re
 	{
 		_numItems := uint16(returnedRecordCount.GetPayload().GetActualValue())
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := BACnetApplicationTagParseWithBuffer(arrayCtx, readBuffer)
@@ -280,7 +279,7 @@ func (m *_BACnetServiceAckAtomicReadFileRecord) SerializeWithWriteBuffer(ctx con
 		}
 		for _curItem, _element := range m.GetFileRecordData() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetFileRecordData()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetFileRecordData()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
index 6ec4eb5d18..d02cce8fe1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -202,7 +201,7 @@ func (m *_BACnetServiceAckReadPropertyMultiple) SerializeWithWriteBuffer(ctx con
 		}
 		for _curItem, _element := range m.GetData() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetData()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetData()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventListOfTimeValues.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventListOfTimeValues.go
index 0f5cf5342f..71cc590903 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventListOfTimeValues.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventListOfTimeValues.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetSpecialEventListOfTimeValues) SerializeWithWriteBuffer(ctx conte
 	}
 	for _curItem, _element := range m.GetListOfTimeValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfTimeValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfTimeValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTagPayloadBitString.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetTagPayloadBitString.go
index 82154591e3..9b468b1603 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTagPayloadBitString.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTagPayloadBitString.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -157,7 +156,7 @@ func BACnetTagPayloadBitStringParseWithBuffer(ctx context.Context, readBuffer ut
 	{
 		_numItems := uint16(uint16((uint16((uint16(actualLength) - uint16(uint16(1)))) * uint16(uint16(8)))) - uint16(unusedBits))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadBit("")
@@ -184,7 +183,7 @@ func BACnetTagPayloadBitStringParseWithBuffer(ctx context.Context, readBuffer ut
 	{
 		_numItems := uint16(unusedBits)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadBit("")
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStampsEnclosed.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStampsEnclosed.go
index d1520b40ea..23a67097e1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStampsEnclosed.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStampsEnclosed.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_BACnetTimeStampsEnclosed) SerializeWithWriteBuffer(ctx context.Context
 	}
 	for _curItem, _element := range m.GetTimestamps() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTimestamps()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTimestamps()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetWriteAccessSpecification.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetWriteAccessSpecification.go
index 64d44b96d6..d92ba68275 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetWriteAccessSpecification.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetWriteAccessSpecification.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -260,7 +259,7 @@ func (m *_BACnetWriteAccessSpecification) SerializeWithWriteBuffer(ctx context.C
 	}
 	for _curItem, _element := range m.GetListOfPropertyWriteDefinition() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfPropertyWriteDefinition()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfPropertyWriteDefinition()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCBroadcastDistributionTableEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCBroadcastDistributionTableEntry.go
index f2cae572af..56a9184142 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCBroadcastDistributionTableEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCBroadcastDistributionTableEntry.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -147,7 +146,7 @@ func BVLCBroadcastDistributionTableEntryParseWithBuffer(ctx context.Context, rea
 	{
 		_numItems := uint16(uint16(4))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
@@ -181,7 +180,7 @@ func BVLCBroadcastDistributionTableEntryParseWithBuffer(ctx context.Context, rea
 	{
 		_numItems := uint16(uint16(4))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
index dcc1ef96c8..b30c10353a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -164,7 +163,7 @@ func BVLCDeleteForeignDeviceTableEntryParseWithBuffer(ctx context.Context, readB
 	{
 		_numItems := uint16(uint16(4))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCForeignDeviceTableEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCForeignDeviceTableEntry.go
index 06c818807d..40403208a7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCForeignDeviceTableEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCForeignDeviceTableEntry.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -155,7 +154,7 @@ func BVLCForeignDeviceTableEntryParseWithBuffer(ctx context.Context, readBuffer
 	{
 		_numItems := uint16(uint16(4))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCForwardedNPDU.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCForwardedNPDU.go
index a2af24c360..04dfd7ce71 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCForwardedNPDU.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCForwardedNPDU.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -178,7 +177,7 @@ func BVLCForwardedNPDUParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	{
 		_numItems := uint16(uint16(4))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
index 3014418e6b..1813c0c819 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -201,7 +200,7 @@ func (m *_BVLCReadBroadcastDistributionTableAck) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
index 8cbadb1a03..6a498cf2af 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -201,7 +200,7 @@ func (m *_BVLCReadForeignDeviceTableAck) SerializeWithWriteBuffer(ctx context.Co
 		}
 		for _curItem, _element := range m.GetTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go b/plc4go/protocols/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go
index af60c0300b..e3ef9909e2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BVLCWriteBroadcastDistributionTable.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -201,7 +200,7 @@ func (m *_BVLCWriteBroadcastDistributionTable) SerializeWithWriteBuffer(ctx cont
 		}
 		for _curItem, _element := range m.GetTable() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTable()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTable()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotifications.go b/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotifications.go
index 1190bc9f46..8047bebde6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotifications.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotifications.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -260,7 +259,7 @@ func (m *_ListOfCovNotifications) SerializeWithWriteBuffer(ctx context.Context,
 	}
 	for _curItem, _element := range m.GetListOfValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotificationsList.go b/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotificationsList.go
index 5774debcfd..2263e077bf 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotificationsList.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/ListOfCovNotificationsList.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_ListOfCovNotificationsList) SerializeWithWriteBuffer(ctx context.Conte
 	}
 	for _curItem, _element := range m.GetSpecifications() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSpecifications()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSpecifications()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTable.go b/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTable.go
index 6053de848b..4d9b79e224 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTable.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTable.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -128,7 +127,7 @@ func (m *_NLMInitalizeRoutingTable) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.PortMappings) > 0 {
 		for _curItem, element := range m.PortMappings {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.PortMappings), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.PortMappings), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -175,7 +174,7 @@ func NLMInitalizeRoutingTableParseWithBuffer(ctx context.Context, readBuffer uti
 	{
 		_numItems := uint16(numberOfPorts)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := NLMInitalizeRoutingTablePortMappingParseWithBuffer(arrayCtx, readBuffer)
@@ -234,7 +233,7 @@ func (m *_NLMInitalizeRoutingTable) SerializeWithWriteBuffer(ctx context.Context
 		}
 		for _curItem, _element := range m.GetPortMappings() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPortMappings()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPortMappings()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTableAck.go b/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTableAck.go
index 6a100022dd..ed1b0d3c70 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTableAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLMInitalizeRoutingTableAck.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -128,7 +127,7 @@ func (m *_NLMInitalizeRoutingTableAck) GetLengthInBits(ctx context.Context) uint
 	// Array field
 	if len(m.PortMappings) > 0 {
 		for _curItem, element := range m.PortMappings {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.PortMappings), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.PortMappings), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -175,7 +174,7 @@ func NLMInitalizeRoutingTableAckParseWithBuffer(ctx context.Context, readBuffer
 	{
 		_numItems := uint16(numberOfPorts)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := NLMInitalizeRoutingTablePortMappingParseWithBuffer(arrayCtx, readBuffer)
@@ -234,7 +233,7 @@ func (m *_NLMInitalizeRoutingTableAck) SerializeWithWriteBuffer(ctx context.Cont
 		}
 		for _curItem, _element := range m.GetPortMappings() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetPortMappings()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetPortMappings()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLMUpdateKeyUpdate.go b/plc4go/protocols/bacnetip/readwrite/model/NLMUpdateKeyUpdate.go
index e3e9aee53f..d20a2dae76 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLMUpdateKeyUpdate.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLMUpdateKeyUpdate.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -220,7 +219,7 @@ func (m *_NLMUpdateKeyUpdate) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Set1Keys) > 0 {
 		for _curItem, element := range m.Set1Keys {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Set1Keys), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Set1Keys), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -250,7 +249,7 @@ func (m *_NLMUpdateKeyUpdate) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Set2Keys) > 0 {
 		for _curItem, element := range m.Set2Keys {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Set2Keys), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Set2Keys), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -343,7 +342,7 @@ func NLMUpdateKeyUpdateParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	{
 		_numItems := uint16(utils.InlineIf(bool((set1KeyCount) != (nil)), func() interface{} { return uint16((*set1KeyCount)) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := NLMUpdateKeyUpdateKeyEntryParseWithBuffer(arrayCtx, readBuffer)
@@ -410,7 +409,7 @@ func NLMUpdateKeyUpdateParseWithBuffer(ctx context.Context, readBuffer utils.Rea
 	{
 		_numItems := uint16(utils.InlineIf(bool((set1KeyCount) != (nil)), func() interface{} { return uint16((*set1KeyCount)) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := NLMUpdateKeyUpdateKeyEntryParseWithBuffer(arrayCtx, readBuffer)
@@ -523,7 +522,7 @@ func (m *_NLMUpdateKeyUpdate) SerializeWithWriteBuffer(ctx context.Context, writ
 		}
 		for _curItem, _element := range m.GetSet1Keys() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSet1Keys()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSet1Keys()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
@@ -580,7 +579,7 @@ func (m *_NLMUpdateKeyUpdate) SerializeWithWriteBuffer(ctx context.Context, writ
 		}
 		for _curItem, _element := range m.GetSet2Keys() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetSet2Keys()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetSet2Keys()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NPDU.go b/plc4go/protocols/bacnetip/readwrite/model/NPDU.go
index 4ba6f79834..3adb690f0a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NPDU.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NPDU.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -366,7 +365,7 @@ func NPDUParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, npduL
 	{
 		_numItems := uint16(utils.InlineIf(control.GetDestinationSpecified(), func() interface{} { return uint16((*destinationLength)) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
@@ -418,7 +417,7 @@ func NPDUParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, npduL
 	{
 		_numItems := uint16(utils.InlineIf(control.GetSourceSpecified(), func() interface{} { return uint16((*sourceLength)) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/VTCloseErrorListOfVTSessionIdentifiers.go b/plc4go/protocols/bacnetip/readwrite/model/VTCloseErrorListOfVTSessionIdentifiers.go
index eb0c5047a5..6025de1e4d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/VTCloseErrorListOfVTSessionIdentifiers.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/VTCloseErrorListOfVTSessionIdentifiers.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -228,7 +227,7 @@ func (m *_VTCloseErrorListOfVTSessionIdentifiers) SerializeWithWriteBuffer(ctx c
 	}
 	for _curItem, _element := range m.GetListOfVtSessionIdentifiers() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetListOfVtSessionIdentifiers()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetListOfVtSessionIdentifiers()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/CALDataStatus.go b/plc4go/protocols/cbus/readwrite/model/CALDataStatus.go
index 13ba85ea07..c812f76df8 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALDataStatus.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALDataStatus.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -138,7 +137,7 @@ func (m *_CALDataStatus) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.StatusBytes) > 0 {
 		for _curItem, element := range m.StatusBytes {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.StatusBytes), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.StatusBytes), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -198,7 +197,7 @@ func CALDataStatusParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuff
 	{
 		_numItems := uint16(uint16(commandTypeContainer.NumBytes()) - uint16(uint16(2)))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := StatusByteParseWithBuffer(arrayCtx, readBuffer)
@@ -270,7 +269,7 @@ func (m *_CALDataStatus) SerializeWithWriteBuffer(ctx context.Context, writeBuff
 		}
 		for _curItem, _element := range m.GetStatusBytes() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetStatusBytes()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetStatusBytes()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/CALDataStatusExtended.go b/plc4go/protocols/cbus/readwrite/model/CALDataStatusExtended.go
index a627957ba4..69f85ea3c0 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALDataStatusExtended.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALDataStatusExtended.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -188,7 +187,7 @@ func (m *_CALDataStatusExtended) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.StatusBytes) > 0 {
 		for _curItem, element := range m.StatusBytes {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.StatusBytes), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.StatusBytes), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -198,7 +197,7 @@ func (m *_CALDataStatusExtended) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.LevelInformation) > 0 {
 		for _curItem, element := range m.LevelInformation {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.LevelInformation), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.LevelInformation), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -283,7 +282,7 @@ func CALDataStatusExtendedParseWithBuffer(ctx context.Context, readBuffer utils.
 	{
 		_numItems := uint16(numberOfStatusBytes)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := StatusByteParseWithBuffer(arrayCtx, readBuffer)
@@ -310,7 +309,7 @@ func CALDataStatusExtendedParseWithBuffer(ctx context.Context, readBuffer utils.
 	{
 		_numItems := uint16(numberOfLevelInformation)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := LevelInformationParseWithBuffer(arrayCtx, readBuffer)
@@ -404,7 +403,7 @@ func (m *_CALDataStatusExtended) SerializeWithWriteBuffer(ctx context.Context, w
 		}
 		for _curItem, _element := range m.GetStatusBytes() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetStatusBytes()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetStatusBytes()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
@@ -421,7 +420,7 @@ func (m *_CALDataStatusExtended) SerializeWithWriteBuffer(ctx context.Context, w
 		}
 		for _curItem, _element := range m.GetLevelInformation() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLevelInformation()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLevelInformation()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandLogicalAssignment.go b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandLogicalAssignment.go
index 039f65b293..814186d209 100644
--- a/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandLogicalAssignment.go
+++ b/plc4go/protocols/cbus/readwrite/model/IdentifyReplyCommandLogicalAssignment.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -117,7 +116,7 @@ func (m *_IdentifyReplyCommandLogicalAssignment) GetLengthInBits(ctx context.Con
 	// Array field
 	if len(m.LogicAssigment) > 0 {
 		for _curItem, element := range m.LogicAssigment {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.LogicAssigment), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.LogicAssigment), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -157,7 +156,7 @@ func IdentifyReplyCommandLogicalAssignmentParseWithBuffer(ctx context.Context, r
 	{
 		_numItems := uint16(numBytes)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := LogicAssignmentParseWithBuffer(arrayCtx, readBuffer)
@@ -208,7 +207,7 @@ func (m *_IdentifyReplyCommandLogicalAssignment) SerializeWithWriteBuffer(ctx co
 		}
 		for _curItem, _element := range m.GetLogicAssigment() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetLogicAssigment()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetLogicAssigment()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go b/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go
index 8d14d8040b..ef0233c271 100644
--- a/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go
+++ b/plc4go/protocols/cbus/readwrite/model/NetworkRoute.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -100,7 +99,7 @@ func (m *_NetworkRoute) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.AdditionalBridgeAddresses) > 0 {
 		for _curItem, element := range m.AdditionalBridgeAddresses {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.AdditionalBridgeAddresses), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.AdditionalBridgeAddresses), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -153,7 +152,7 @@ func NetworkRouteParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	{
 		_numItems := uint16(uint16(networkPCI.GetStackDepth()) - uint16(uint16(1)))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := BridgeAddressParseWithBuffer(arrayCtx, readBuffer)
@@ -211,7 +210,7 @@ func (m *_NetworkRoute) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 	}
 	for _curItem, _element := range m.GetAdditionalBridgeAddresses() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdditionalBridgeAddresses()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdditionalBridgeAddresses()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport1.go b/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport1.go
index d2cd14a917..f5c49b0c70 100644
--- a/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport1.go
+++ b/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport1.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -149,7 +148,7 @@ func (m *_SecurityDataStatusReport1) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.ZoneStatus) > 0 {
 		for _curItem, element := range m.ZoneStatus {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ZoneStatus), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.ZoneStatus), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -228,7 +227,7 @@ func SecurityDataStatusReport1ParseWithBuffer(ctx context.Context, readBuffer ut
 	{
 		_numItems := uint16(uint16(32))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := ZoneStatusParseWithBuffer(arrayCtx, readBuffer)
@@ -316,7 +315,7 @@ func (m *_SecurityDataStatusReport1) SerializeWithWriteBuffer(ctx context.Contex
 		}
 		for _curItem, _element := range m.GetZoneStatus() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetZoneStatus()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetZoneStatus()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport2.go b/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport2.go
index 0700277c34..9fad4db942 100644
--- a/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport2.go
+++ b/plc4go/protocols/cbus/readwrite/model/SecurityDataStatusReport2.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -116,7 +115,7 @@ func (m *_SecurityDataStatusReport2) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.ZoneStatus) > 0 {
 		for _curItem, element := range m.ZoneStatus {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ZoneStatus), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.ZoneStatus), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -156,7 +155,7 @@ func SecurityDataStatusReport2ParseWithBuffer(ctx context.Context, readBuffer ut
 	{
 		_numItems := uint16(uint16(48))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := ZoneStatusParseWithBuffer(arrayCtx, readBuffer)
@@ -205,7 +204,7 @@ func (m *_SecurityDataStatusReport2) SerializeWithWriteBuffer(ctx context.Contex
 		}
 		for _curItem, _element := range m.GetZoneStatus() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetZoneStatus()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetZoneStatus()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CIPAttributes.go b/plc4go/protocols/eip/readwrite/model/CIPAttributes.go
index 3e0c4a5808..5fd787b406 100644
--- a/plc4go/protocols/eip/readwrite/model/CIPAttributes.go
+++ b/plc4go/protocols/eip/readwrite/model/CIPAttributes.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -170,7 +169,7 @@ func CIPAttributesParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuff
 	{
 		_numItems := uint16(numberOfClasses)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint16("", 16)
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go
index 1a5daec16a..b20cd529fb 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerCloseRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -526,7 +525,7 @@ func (m *_CipConnectionManagerCloseRequest) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetConnectionPaths() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetConnectionPaths()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetConnectionPaths()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go
index 0c848d4fe5..51e21c2bac 100644
--- a/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go
+++ b/plc4go/protocols/eip/readwrite/model/CipConnectionManagerRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -758,7 +757,7 @@ func (m *_CipConnectionManagerRequest) SerializeWithWriteBuffer(ctx context.Cont
 		}
 		for _curItem, _element := range m.GetConnectionPaths() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetConnectionPaths()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetConnectionPaths()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/CipRRData.go b/plc4go/protocols/eip/readwrite/model/CipRRData.go
index 6050fa5f5e..c91459ef3a 100644
--- a/plc4go/protocols/eip/readwrite/model/CipRRData.go
+++ b/plc4go/protocols/eip/readwrite/model/CipRRData.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -155,7 +154,7 @@ func (m *_CipRRData) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.TypeIds) > 0 {
 		for _curItem, element := range m.TypeIds {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.TypeIds), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.TypeIds), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -216,7 +215,7 @@ func CipRRDataParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer,
 	{
 		_numItems := uint16(typeIdCount)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := TypeIdParseWithBuffer(arrayCtx, readBuffer)
@@ -288,7 +287,7 @@ func (m *_CipRRData) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		}
 		for _curItem, _element := range m.GetTypeIds() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTypeIds()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTypeIds()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/ListServicesResponse.go b/plc4go/protocols/eip/readwrite/model/ListServicesResponse.go
index 1a86082cd3..554ab7ddb6 100644
--- a/plc4go/protocols/eip/readwrite/model/ListServicesResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/ListServicesResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -133,7 +132,7 @@ func (m *_ListServicesResponse) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.TypeIds) > 0 {
 		for _curItem, element := range m.TypeIds {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.TypeIds), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.TypeIds), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -180,7 +179,7 @@ func ListServicesResponseParseWithBuffer(ctx context.Context, readBuffer utils.R
 	{
 		_numItems := uint16(typeIdCount)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := TypeIdParseWithBuffer(arrayCtx, readBuffer)
@@ -236,7 +235,7 @@ func (m *_ListServicesResponse) SerializeWithWriteBuffer(ctx context.Context, wr
 		}
 		for _curItem, _element := range m.GetTypeIds() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTypeIds()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTypeIds()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go b/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go
index 247a204462..1ffbc3a3e4 100644
--- a/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go
+++ b/plc4go/protocols/eip/readwrite/model/MultipleServiceResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -249,7 +248,7 @@ func MultipleServiceResponseParseWithBuffer(ctx context.Context, readBuffer util
 	{
 		_numItems := uint16(serviceNb)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint16("", 16)
diff --git a/plc4go/protocols/eip/readwrite/model/SendUnitData.go b/plc4go/protocols/eip/readwrite/model/SendUnitData.go
index 43dec165db..2e9940d528 100644
--- a/plc4go/protocols/eip/readwrite/model/SendUnitData.go
+++ b/plc4go/protocols/eip/readwrite/model/SendUnitData.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -163,7 +162,7 @@ func (m *_SendUnitData) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.TypeIds) > 0 {
 		for _curItem, element := range m.TypeIds {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.TypeIds), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.TypeIds), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -226,7 +225,7 @@ func SendUnitDataParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 	{
 		_numItems := uint16(typeIdCount)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := TypeIdParseWithBuffer(arrayCtx, readBuffer)
@@ -296,7 +295,7 @@ func (m *_SendUnitData) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		}
 		for _curItem, _element := range m.GetTypeIds() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetTypeIds()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetTypeIds()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/eip/readwrite/model/Services.go b/plc4go/protocols/eip/readwrite/model/Services.go
index 7f5163f761..792a2a32ed 100644
--- a/plc4go/protocols/eip/readwrite/model/Services.go
+++ b/plc4go/protocols/eip/readwrite/model/Services.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -108,7 +107,7 @@ func (m *_Services) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Services) > 0 {
 		for _curItem, element := range m.Services {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Services), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Services), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -155,7 +154,7 @@ func ServicesParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, s
 	{
 		_numItems := uint16(serviceNb)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint16("", 16)
@@ -182,7 +181,7 @@ func ServicesParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, s
 	{
 		_numItems := uint16(serviceNb)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := CipServiceParseWithBuffer(arrayCtx, readBuffer, bool(false), uint16(servicesLen)/uint16(serviceNb))
@@ -251,7 +250,7 @@ func (m *_Services) SerializeWithWriteBuffer(ctx context.Context, writeBuffer ut
 	}
 	for _curItem, _element := range m.GetServices() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetServices()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetServices()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataMessageAnalogIO.go b/plc4go/protocols/firmata/readwrite/model/FirmataMessageAnalogIO.go
index 41c0837ec7..2b36854ef3 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataMessageAnalogIO.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataMessageAnalogIO.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -171,7 +170,7 @@ func FirmataMessageAnalogIOParseWithBuffer(ctx context.Context, readBuffer utils
 	{
 		_numItems := uint16(uint16(2))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadInt8("", 8)
diff --git a/plc4go/protocols/firmata/readwrite/model/FirmataMessageDigitalIO.go b/plc4go/protocols/firmata/readwrite/model/FirmataMessageDigitalIO.go
index 113151cff0..ac338a2fba 100644
--- a/plc4go/protocols/firmata/readwrite/model/FirmataMessageDigitalIO.go
+++ b/plc4go/protocols/firmata/readwrite/model/FirmataMessageDigitalIO.go
@@ -23,7 +23,6 @@ import (
 	"context"
 	"encoding/binary"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -171,7 +170,7 @@ func FirmataMessageDigitalIOParseWithBuffer(ctx context.Context, readBuffer util
 	{
 		_numItems := uint16(uint16(2))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadInt8("", 8)
diff --git a/plc4go/protocols/firmata/readwrite/model/SysexCommandExtendedId.go b/plc4go/protocols/firmata/readwrite/model/SysexCommandExtendedId.go
index d68a4b79ba..0226446e1d 100644
--- a/plc4go/protocols/firmata/readwrite/model/SysexCommandExtendedId.go
+++ b/plc4go/protocols/firmata/readwrite/model/SysexCommandExtendedId.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -156,7 +155,7 @@ func SysexCommandExtendedIdParseWithBuffer(ctx context.Context, readBuffer utils
 	{
 		_numItems := uint16(uint16(2))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadInt8("", 8)
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType1.go b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
index 204a8eeccf..83e043ccc4 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -139,7 +138,7 @@ func (m *_ComObjectTableRealisationType1) GetLengthInBits(ctx context.Context) u
 	// Array field
 	if len(m.ComObjectDescriptors) > 0 {
 		for _curItem, element := range m.ComObjectDescriptors {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ComObjectDescriptors), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.ComObjectDescriptors), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -193,7 +192,7 @@ func ComObjectTableRealisationType1ParseWithBuffer(ctx context.Context, readBuff
 	{
 		_numItems := uint16(numEntries)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := GroupObjectDescriptorRealisationType1ParseWithBuffer(arrayCtx, readBuffer)
@@ -258,7 +257,7 @@ func (m *_ComObjectTableRealisationType1) SerializeWithWriteBuffer(ctx context.C
 		}
 		for _curItem, _element := range m.GetComObjectDescriptors() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetComObjectDescriptors()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetComObjectDescriptors()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType2.go b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
index 74c7d608cd..fe853c20cf 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -139,7 +138,7 @@ func (m *_ComObjectTableRealisationType2) GetLengthInBits(ctx context.Context) u
 	// Array field
 	if len(m.ComObjectDescriptors) > 0 {
 		for _curItem, element := range m.ComObjectDescriptors {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ComObjectDescriptors), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.ComObjectDescriptors), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -193,7 +192,7 @@ func ComObjectTableRealisationType2ParseWithBuffer(ctx context.Context, readBuff
 	{
 		_numItems := uint16(numEntries)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := GroupObjectDescriptorRealisationType2ParseWithBuffer(arrayCtx, readBuffer)
@@ -258,7 +257,7 @@ func (m *_ComObjectTableRealisationType2) SerializeWithWriteBuffer(ctx context.C
 		}
 		for _curItem, _element := range m.GetComObjectDescriptors() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetComObjectDescriptors()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetComObjectDescriptors()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/DIBSuppSvcFamilies.go b/plc4go/protocols/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
index a93f70ddf7..08cd44ef74 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -208,7 +207,7 @@ func (m *_DIBSuppSvcFamilies) SerializeWithWriteBuffer(ctx context.Context, writ
 	}
 	for _curItem, _element := range m.GetServiceIds() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetServiceIds()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetServiceIds()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
index 122bf32c11..7cf0753e65 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
@@ -665,8 +665,9 @@ const (
 	KnxManufacturer_M_BITS_AND_BYTES                                     KnxManufacturer = 622
 	KnxManufacturer_M_KFV_SIEGENIA_GRUPPE                                KnxManufacturer = 623
 	KnxManufacturer_M_SYMCON                                             KnxManufacturer = 624
-	KnxManufacturer_M_ABB___RESERVED                                     KnxManufacturer = 625
-	KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    KnxManufacturer = 626
+	KnxManufacturer_M_I_TRUST                                            KnxManufacturer = 625
+	KnxManufacturer_M_ABB___RESERVED                                     KnxManufacturer = 626
+	KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED                    KnxManufacturer = 627
 )
 
 var KnxManufacturerValues []KnxManufacturer
@@ -1299,6 +1300,7 @@ func init() {
 		KnxManufacturer_M_BITS_AND_BYTES,
 		KnxManufacturer_M_KFV_SIEGENIA_GRUPPE,
 		KnxManufacturer_M_SYMCON,
+		KnxManufacturer_M_I_TRUST,
 		KnxManufacturer_M_ABB___RESERVED,
 		KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED,
 	}
@@ -3648,10 +3650,14 @@ func (e KnxManufacturer) Number() uint16 {
 		}
 	case 625:
 		{ /* '625' */
-			return 43954
+			return 682
 		}
 	case 626:
 		{ /* '626' */
+			return 43954
+		}
+	case 627:
+		{ /* '627' */
 			return 43959
 		}
 	case 63:
@@ -6174,10 +6180,14 @@ func (e KnxManufacturer) Name() string {
 		}
 	case 625:
 		{ /* '625' */
-			return "ABB - reserved"
+			return "I.Trust"
 		}
 	case 626:
 		{ /* '626' */
+			return "ABB - reserved"
+		}
+	case 627:
+		{ /* '627' */
 			return "Busch-Jaeger Elektro - reserved"
 		}
 	case 63:
@@ -7528,8 +7538,10 @@ func KnxManufacturerByValue(value uint16) (enum KnxManufacturer, ok bool) {
 	case 624:
 		return KnxManufacturer_M_SYMCON, true
 	case 625:
-		return KnxManufacturer_M_ABB___RESERVED, true
+		return KnxManufacturer_M_I_TRUST, true
 	case 626:
+		return KnxManufacturer_M_ABB___RESERVED, true
+	case 627:
 		return KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED, true
 	case 63:
 		return KnxManufacturer_M_WHD_WILHELM_HUBER_Plus_SOEHNE, true
@@ -8787,6 +8799,8 @@ func KnxManufacturerByName(value string) (enum KnxManufacturer, ok bool) {
 		return KnxManufacturer_M_KFV_SIEGENIA_GRUPPE, true
 	case "M_SYMCON":
 		return KnxManufacturer_M_SYMCON, true
+	case "M_I_TRUST":
+		return KnxManufacturer_M_I_TRUST, true
 	case "M_ABB___RESERVED":
 		return KnxManufacturer_M_ABB___RESERVED, true
 	case "M_BUSCH_JAEGER_ELEKTRO___RESERVED":
@@ -10104,6 +10118,8 @@ func (e KnxManufacturer) PLC4XEnumName() string {
 		return "M_KFV_SIEGENIA_GRUPPE"
 	case KnxManufacturer_M_SYMCON:
 		return "M_SYMCON"
+	case KnxManufacturer_M_I_TRUST:
+		return "M_I_TRUST"
 	case KnxManufacturer_M_ABB___RESERVED:
 		return "M_ABB___RESERVED"
 	case KnxManufacturer_M_BUSCH_JAEGER_ELEKTRO___RESERVED:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LBusmonInd.go b/plc4go/protocols/knxnetip/readwrite/model/LBusmonInd.go
index 3de2573de2..0aa957c279 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LBusmonInd.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LBusmonInd.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -274,7 +273,7 @@ func (m *_LBusmonInd) SerializeWithWriteBuffer(ctx context.Context, writeBuffer
 		}
 		for _curItem, _element := range m.GetAdditionalInformation() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LDataCon.go b/plc4go/protocols/knxnetip/readwrite/model/LDataCon.go
index a602fad0d2..cb1e7cf9b7 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LDataCon.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LDataCon.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -250,7 +249,7 @@ func (m *_LDataCon) SerializeWithWriteBuffer(ctx context.Context, writeBuffer ut
 		}
 		for _curItem, _element := range m.GetAdditionalInformation() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LDataInd.go b/plc4go/protocols/knxnetip/readwrite/model/LDataInd.go
index f58414cfea..2a2aa172b6 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LDataInd.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LDataInd.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -250,7 +249,7 @@ func (m *_LDataInd) SerializeWithWriteBuffer(ctx context.Context, writeBuffer ut
 		}
 		for _curItem, _element := range m.GetAdditionalInformation() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/knxnetip/readwrite/model/LDataReq.go b/plc4go/protocols/knxnetip/readwrite/model/LDataReq.go
index eb6b924ea6..018d943796 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/LDataReq.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/LDataReq.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -250,7 +249,7 @@ func (m *_LDataReq) SerializeWithWriteBuffer(ctx context.Context, writeBuffer ut
 		}
 		for _curItem, _element := range m.GetAdditionalInformation() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAdditionalInformation()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
index 90280e091c..ad854290f6 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -202,7 +201,7 @@ func (m *_ModbusPDUReadDeviceIdentificationResponse) GetLengthInBits(ctx context
 	// Array field
 	if len(m.Objects) > 0 {
 		for _curItem, element := range m.Objects {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Objects), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Objects), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -311,7 +310,7 @@ func ModbusPDUReadDeviceIdentificationResponseParseWithBuffer(ctx context.Contex
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := ModbusDeviceInformationObjectParseWithBuffer(arrayCtx, readBuffer)
@@ -428,7 +427,7 @@ func (m *_ModbusPDUReadDeviceIdentificationResponse) SerializeWithWriteBuffer(ct
 		}
 		for _curItem, _element := range m.GetObjects() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetObjects()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetObjects()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go
index bdfcc3e325..e3563e53a7 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -180,7 +179,7 @@ func ModbusPDUReadFifoQueueResponseParseWithBuffer(ctx context.Context, readBuff
 	{
 		_numItems := uint16(fifoCount)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint16("", 16)
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go
index cbb2a0bdfd..b98c695cf7 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -229,7 +228,7 @@ func (m *_ModbusPDUReadFileRecordRequest) SerializeWithWriteBuffer(ctx context.C
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go
index cfd9e0da3a..b5419d7778 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -229,7 +228,7 @@ func (m *_ModbusPDUReadFileRecordResponse) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go
index 517eb26ff3..3f8ecd96f9 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -229,7 +228,7 @@ func (m *_ModbusPDUWriteFileRecordRequest) SerializeWithWriteBuffer(ctx context.
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go b/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go
index 9165bae31e..dbdb4a206a 100644
--- a/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go
+++ b/plc4go/protocols/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -229,7 +228,7 @@ func (m *_ModbusPDUWriteFileRecordResponse) SerializeWithWriteBuffer(ctx context
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessageAckPushType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessageAckPushType.go
index 608df8a089..d536079cc9 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessageAckPushType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessageAckPushType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -120,7 +119,7 @@ func (m *_AlarmMessageAckPushType) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.MessageObjects) > 0 {
 		for _curItem, element := range m.MessageObjects {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -187,7 +186,7 @@ func AlarmMessageAckPushTypeParseWithBuffer(ctx context.Context, readBuffer util
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AlarmMessageAckObjectPushTypeParseWithBuffer(arrayCtx, readBuffer)
@@ -261,7 +260,7 @@ func (m *_AlarmMessageAckPushType) SerializeWithWriteBuffer(ctx context.Context,
 	}
 	for _curItem, _element := range m.GetMessageObjects() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessageAckResponseType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessageAckResponseType.go
index 017129f388..11b95a5109 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessageAckResponseType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessageAckResponseType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -159,7 +158,7 @@ func AlarmMessageAckResponseTypeParseWithBuffer(ctx context.Context, readBuffer
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessageAckType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessageAckType.go
index 6fe6d3f3bf..6c38669e29 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessageAckType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessageAckType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -110,7 +109,7 @@ func (m *_AlarmMessageAckType) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.MessageObjects) > 0 {
 		for _curItem, element := range m.MessageObjects {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -164,7 +163,7 @@ func AlarmMessageAckTypeParseWithBuffer(ctx context.Context, readBuffer utils.Re
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AlarmMessageObjectAckTypeParseWithBuffer(arrayCtx, readBuffer)
@@ -225,7 +224,7 @@ func (m *_AlarmMessageAckType) SerializeWithWriteBuffer(ctx context.Context, wri
 	}
 	for _curItem, _element := range m.GetMessageObjects() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectPushType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectPushType.go
index 1d4cc6c9fd..24ab61491c 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectPushType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessageObjectPushType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -189,7 +188,7 @@ func (m *_AlarmMessageObjectPushType) GetLengthInBits(ctx context.Context) uint1
 	// Array field
 	if len(m.AssociatedValues) > 0 {
 		for _curItem, element := range m.AssociatedValues {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.AssociatedValues), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.AssociatedValues), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -324,7 +323,7 @@ func AlarmMessageObjectPushTypeParseWithBuffer(ctx context.Context, readBuffer u
 	{
 		_numItems := uint16(numberOfValues)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AssociatedValueTypeParseWithBuffer(arrayCtx, readBuffer)
@@ -464,7 +463,7 @@ func (m *_AlarmMessageObjectPushType) SerializeWithWriteBuffer(ctx context.Conte
 	}
 	for _curItem, _element := range m.GetAssociatedValues() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAssociatedValues()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetAssociatedValues()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessagePushType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessagePushType.go
index e3bc4e2ff0..fd755aea94 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessagePushType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessagePushType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -120,7 +119,7 @@ func (m *_AlarmMessagePushType) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.MessageObjects) > 0 {
 		for _curItem, element := range m.MessageObjects {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -187,7 +186,7 @@ func AlarmMessagePushTypeParseWithBuffer(ctx context.Context, readBuffer utils.R
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AlarmMessageObjectPushTypeParseWithBuffer(arrayCtx, readBuffer)
@@ -261,7 +260,7 @@ func (m *_AlarmMessagePushType) SerializeWithWriteBuffer(ctx context.Context, wr
 	}
 	for _curItem, _element := range m.GetMessageObjects() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/AlarmMessageQueryType.go b/plc4go/protocols/s7/readwrite/model/AlarmMessageQueryType.go
index 41dc60252f..4219ad26e9 100644
--- a/plc4go/protocols/s7/readwrite/model/AlarmMessageQueryType.go
+++ b/plc4go/protocols/s7/readwrite/model/AlarmMessageQueryType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -149,7 +148,7 @@ func (m *_AlarmMessageQueryType) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.MessageObjects) > 0 {
 		for _curItem, element := range m.MessageObjects {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -238,7 +237,7 @@ func AlarmMessageQueryTypeParseWithBuffer(ctx context.Context, readBuffer utils.
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AlarmMessageObjectQueryTypeParseWithBuffer(arrayCtx, readBuffer)
@@ -331,7 +330,7 @@ func (m *_AlarmMessageQueryType) SerializeWithWriteBuffer(ctx context.Context, w
 	}
 	for _curItem, _element := range m.GetMessageObjects() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/AssociatedValueType.go b/plc4go/protocols/s7/readwrite/model/AssociatedValueType.go
index 0c103176e4..fb94c2fccd 100644
--- a/plc4go/protocols/s7/readwrite/model/AssociatedValueType.go
+++ b/plc4go/protocols/s7/readwrite/model/AssociatedValueType.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -191,7 +190,7 @@ func AssociatedValueTypeParseWithBuffer(ctx context.Context, readBuffer utils.Re
 	{
 		_numItems := uint16(EventItemLength(readBuffer, valueLength))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/s7/readwrite/model/COTPPacket.go b/plc4go/protocols/s7/readwrite/model/COTPPacket.go
index f523e24e53..caa340ddcf 100644
--- a/plc4go/protocols/s7/readwrite/model/COTPPacket.go
+++ b/plc4go/protocols/s7/readwrite/model/COTPPacket.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"io"
@@ -291,7 +290,7 @@ func (pm *_COTPPacket) SerializeParent(ctx context.Context, writeBuffer utils.Wr
 	}
 	for _curItem, _element := range m.GetParameters() {
 		_ = _curItem
-		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetParameters()), _curItem)
+		arrayCtx := utils.CreateArrayContext(ctx, len(m.GetParameters()), _curItem)
 		_ = arrayCtx
 		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7ParameterReadVarRequest.go b/plc4go/protocols/s7/readwrite/model/S7ParameterReadVarRequest.go
index 5d17ed2a03..2b84d18949 100644
--- a/plc4go/protocols/s7/readwrite/model/S7ParameterReadVarRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7ParameterReadVarRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -124,7 +123,7 @@ func (m *_S7ParameterReadVarRequest) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -171,7 +170,7 @@ func S7ParameterReadVarRequestParseWithBuffer(ctx context.Context, readBuffer ut
 	{
 		_numItems := uint16(numItems)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7VarRequestParameterItemParseWithBuffer(arrayCtx, readBuffer)
@@ -227,7 +226,7 @@ func (m *_S7ParameterReadVarRequest) SerializeWithWriteBuffer(ctx context.Contex
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7ParameterUserData.go b/plc4go/protocols/s7/readwrite/model/S7ParameterUserData.go
index b609db943b..58f5e9a34e 100644
--- a/plc4go/protocols/s7/readwrite/model/S7ParameterUserData.go
+++ b/plc4go/protocols/s7/readwrite/model/S7ParameterUserData.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -124,7 +123,7 @@ func (m *_S7ParameterUserData) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -171,7 +170,7 @@ func S7ParameterUserDataParseWithBuffer(ctx context.Context, readBuffer utils.Re
 	{
 		_numItems := uint16(numItems)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7ParameterUserDataItemParseWithBuffer(arrayCtx, readBuffer)
@@ -227,7 +226,7 @@ func (m *_S7ParameterUserData) SerializeWithWriteBuffer(ctx context.Context, wri
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7ParameterWriteVarRequest.go b/plc4go/protocols/s7/readwrite/model/S7ParameterWriteVarRequest.go
index 506edc4018..f8e8e85bd0 100644
--- a/plc4go/protocols/s7/readwrite/model/S7ParameterWriteVarRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7ParameterWriteVarRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -124,7 +123,7 @@ func (m *_S7ParameterWriteVarRequest) GetLengthInBits(ctx context.Context) uint1
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -171,7 +170,7 @@ func S7ParameterWriteVarRequestParseWithBuffer(ctx context.Context, readBuffer u
 	{
 		_numItems := uint16(numItems)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7VarRequestParameterItemParseWithBuffer(arrayCtx, readBuffer)
@@ -227,7 +226,7 @@ func (m *_S7ParameterWriteVarRequest) SerializeWithWriteBuffer(ctx context.Conte
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadReadVarResponse.go b/plc4go/protocols/s7/readwrite/model/S7PayloadReadVarResponse.go
index b7575399c5..bd450b7e4e 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadReadVarResponse.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadReadVarResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -121,7 +120,7 @@ func (m *_S7PayloadReadVarResponse) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -161,7 +160,7 @@ func S7PayloadReadVarResponseParseWithBuffer(ctx context.Context, readBuffer uti
 	{
 		_numItems := uint16(CastS7ParameterReadVarResponse(parameter).GetNumItems())
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7VarPayloadDataItemParseWithBuffer(arrayCtx, readBuffer)
@@ -212,7 +211,7 @@ func (m *_S7PayloadReadVarResponse) SerializeWithWriteBuffer(ctx context.Context
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserData.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserData.go
index 73b93ff98f..54be5d9603 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserData.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserData.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -121,7 +120,7 @@ func (m *_S7PayloadUserData) GetLengthInBits(ctx context.Context) uint16 {
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -161,7 +160,7 @@ func S7PayloadUserDataParseWithBuffer(ctx context.Context, readBuffer utils.Read
 	{
 		_numItems := uint16(uint16(len(CastS7ParameterUserData(parameter).GetItems())))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7PayloadUserDataItemParseWithBuffer(arrayCtx, readBuffer, CastS7ParameterUserDataItemCPUFunctions(CastS7ParameterUserData(parameter).GetItems()[0]).GetCpuFunctionType(), CastS7ParameterUserDataItemCPUFunctions(CastS7ParameterUserData(parameter).GetItems()[0]).GetCpuSubfunction())
@@ -212,7 +211,7 @@ func (m *_S7PayloadUserData) SerializeWithWriteBuffer(ctx context.Context, write
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAck.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAck.go
index dc298e1f87..6f09cdd318 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAck.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAck.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -142,7 +141,7 @@ func (m *_S7PayloadUserDataItemCpuFunctionAlarmAck) GetLengthInBits(ctx context.
 	// Array field
 	if len(m.MessageObjects) > 0 {
 		for _curItem, element := range m.MessageObjects {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.MessageObjects), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -196,7 +195,7 @@ func S7PayloadUserDataItemCpuFunctionAlarmAckParseWithBuffer(ctx context.Context
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := AlarmMessageObjectAckTypeParseWithBuffer(arrayCtx, readBuffer)
@@ -260,7 +259,7 @@ func (m *_S7PayloadUserDataItemCpuFunctionAlarmAck) SerializeWithWriteBuffer(ctx
 		}
 		for _curItem, _element := range m.GetMessageObjects() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetMessageObjects()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAckResponse.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAckResponse.go
index 9efbf8eb68..5ca36ab9c3 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAckResponse.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionAlarmAckResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -191,7 +190,7 @@ func S7PayloadUserDataItemCpuFunctionAlarmAckResponseParseWithBuffer(ctx context
 	{
 		_numItems := uint16(numberOfObjects)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
index ec49a5eace..bf318565b8 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -172,7 +171,7 @@ func (m *_S7PayloadUserDataItemCpuFunctionReadSzlResponse) GetLengthInBits(ctx c
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -248,7 +247,7 @@ func S7PayloadUserDataItemCpuFunctionReadSzlResponseParseWithBuffer(ctx context.
 	{
 		_numItems := uint16(szlItemCount)
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := SzlDataTreeItemParseWithBuffer(arrayCtx, readBuffer)
@@ -331,7 +330,7 @@ func (m *_S7PayloadUserDataItemCpuFunctionReadSzlResponse) SerializeWithWriteBuf
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarRequest.go b/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarRequest.go
index d50801f649..fc8a11f732 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarRequest.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarRequest.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -121,7 +120,7 @@ func (m *_S7PayloadWriteVarRequest) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -161,7 +160,7 @@ func S7PayloadWriteVarRequestParseWithBuffer(ctx context.Context, readBuffer uti
 	{
 		_numItems := uint16(uint16(len(CastS7ParameterWriteVarRequest(parameter).GetItems())))
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7VarPayloadDataItemParseWithBuffer(arrayCtx, readBuffer)
@@ -212,7 +211,7 @@ func (m *_S7PayloadWriteVarRequest) SerializeWithWriteBuffer(ctx context.Context
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarResponse.go b/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarResponse.go
index 1ddd4549ba..f50167d3a2 100644
--- a/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarResponse.go
+++ b/plc4go/protocols/s7/readwrite/model/S7PayloadWriteVarResponse.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -121,7 +120,7 @@ func (m *_S7PayloadWriteVarResponse) GetLengthInBits(ctx context.Context) uint16
 	// Array field
 	if len(m.Items) > 0 {
 		for _curItem, element := range m.Items {
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.Items), _curItem)
 			_ = arrayCtx
 			_ = _curItem
 			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
@@ -161,7 +160,7 @@ func S7PayloadWriteVarResponseParseWithBuffer(ctx context.Context, readBuffer ut
 	{
 		_numItems := uint16(CastS7ParameterWriteVarResponse(parameter).GetNumItems())
 		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
-			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			arrayCtx := utils.CreateArrayContext(ctx, int(_numItems), int(_curItem))
 			_ = arrayCtx
 			_ = _curItem
 			_item, _err := S7VarPayloadStatusItemParseWithBuffer(arrayCtx, readBuffer)
@@ -212,7 +211,7 @@ func (m *_S7PayloadWriteVarResponse) SerializeWithWriteBuffer(ctx context.Contex
 		}
 		for _curItem, _element := range m.GetItems() {
 			_ = _curItem
-			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			arrayCtx := utils.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
 			_ = arrayCtx
 			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
diff --git a/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go b/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go
index 487de18fee..2186d9ee7a 100644
--- a/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go
+++ b/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go
@@ -22,7 +22,6 @@ package model
 import (
 	"context"
 	"fmt"
-	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"math"
@@ -117,7 +116,7 @@ func (m *_S7VarPayloadDataItem) GetLengthInBits(ctx context.Context) uint16 {
 	}
 
 	// Padding Field (padding)
-	_timesPadding := uint8(utils.InlineIf((!(spiContext.GetLastItemFromContext(ctx))), func() interface{} { return int32((int32(int32(len(m.GetData()))) % int32(int32(2)))) }, func() interface{} { return int32(int32(0)) }).(int32))
+	_timesPadding := uint8(utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() interface{} { return int32((int32(int32(len(m.GetData()))) % int32(int32(2)))) }, func() interface{} { return int32(int32(0)) }).(int32))
 	for ; _timesPadding > 0; _timesPadding-- {
 		lengthInBits += 8
 	}
@@ -186,7 +185,7 @@ func S7VarPayloadDataItemParseWithBuffer(ctx context.Context, readBuffer utils.R
 		if pullErr := readBuffer.PullContext("padding", utils.WithRenderAsList(true)); pullErr != nil {
 			return nil, errors.Wrap(pullErr, "Error pulling for padding")
 		}
-		_timesPadding := (utils.InlineIf((!(spiContext.GetLastItemFromContext(ctx))), func() interface{} { return int32((int32(int32(len(data))) % int32(int32(2)))) }, func() interface{} { return int32(int32(0)) }).(int32))
+		_timesPadding := (utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() interface{} { return int32((int32(int32(len(data))) % int32(int32(2)))) }, func() interface{} { return int32(int32(0)) }).(int32))
 		for ; (readBuffer.HasMore(8)) && (_timesPadding > 0); _timesPadding-- {
 			// Just read the padding data and ignore it
 			_, _err := readBuffer.ReadUint8("", 8)
@@ -270,7 +269,7 @@ func (m *_S7VarPayloadDataItem) SerializeWithWriteBuffer(ctx context.Context, wr
 		if pushErr := writeBuffer.PushContext("padding", utils.WithRenderAsList(true)); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for padding")
 		}
-		_timesPadding := uint8(utils.InlineIf((!(spiContext.GetLastItemFromContext(ctx))), func() interface{} { return int32((int32(int32(len(m.GetData()))) % int32(int32(2)))) }, func() interface{} { return int32(int32(0)) }).(int32))
+		_timesPadding := uint8(utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() interface{} { return int32((int32(int32(len(m.GetData()))) % int32(int32(2)))) }, func() interface{} { return int32(int32(0)) }).(int32))
 		for ; _timesPadding > 0; _timesPadding-- {
 			_paddingValue := uint8(0x00)
 			_paddingErr := writeBuffer.WriteUint8("", 8, (_paddingValue))
diff --git a/plc4go/spi/context/ArrayContext.go b/plc4go/spi/utils/ArrayContext.go
similarity index 99%
rename from plc4go/spi/context/ArrayContext.go
rename to plc4go/spi/utils/ArrayContext.go
index 3d0cc27dfa..a45e4df648 100644
--- a/plc4go/spi/context/ArrayContext.go
+++ b/plc4go/spi/utils/ArrayContext.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package context
+package utils
 
 import (
 	"context"