You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/02/02 19:22:40 UTC

[plc4x] branch featrue/cdutz/arrays-with-special-variables updated (138c6195a4 -> 6d7da29031)

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

cdutz pushed a change to branch featrue/cdutz/arrays-with-special-variables
in repository https://gitbox.apache.org/repos/asf/plc4x.git


    from 138c6195a4 refactor(code-gen): Changed the code-gen to support a "_lastItem" variable inside array elements
     new afa10bbec6 chore(plc4j/examples/ads): Continued on extracting the state of EtherCAT Slave devices.
     new 6d7da29031 chore(plc4go): Updated the code-gen to use Contexts to pass along the array position information

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../language/go/GoLanguageTemplateHelper.java      |   34 +-
 .../templates/go/complex-type-template.go.ftlh     |  145 ++-
 .../templates/go/data-io-template.go.ftlh          |   11 +-
 .../resources/templates/go/enum-template.go.ftlh   |   17 +-
 .../templates/go/parser-factory-template.go.ftlh   |    4 +-
 .../go/xml-parser-factory-template.go.ftlh         |   10 +-
 .../testing/protocols/s7/DriverTestsuite.xml       |    3 +-
 .../protocols/s7/ParserSerializerTestsuite.xml     |   14 +-
 plc4go/internal/ads/Connection.go                  |    4 +-
 plc4go/internal/ads/MessageCodec.go                |    5 +-
 plc4go/internal/ads/Reader.go                      |    2 +-
 plc4go/internal/ads/Writer.go                      |    2 +-
 plc4go/internal/bacnetip/ApplicationLayer.go       |   29 +-
 plc4go/internal/bacnetip/Discoverer.go             |   11 +-
 plc4go/internal/bacnetip/MessageCodec.go           |    7 +-
 plc4go/internal/bacnetip/Reader.go                 |    2 +-
 .../internal/bacnetip/UDPCommunicationsModule.go   |    5 +-
 plc4go/internal/cbus/MessageCodec.go               |    3 +-
 plc4go/internal/cbus/Query.go                      |   12 +-
 plc4go/internal/cbus/Reader.go                     |    2 +-
 plc4go/internal/cbus/Subscriber.go                 |    2 +-
 plc4go/internal/cbus/Tag.go                        |   73 +-
 plc4go/internal/eip/MessageCodec.go                |    4 +-
 plc4go/internal/eip/Reader.go                      |    4 +-
 plc4go/internal/eip/Writer.go                      |    4 +-
 .../knxnetip/ConnectionDriverSpecificOperations.go |    8 +-
 plc4go/internal/knxnetip/Reader.go                 |    6 +-
 plc4go/internal/knxnetip/Subscriber.go             |    4 +-
 plc4go/internal/knxnetip/ValueDecoder.go           |    4 +-
 plc4go/internal/modbus/Reader.go                   |    2 +-
 plc4go/internal/s7/Reader.go                       |    2 +-
 plc4go/internal/s7/s7Io_test.go                    |   70 +-
 plc4go/internal/simulated/Device.go                |    3 +-
 plc4go/protocols/abeth/readwrite/ParserHelper.go   |   10 +-
 .../protocols/abeth/readwrite/XmlParserHelper.go   |   14 +-
 .../model/CIPEncapsulationConnectionRequest.go     |   27 +-
 .../model/CIPEncapsulationConnectionResponse.go    |   27 +-
 .../readwrite/model/CIPEncapsulationPacket.go      |   42 +-
 .../readwrite/model/CIPEncapsulationReadRequest.go |   33 +-
 .../model/CIPEncapsulationReadResponse.go          |   33 +-
 .../readwrite/model/DF1CommandRequestMessage.go    |   33 +-
 ...mandResponseMessageProtectedTypedLogicalRead.go |   30 +-
 .../abeth/readwrite/model/DF1RequestCommand.go     |   22 +-
 .../abeth/readwrite/model/DF1RequestMessage.go     |   22 +-
 .../model/DF1RequestProtectedTypedLogicalRead.go   |   27 +-
 .../abeth/readwrite/model/DF1ResponseMessage.go    |   22 +-
 .../ads/discovery/readwrite/ParserHelper.go        |   12 +-
 .../ads/discovery/readwrite/XmlParserHelper.go     |   16 +-
 .../ads/discovery/readwrite/model/AdsDiscovery.go  |   63 +-
 .../discovery/readwrite/model/AdsDiscoveryBlock.go |   42 +-
 .../readwrite/model/AdsDiscoveryBlockAmsNetId.go   |   33 +-
 .../model/AdsDiscoveryBlockFingerprint.go          |   27 +-
 .../readwrite/model/AdsDiscoveryBlockHostName.go   |   33 +-
 .../readwrite/model/AdsDiscoveryBlockOsData.go     |   27 +-
 .../readwrite/model/AdsDiscoveryBlockPassword.go   |   33 +-
 .../readwrite/model/AdsDiscoveryBlockRouteName.go  |   33 +-
 .../readwrite/model/AdsDiscoveryBlockStatus.go     |   31 +-
 .../readwrite/model/AdsDiscoveryBlockType.go       |   17 +-
 .../readwrite/model/AdsDiscoveryBlockUserName.go   |   33 +-
 .../readwrite/model/AdsDiscoveryBlockVersion.go    |   27 +-
 .../readwrite/model/AdsDiscoveryConstants.go       |   23 +-
 .../discovery/readwrite/model/AdsPortNumbers.go    |   17 +-
 .../ads/discovery/readwrite/model/AmsNetId.go      |   23 +-
 .../ads/discovery/readwrite/model/AmsString.go     |   23 +-
 .../ads/discovery/readwrite/model/Operation.go     |   17 +-
 .../ads/discovery/readwrite/model/Status.go        |   17 +-
 plc4go/protocols/ads/readwrite/ParserHelper.go     |   34 +-
 plc4go/protocols/ads/readwrite/XmlParserHelper.go  |   38 +-
 .../model/AdsAddDeviceNotificationRequest.go       |   31 +-
 .../model/AdsAddDeviceNotificationResponse.go      |   31 +-
 .../protocols/ads/readwrite/model/AdsConstants.go  |   23 +-
 .../protocols/ads/readwrite/model/AdsDataType.go   |   17 +-
 .../ads/readwrite/model/AdsDataTypeArrayInfo.go    |   27 +-
 .../readwrite/model/AdsDataTypeTableChildEntry.go  |   74 +-
 .../ads/readwrite/model/AdsDataTypeTableEntry.go   |   74 +-
 .../model/AdsDeleteDeviceNotificationRequest.go    |   27 +-
 .../model/AdsDeleteDeviceNotificationResponse.go   |   31 +-
 .../model/AdsDeviceNotificationRequest.go          |   53 +-
 .../model/AdsDeviceNotificationResponse.go         |   27 +-
 .../ads/readwrite/model/AdsInvalidRequest.go       |   27 +-
 .../ads/readwrite/model/AdsInvalidResponse.go      |   27 +-
 .../ads/readwrite/model/AdsMultiRequestItem.go     |   26 +-
 .../ads/readwrite/model/AdsMultiRequestItemRead.go |   27 +-
 .../model/AdsMultiRequestItemReadWrite.go          |   27 +-
 .../readwrite/model/AdsMultiRequestItemWrite.go    |   27 +-
 .../ads/readwrite/model/AdsNotificationSample.go   |   23 +-
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |   27 +-
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |   31 +-
 .../ads/readwrite/model/AdsReadRequest.go          |   27 +-
 .../ads/readwrite/model/AdsReadResponse.go         |   31 +-
 .../ads/readwrite/model/AdsReadStateRequest.go     |   27 +-
 .../ads/readwrite/model/AdsReadStateResponse.go    |   31 +-
 .../ads/readwrite/model/AdsReadWriteRequest.go     |   53 +-
 .../ads/readwrite/model/AdsReadWriteResponse.go    |   31 +-
 .../ads/readwrite/model/AdsStampHeader.go          |   49 +-
 .../ads/readwrite/model/AdsSymbolTableEntry.go     |   23 +-
 .../protocols/ads/readwrite/model/AdsTableSizes.go |   23 +-
 .../protocols/ads/readwrite/model/AdsTransMode.go  |   17 +-
 .../ads/readwrite/model/AdsWriteControlRequest.go  |   27 +-
 .../ads/readwrite/model/AdsWriteControlResponse.go |   31 +-
 .../ads/readwrite/model/AdsWriteRequest.go         |   27 +-
 .../ads/readwrite/model/AdsWriteResponse.go        |   31 +-
 plc4go/protocols/ads/readwrite/model/AmsNetId.go   |   23 +-
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |   80 +-
 .../readwrite/model/AmsSerialAcknowledgeFrame.go   |   23 +-
 .../ads/readwrite/model/AmsSerialFrame.go          |   29 +-
 .../ads/readwrite/model/AmsSerialResetFrame.go     |   23 +-
 .../protocols/ads/readwrite/model/AmsTCPPacket.go  |   31 +-
 plc4go/protocols/ads/readwrite/model/CommandId.go  |   17 +-
 plc4go/protocols/ads/readwrite/model/DataItem.go   |   11 +-
 .../ads/readwrite/model/DefaultAmsPorts.go         |   17 +-
 .../protocols/ads/readwrite/model/ErrorResponse.go |   27 +-
 .../protocols/ads/readwrite/model/PlcValueType.go  |   17 +-
 .../ads/readwrite/model/ReservedIndexGroups.go     |   17 +-
 plc4go/protocols/ads/readwrite/model/ReturnCode.go |   17 +-
 .../protocols/bacnetip/readwrite/ParserHelper.go   |  580 ++++-----
 .../bacnetip/readwrite/XmlParserHelper.go          |  584 ++++-----
 plc4go/protocols/bacnetip/readwrite/model/APDU.go  |   42 +-
 .../bacnetip/readwrite/model/APDUAbort.go          |   33 +-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |   45 +-
 .../readwrite/model/APDUConfirmedRequest.go        |   53 +-
 .../bacnetip/readwrite/model/APDUError.go          |   37 +-
 .../bacnetip/readwrite/model/APDUReject.go         |   33 +-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |   27 +-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |   31 +-
 .../readwrite/model/APDUUnconfirmedRequest.go      |   33 +-
 .../bacnetip/readwrite/model/APDUUnknown.go        |   27 +-
 .../protocols/bacnetip/readwrite/model/ApduType.go |   17 +-
 .../bacnetip/readwrite/model/BACnetAbortReason.go  |   17 +-
 .../readwrite/model/BACnetAbortReasonTagged.go     |   27 +-
 .../BACnetAccessAuthenticationFactorDisable.go     |   17 +-
 ...ACnetAccessAuthenticationFactorDisableTagged.go |   33 +-
 .../model/BACnetAccessCredentialDisable.go         |   17 +-
 .../model/BACnetAccessCredentialDisableReason.go   |   17 +-
 .../BACnetAccessCredentialDisableReasonTagged.go   |   33 +-
 .../model/BACnetAccessCredentialDisableTagged.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetAccessEvent.go  |   17 +-
 .../readwrite/model/BACnetAccessEventTagged.go     |   33 +-
 .../readwrite/model/BACnetAccessPassbackMode.go    |   17 +-
 .../model/BACnetAccessPassbackModeTagged.go        |   29 +-
 .../bacnetip/readwrite/model/BACnetAccessRule.go   |   53 +-
 .../model/BACnetAccessRuleLocationSpecifier.go     |   17 +-
 .../BACnetAccessRuleLocationSpecifierTagged.go     |   29 +-
 .../model/BACnetAccessRuleTimeRangeSpecifier.go    |   17 +-
 .../BACnetAccessRuleTimeRangeSpecifierTagged.go    |   29 +-
 .../readwrite/model/BACnetAccessThreatLevel.go     |   29 +-
 .../readwrite/model/BACnetAccessUserType.go        |   17 +-
 .../readwrite/model/BACnetAccessUserTypeTagged.go  |   33 +-
 .../model/BACnetAccessZoneOccupancyState.go        |   17 +-
 .../model/BACnetAccessZoneOccupancyStateTagged.go  |   33 +-
 .../readwrite/model/BACnetAccumulatorRecord.go     |   47 +-
 .../BACnetAccumulatorRecordAccumulatorStatus.go    |   17 +-
 ...CnetAccumulatorRecordAccumulatorStatusTagged.go |   29 +-
 .../bacnetip/readwrite/model/BACnetAction.go       |   17 +-
 .../readwrite/model/BACnetActionCommand.go         |   77 +-
 .../bacnetip/readwrite/model/BACnetActionList.go   |   47 +-
 .../bacnetip/readwrite/model/BACnetActionTagged.go |   29 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |   47 +-
 .../readwrite/model/BACnetAddressBinding.go        |   35 +-
 .../readwrite/model/BACnetAddressEnclosed.go       |   41 +-
 .../readwrite/model/BACnetApplicationTag.go        |   60 +-
 .../model/BACnetApplicationTagBitString.go         |   33 +-
 .../readwrite/model/BACnetApplicationTagBoolean.go |   37 +-
 .../model/BACnetApplicationTagCharacterString.go   |   37 +-
 .../readwrite/model/BACnetApplicationTagDate.go    |   33 +-
 .../readwrite/model/BACnetApplicationTagDouble.go  |   37 +-
 .../model/BACnetApplicationTagEnumerated.go        |   37 +-
 .../readwrite/model/BACnetApplicationTagNull.go    |   27 +-
 .../model/BACnetApplicationTagObjectIdentifier.go  |   41 +-
 .../model/BACnetApplicationTagOctetString.go       |   33 +-
 .../readwrite/model/BACnetApplicationTagReal.go    |   37 +-
 .../model/BACnetApplicationTagSignedInteger.go     |   37 +-
 .../readwrite/model/BACnetApplicationTagTime.go    |   33 +-
 .../model/BACnetApplicationTagUnsignedInteger.go   |   37 +-
 .../readwrite/model/BACnetAssignedAccessRights.go  |   35 +-
 .../readwrite/model/BACnetAssignedLandingCalls.go  |   29 +-
 .../BACnetAssignedLandingCallsLandingCallsList.go  |   47 +-
 ...netAssignedLandingCallsLandingCallsListEntry.go |   35 +-
 .../readwrite/model/BACnetAuthenticationFactor.go  |   41 +-
 .../model/BACnetAuthenticationFactorEnclosed.go    |   41 +-
 .../model/BACnetAuthenticationFactorFormat.go      |   41 +-
 .../model/BACnetAuthenticationFactorType.go        |   17 +-
 .../model/BACnetAuthenticationFactorTypeTagged.go  |   29 +-
 .../readwrite/model/BACnetAuthenticationPolicy.go  |   41 +-
 .../model/BACnetAuthenticationPolicyList.go        |   47 +-
 .../model/BACnetAuthenticationPolicyListEntry.go   |   35 +-
 .../readwrite/model/BACnetAuthenticationStatus.go  |   17 +-
 .../model/BACnetAuthenticationStatusTagged.go      |   29 +-
 .../model/BACnetAuthorizationExemption.go          |   17 +-
 .../model/BACnetAuthorizationExemptionTagged.go    |   33 +-
 .../readwrite/model/BACnetAuthorizationMode.go     |   17 +-
 .../model/BACnetAuthorizationModeTagged.go         |   33 +-
 .../bacnetip/readwrite/model/BACnetBDTEntry.go     |   35 +-
 .../bacnetip/readwrite/model/BACnetBackupState.go  |   17 +-
 .../readwrite/model/BACnetBackupStateTagged.go     |   29 +-
 .../readwrite/model/BACnetBinaryLightingPV.go      |   17 +-
 .../model/BACnetBinaryLightingPVTagged.go          |   33 +-
 .../bacnetip/readwrite/model/BACnetBinaryPV.go     |   17 +-
 .../readwrite/model/BACnetBinaryPVTagged.go        |   29 +-
 .../model/BACnetCOVMultipleSubscription.go         |   53 +-
 ...bscriptionListOfCovSubscriptionSpecification.go |   47 +-
 ...ptionListOfCovSubscriptionSpecificationEntry.go |   35 +-
 ...riptionSpecificationEntryListOfCovReferences.go |   47 +-
 ...onSpecificationEntryListOfCovReferencesEntry.go |   41 +-
 .../readwrite/model/BACnetCOVSubscription.go       |   53 +-
 .../readwrite/model/BACnetCalendarEntry.go         |   32 +-
 .../readwrite/model/BACnetCalendarEntryDate.go     |   33 +-
 .../model/BACnetCalendarEntryDateRange.go          |   33 +-
 .../readwrite/model/BACnetCalendarEntryEnclosed.go |   41 +-
 .../readwrite/model/BACnetCalendarEntryWeekNDay.go |   33 +-
 .../bacnetip/readwrite/model/BACnetChannelValue.go |   58 +-
 .../readwrite/model/BACnetChannelValueBitString.go |   33 +-
 .../readwrite/model/BACnetChannelValueBoolean.go   |   33 +-
 .../model/BACnetChannelValueCharacterString.go     |   33 +-
 .../readwrite/model/BACnetChannelValueDate.go      |   33 +-
 .../readwrite/model/BACnetChannelValueDouble.go    |   33 +-
 .../model/BACnetChannelValueEnumerated.go          |   33 +-
 .../readwrite/model/BACnetChannelValueInteger.go   |   33 +-
 .../model/BACnetChannelValueLightingCommand.go     |   33 +-
 .../readwrite/model/BACnetChannelValueNull.go      |   33 +-
 .../model/BACnetChannelValueObjectidentifier.go    |   33 +-
 .../model/BACnetChannelValueOctetString.go         |   33 +-
 .../readwrite/model/BACnetChannelValueReal.go      |   33 +-
 .../readwrite/model/BACnetChannelValueTime.go      |   33 +-
 .../readwrite/model/BACnetChannelValueUnsigned.go  |   33 +-
 .../readwrite/model/BACnetCharacterEncoding.go     |   17 +-
 .../bacnetip/readwrite/model/BACnetClientCOV.go    |   30 +-
 .../readwrite/model/BACnetClientCOVNone.go         |   33 +-
 .../readwrite/model/BACnetClientCOVObject.go       |   33 +-
 .../bacnetip/readwrite/model/BACnetClosingTag.go   |   29 +-
 .../model/BACnetConfirmedServiceChoice.go          |   17 +-
 .../model/BACnetConfirmedServiceRequest.go         |   92 +-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   63 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   51 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   39 +-
 ...tConfirmedServiceRequestAtomicReadFileRecord.go |   39 +-
 ...tConfirmedServiceRequestAtomicReadFileStream.go |   39 +-
 ...edServiceRequestAtomicReadFileStreamOrRecord.go |   42 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   57 +-
 .../BACnetConfirmedServiceRequestAuthenticate.go   |   27 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |   57 +-
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   57 +-
 ...rmedServiceRequestConfirmedEventNotification.go |  105 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   45 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   51 +-
 ...rviceRequestConfirmedTextMessageMessageClass.go |   42 +-
 ...estConfirmedTextMessageMessageClassCharacter.go |   33 +-
 ...questConfirmedTextMessageMessageClassNumeric.go |   33 +-
 ...ceRequestConfirmedTextMessageMessagePriority.go |   17 +-
 ...estConfirmedTextMessageMessagePriorityTagged.go |   29 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   39 +-
 ...medServiceRequestCreateObjectObjectSpecifier.go |   59 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   33 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   45 +-
 ...questDeviceCommunicationControlEnableDisable.go |   17 +-
 ...eviceCommunicationControlEnableDisableTagged.go |   29 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   63 +-
 ...estGetEnrollmentSummaryAcknowledgementFilter.go |   17 +-
 ...EnrollmentSummaryAcknowledgementFilterTagged.go |   29 +-
 ...eRequestGetEnrollmentSummaryEventStateFilter.go |   17 +-
 ...stGetEnrollmentSummaryEventStateFilterTagged.go |   29 +-
 ...iceRequestGetEnrollmentSummaryPriorityFilter.go |   47 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   33 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   51 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |   45 +-
 ...nfirmedServiceRequestReadPropertyConditional.go |   27 +-
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   39 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   51 +-
 .../BACnetConfirmedServiceRequestReadRangeRange.go |   44 +-
 ...firmedServiceRequestReadRangeRangeByPosition.go |   39 +-
 ...ServiceRequestReadRangeRangeBySequenceNumber.go |   39 +-
 ...tConfirmedServiceRequestReadRangeRangeByTime.go |   39 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   39 +-
 ...ReinitializeDeviceReinitializedStateOfDevice.go |   17 +-
 ...ializeDeviceReinitializedStateOfDeviceTagged.go |   29 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   51 +-
 .../BACnetConfirmedServiceRequestRequestKey.go     |   27 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |   51 +-
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   63 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   57 +-
 ...yMultipleListOfCovSubscriptionSpecifications.go |   53 +-
 ...tipleListOfCovSubscriptionSpecificationsList.go |   47 +-
 ...ListOfCovSubscriptionSpecificationsReference.go |   41 +-
 .../model/BACnetConfirmedServiceRequestUnknown.go  |   27 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   39 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   45 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   39 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |   57 +-
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   39 +-
 .../readwrite/model/BACnetConstructedData.go       | 1354 ++++++++++----------
 .../model/BACnetConstructedDataAPDULength.go       |   37 +-
 .../BACnetConstructedDataAPDUSegmentTimeout.go     |   37 +-
 .../model/BACnetConstructedDataAPDUTimeout.go      |   37 +-
 .../model/BACnetConstructedDataAbsenteeLimit.go    |   37 +-
 .../model/BACnetConstructedDataAcceptedModes.go    |   39 +-
 .../BACnetConstructedDataAccessAlarmEvents.go      |   39 +-
 .../BACnetConstructedDataAccessCredentialAll.go    |   27 +-
 .../BACnetConstructedDataAccessDoorAlarmValues.go  |   39 +-
 .../model/BACnetConstructedDataAccessDoorAll.go    |   27 +-
 .../BACnetConstructedDataAccessDoorFaultValues.go  |   39 +-
 .../BACnetConstructedDataAccessDoorPresentValue.go |   37 +-
 ...etConstructedDataAccessDoorRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataAccessDoors.go      |   49 +-
 .../model/BACnetConstructedDataAccessEvent.go      |   37 +-
 ...nstructedDataAccessEventAuthenticationFactor.go |   37 +-
 .../BACnetConstructedDataAccessEventCredential.go  |   37 +-
 .../model/BACnetConstructedDataAccessEventTag.go   |   37 +-
 .../model/BACnetConstructedDataAccessEventTime.go  |   37 +-
 .../model/BACnetConstructedDataAccessPointAll.go   |   27 +-
 .../model/BACnetConstructedDataAccessRightsAll.go  |   27 +-
 ...BACnetConstructedDataAccessTransactionEvents.go |   39 +-
 .../model/BACnetConstructedDataAccessUserAll.go    |   27 +-
 .../BACnetConstructedDataAccessZoneAdjustValue.go  |   37 +-
 .../BACnetConstructedDataAccessZoneAlarmValues.go  |   39 +-
 .../model/BACnetConstructedDataAccessZoneAll.go    |   27 +-
 .../model/BACnetConstructedDataAccompaniment.go    |   37 +-
 .../BACnetConstructedDataAccompanimentTime.go      |   37 +-
 .../model/BACnetConstructedDataAccumulatorAll.go   |   27 +-
 ...CnetConstructedDataAccumulatorFaultHighLimit.go |   37 +-
 ...ACnetConstructedDataAccumulatorFaultLowLimit.go |   37 +-
 .../BACnetConstructedDataAccumulatorHighLimit.go   |   37 +-
 .../BACnetConstructedDataAccumulatorLowLimit.go    |   37 +-
 ...BACnetConstructedDataAccumulatorMaxPresValue.go |   37 +-
 ...BACnetConstructedDataAccumulatorMinPresValue.go |   37 +-
 .../model/BACnetConstructedDataAckRequired.go      |   37 +-
 .../model/BACnetConstructedDataAckedTransitions.go |   37 +-
 .../readwrite/model/BACnetConstructedDataAction.go |   49 +-
 .../model/BACnetConstructedDataActionText.go       |   49 +-
 .../model/BACnetConstructedDataActivationTime.go   |   37 +-
 ...netConstructedDataActiveAuthenticationPolicy.go |   37 +-
 ...onstructedDataActiveCOVMultipleSubscriptions.go |   39 +-
 .../BACnetConstructedDataActiveCOVSubscriptions.go |   39 +-
 .../model/BACnetConstructedDataActiveText.go       |   37 +-
 .../model/BACnetConstructedDataActiveVTSessions.go |   39 +-
 .../model/BACnetConstructedDataActualShedLevel.go  |   37 +-
 .../model/BACnetConstructedDataAdjustValue.go      |   37 +-
 .../model/BACnetConstructedDataAlarmValue.go       |   37 +-
 .../model/BACnetConstructedDataAlarmValues.go      |   49 +-
 .../BACnetConstructedDataAlertEnrollmentAll.go     |   27 +-
 ...etConstructedDataAlertEnrollmentPresentValue.go |   37 +-
 .../model/BACnetConstructedDataAlignIntervals.go   |   37 +-
 .../BACnetConstructedDataAllWritesSuccessful.go    |   37 +-
 .../BACnetConstructedDataAllowGroupDelayInhibit.go |   37 +-
 .../model/BACnetConstructedDataAnalogInputAll.go   |   27 +-
 ...CnetConstructedDataAnalogInputFaultHighLimit.go |   37 +-
 ...ACnetConstructedDataAnalogInputFaultLowLimit.go |   37 +-
 ...CnetConstructedDataAnalogInputInterfaceValue.go |   37 +-
 ...BACnetConstructedDataAnalogInputMaxPresValue.go |   37 +-
 ...BACnetConstructedDataAnalogInputPresentValue.go |   37 +-
 .../model/BACnetConstructedDataAnalogOutputAll.go  |   27 +-
 ...netConstructedDataAnalogOutputInterfaceValue.go |   37 +-
 ...ACnetConstructedDataAnalogOutputMaxPresValue.go |   37 +-
 ...ACnetConstructedDataAnalogOutputPresentValue.go |   37 +-
 ...ConstructedDataAnalogOutputRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataAnalogValueAll.go   |   27 +-
 ...CnetConstructedDataAnalogValueFaultHighLimit.go |   37 +-
 ...ACnetConstructedDataAnalogValueFaultLowLimit.go |   37 +-
 ...BACnetConstructedDataAnalogValueMaxPresValue.go |   37 +-
 ...BACnetConstructedDataAnalogValuePresentValue.go |   37 +-
 ...tConstructedDataAnalogValueRelinquishDefault.go |   37 +-
 ...netConstructedDataApplicationSoftwareVersion.go |   37 +-
 .../model/BACnetConstructedDataArchive.go          |   37 +-
 .../BACnetConstructedDataAssignedAccessRights.go   |   49 +-
 .../BACnetConstructedDataAssignedLandingCalls.go   |   49 +-
 .../model/BACnetConstructedDataAttemptedSamples.go |   37 +-
 .../BACnetConstructedDataAuthenticationFactors.go  |   49 +-
 ...ACnetConstructedDataAuthenticationPolicyList.go |   49 +-
 ...CnetConstructedDataAuthenticationPolicyNames.go |   49 +-
 .../BACnetConstructedDataAuthenticationStatus.go   |   37 +-
 ...BACnetConstructedDataAuthorizationExemptions.go |   39 +-
 .../BACnetConstructedDataAuthorizationMode.go      |   37 +-
 .../BACnetConstructedDataAutoSlaveDiscovery.go     |   37 +-
 .../model/BACnetConstructedDataAverageValue.go     |   37 +-
 .../model/BACnetConstructedDataAveragingAll.go     |   27 +-
 .../BACnetConstructedDataBACnetIPGlobalAddress.go  |   37 +-
 .../model/BACnetConstructedDataBACnetIPMode.go     |   37 +-
 ...ACnetConstructedDataBACnetIPMulticastAddress.go |   37 +-
 .../BACnetConstructedDataBACnetIPNATTraversal.go   |   37 +-
 .../model/BACnetConstructedDataBACnetIPUDPPort.go  |   37 +-
 .../model/BACnetConstructedDataBACnetIPv6Mode.go   |   37 +-
 ...netConstructedDataBACnetIPv6MulticastAddress.go |   37 +-
 .../BACnetConstructedDataBACnetIPv6UDPPort.go      |   37 +-
 ...CnetConstructedDataBBMDAcceptFDRegistrations.go |   37 +-
 ...onstructedDataBBMDBroadcastDistributionTable.go |   39 +-
 .../BACnetConstructedDataBBMDForeignDeviceTable.go |   39 +-
 .../BACnetConstructedDataBackupAndRestoreState.go  |   37 +-
 .../BACnetConstructedDataBackupFailureTimeout.go   |   37 +-
 .../BACnetConstructedDataBackupPreparationTime.go  |   37 +-
 ...ACnetConstructedDataBaseDeviceSecurityPolicy.go |   37 +-
 .../model/BACnetConstructedDataBelongsTo.go        |   37 +-
 .../readwrite/model/BACnetConstructedDataBias.go   |   37 +-
 .../model/BACnetConstructedDataBinaryInputAll.go   |   27 +-
 ...CnetConstructedDataBinaryInputInterfaceValue.go |   37 +-
 ...BACnetConstructedDataBinaryInputPresentValue.go |   37 +-
 ...BACnetConstructedDataBinaryLightingOutputAll.go |   27 +-
 ...tructedDataBinaryLightingOutputFeedbackValue.go |   37 +-
 ...structedDataBinaryLightingOutputPresentValue.go |   37 +-
 ...tedDataBinaryLightingOutputRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBinaryOutputAll.go  |   27 +-
 ...CnetConstructedDataBinaryOutputFeedbackValue.go |   37 +-
 ...netConstructedDataBinaryOutputInterfaceValue.go |   37 +-
 ...ACnetConstructedDataBinaryOutputPresentValue.go |   37 +-
 ...ConstructedDataBinaryOutputRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBinaryValueAll.go   |   27 +-
 ...BACnetConstructedDataBinaryValuePresentValue.go |   37 +-
 ...tConstructedDataBinaryValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBitMask.go          |   37 +-
 ...CnetConstructedDataBitStringValueAlarmValues.go |   49 +-
 ...netConstructedDataBitStringValuePresentValue.go |   37 +-
 ...nstructedDataBitStringValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBitText.go          |   49 +-
 .../BACnetConstructedDataBitstringValueAll.go      |   27 +-
 .../model/BACnetConstructedDataBlinkWarnEnable.go  |   37 +-
 .../model/BACnetConstructedDataBufferSize.go       |   37 +-
 .../model/BACnetConstructedDataCOVIncrement.go     |   37 +-
 .../model/BACnetConstructedDataCOVPeriod.go        |   37 +-
 ...CnetConstructedDataCOVResubscriptionInterval.go |   37 +-
 .../model/BACnetConstructedDataCOVUPeriod.go       |   37 +-
 .../model/BACnetConstructedDataCOVURecipients.go   |   39 +-
 .../model/BACnetConstructedDataCalendarAll.go      |   27 +-
 .../BACnetConstructedDataCalendarPresentValue.go   |   37 +-
 .../BACnetConstructedDataCarAssignedDirection.go   |   37 +-
 .../model/BACnetConstructedDataCarDoorCommand.go   |   49 +-
 .../model/BACnetConstructedDataCarDoorStatus.go    |   49 +-
 .../model/BACnetConstructedDataCarDoorText.go      |   49 +-
 .../model/BACnetConstructedDataCarDoorZone.go      |   37 +-
 .../model/BACnetConstructedDataCarDriveStatus.go   |   37 +-
 .../model/BACnetConstructedDataCarLoad.go          |   37 +-
 .../model/BACnetConstructedDataCarLoadUnits.go     |   37 +-
 .../model/BACnetConstructedDataCarMode.go          |   37 +-
 .../BACnetConstructedDataCarMovingDirection.go     |   37 +-
 .../model/BACnetConstructedDataCarPosition.go      |   37 +-
 .../BACnetConstructedDataChangeOfStateCount.go     |   37 +-
 .../BACnetConstructedDataChangeOfStateTime.go      |   37 +-
 .../model/BACnetConstructedDataChangesPending.go   |   37 +-
 .../model/BACnetConstructedDataChannelAll.go       |   27 +-
 ...tedDataChannelListOfObjectPropertyReferences.go |   49 +-
 .../model/BACnetConstructedDataChannelNumber.go    |   37 +-
 .../BACnetConstructedDataChannelPresentValue.go    |   37 +-
 ...nstructedDataCharacterStringValueAlarmValues.go |   49 +-
 ...nstructedDataCharacterStringValueFaultValues.go |   49 +-
 ...structedDataCharacterStringValuePresentValue.go |   37 +-
 ...tedDataCharacterStringValueRelinquishDefault.go |   37 +-
 ...BACnetConstructedDataCharacterstringValueAll.go |   27 +-
 .../BACnetConstructedDataClientCOVIncrement.go     |   37 +-
 .../model/BACnetConstructedDataCommand.go          |   37 +-
 .../model/BACnetConstructedDataCommandAction.go    |   49 +-
 .../model/BACnetConstructedDataCommandAll.go       |   27 +-
 .../model/BACnetConstructedDataCommandTimeArray.go |   49 +-
 .../BACnetConstructedDataConfigurationFiles.go     |   49 +-
 .../model/BACnetConstructedDataControlGroups.go    |   49 +-
 ...etConstructedDataControlledVariableReference.go |   37 +-
 ...BACnetConstructedDataControlledVariableUnits.go |   37 +-
 ...BACnetConstructedDataControlledVariableValue.go |   37 +-
 .../readwrite/model/BACnetConstructedDataCount.go  |   37 +-
 .../BACnetConstructedDataCountBeforeChange.go      |   37 +-
 .../model/BACnetConstructedDataCountChangeTime.go  |   37 +-
 .../BACnetConstructedDataCredentialDataInputAll.go |   27 +-
 ...nstructedDataCredentialDataInputPresentValue.go |   37 +-
 ...ConstructedDataCredentialDataInputUpdateTime.go |   37 +-
 .../BACnetConstructedDataCredentialDisable.go      |   37 +-
 .../model/BACnetConstructedDataCredentialStatus.go |   37 +-
 .../model/BACnetConstructedDataCredentials.go      |   39 +-
 .../BACnetConstructedDataCredentialsInZone.go      |   39 +-
 .../BACnetConstructedDataCurrentCommandPriority.go |   37 +-
 .../model/BACnetConstructedDataDatabaseRevision.go |   37 +-
 .../model/BACnetConstructedDataDateList.go         |   39 +-
 ...tConstructedDataDatePatternValuePresentValue.go |   37 +-
 ...tructedDataDatePatternValueRelinquishDefault.go |   37 +-
 ...structedDataDateTimePatternValuePresentValue.go |   37 +-
 ...tedDataDateTimePatternValueRelinquishDefault.go |   37 +-
 ...CnetConstructedDataDateTimeValuePresentValue.go |   37 +-
 ...onstructedDataDateTimeValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataDateValueAll.go     |   27 +-
 .../BACnetConstructedDataDateValuePresentValue.go  |   37 +-
 ...netConstructedDataDateValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataDatepatternValueAll.go    |   27 +-
 .../model/BACnetConstructedDataDatetimeValueAll.go |   27 +-
 ...BACnetConstructedDataDatetimepatternValueAll.go |   27 +-
 .../BACnetConstructedDataDaylightSavingsStatus.go  |   37 +-
 .../model/BACnetConstructedDataDaysRemaining.go    |   37 +-
 .../model/BACnetConstructedDataDeadband.go         |   37 +-
 .../model/BACnetConstructedDataDefaultFadeTime.go  |   37 +-
 .../model/BACnetConstructedDataDefaultRampRate.go  |   37 +-
 .../BACnetConstructedDataDefaultStepIncrement.go   |   37 +-
 ...onstructedDataDefaultSubordinateRelationship.go |   37 +-
 .../model/BACnetConstructedDataDefaultTimeout.go   |   37 +-
 ...BACnetConstructedDataDeployedProfileLocation.go |   37 +-
 .../BACnetConstructedDataDerivativeConstant.go     |   37 +-
 ...BACnetConstructedDataDerivativeConstantUnits.go |   37 +-
 .../model/BACnetConstructedDataDescription.go      |   37 +-
 .../BACnetConstructedDataDescriptionOfHalt.go      |   37 +-
 .../BACnetConstructedDataDeviceAddressBinding.go   |   39 +-
 .../model/BACnetConstructedDataDeviceAll.go        |   27 +-
 .../BACnetConstructedDataDeviceMaxInfoFrames.go    |   37 +-
 .../model/BACnetConstructedDataDeviceMaxMaster.go  |   37 +-
 .../model/BACnetConstructedDataDeviceType.go       |   37 +-
 .../model/BACnetConstructedDataDirectReading.go    |   37 +-
 ...BACnetConstructedDataDistributionKeyRevision.go |   37 +-
 .../model/BACnetConstructedDataDoNotHide.go        |   37 +-
 .../model/BACnetConstructedDataDoorAlarmState.go   |   37 +-
 .../BACnetConstructedDataDoorExtendedPulseTime.go  |   37 +-
 .../model/BACnetConstructedDataDoorMembers.go      |   49 +-
 .../BACnetConstructedDataDoorOpenTooLongTime.go    |   37 +-
 .../model/BACnetConstructedDataDoorPulseTime.go    |   37 +-
 .../model/BACnetConstructedDataDoorStatus.go       |   37 +-
 .../BACnetConstructedDataDoorUnlockDelayTime.go    |   37 +-
 .../model/BACnetConstructedDataDutyWindow.go       |   37 +-
 .../model/BACnetConstructedDataEffectivePeriod.go  |   37 +-
 .../model/BACnetConstructedDataEgressActive.go     |   37 +-
 .../model/BACnetConstructedDataEgressTime.go       |   37 +-
 .../BACnetConstructedDataElapsedActiveTime.go      |   37 +-
 .../model/BACnetConstructedDataElement.go          |   59 +-
 .../model/BACnetConstructedDataElevatorGroup.go    |   37 +-
 .../model/BACnetConstructedDataElevatorGroupAll.go |   27 +-
 ...CnetConstructedDataElevatorGroupGroupMembers.go |   49 +-
 .../readwrite/model/BACnetConstructedDataEnable.go |   37 +-
 .../model/BACnetConstructedDataEnergyMeter.go      |   37 +-
 .../model/BACnetConstructedDataEnergyMeterRef.go   |   37 +-
 .../model/BACnetConstructedDataEntryPoints.go      |   39 +-
 .../model/BACnetConstructedDataErrorLimit.go       |   37 +-
 .../model/BACnetConstructedDataEscalatorAll.go     |   27 +-
 .../BACnetConstructedDataEscalatorFaultSignals.go  |   39 +-
 .../model/BACnetConstructedDataEscalatorMode.go    |   37 +-
 .../BACnetConstructedDataEventAlgorithmInhibit.go  |   37 +-
 ...ACnetConstructedDataEventAlgorithmInhibitRef.go |   37 +-
 .../BACnetConstructedDataEventDetectionEnable.go   |   37 +-
 .../model/BACnetConstructedDataEventEnable.go      |   37 +-
 .../BACnetConstructedDataEventEnrollmentAll.go     |   27 +-
 .../model/BACnetConstructedDataEventLogAll.go      |   27 +-
 .../BACnetConstructedDataEventLogLogBuffer.go      |   39 +-
 .../BACnetConstructedDataEventMessageTexts.go      |   61 +-
 ...BACnetConstructedDataEventMessageTextsConfig.go |   61 +-
 .../model/BACnetConstructedDataEventParameters.go  |   37 +-
 .../model/BACnetConstructedDataEventState.go       |   37 +-
 .../model/BACnetConstructedDataEventTimeStamps.go  |   61 +-
 .../model/BACnetConstructedDataEventType.go        |   37 +-
 .../BACnetConstructedDataExceptionSchedule.go      |   49 +-
 .../model/BACnetConstructedDataExecutionDelay.go   |   49 +-
 .../model/BACnetConstructedDataExitPoints.go       |   39 +-
 .../BACnetConstructedDataExpectedShedLevel.go      |   37 +-
 .../model/BACnetConstructedDataExpirationTime.go   |   37 +-
 .../BACnetConstructedDataExtendedTimeEnable.go     |   37 +-
 .../model/BACnetConstructedDataFDBBMDAddress.go    |   37 +-
 .../BACnetConstructedDataFDSubscriptionLifetime.go |   37 +-
 .../BACnetConstructedDataFailedAttemptEvents.go    |   39 +-
 .../model/BACnetConstructedDataFailedAttempts.go   |   37 +-
 .../BACnetConstructedDataFailedAttemptsTime.go     |   37 +-
 .../model/BACnetConstructedDataFaultHighLimit.go   |   37 +-
 .../model/BACnetConstructedDataFaultLowLimit.go    |   37 +-
 .../model/BACnetConstructedDataFaultParameters.go  |   37 +-
 .../model/BACnetConstructedDataFaultSignals.go     |   39 +-
 .../model/BACnetConstructedDataFaultType.go        |   37 +-
 .../model/BACnetConstructedDataFaultValues.go      |   49 +-
 .../model/BACnetConstructedDataFileAccessMethod.go |   37 +-
 .../model/BACnetConstructedDataFileAll.go          |   27 +-
 .../model/BACnetConstructedDataFileRecordCount.go  |   37 +-
 .../model/BACnetConstructedDataFileSize.go         |   37 +-
 .../model/BACnetConstructedDataFileType.go         |   37 +-
 .../model/BACnetConstructedDataFirmwareRevision.go |   37 +-
 .../model/BACnetConstructedDataFloorText.go        |   49 +-
 .../model/BACnetConstructedDataFullDutyBaseline.go |   37 +-
 .../model/BACnetConstructedDataGlobalGroupAll.go   |   27 +-
 ...BACnetConstructedDataGlobalGroupGroupMembers.go |   49 +-
 ...BACnetConstructedDataGlobalGroupPresentValue.go |   49 +-
 .../model/BACnetConstructedDataGlobalIdentifier.go |   37 +-
 .../model/BACnetConstructedDataGroupAll.go         |   27 +-
 .../model/BACnetConstructedDataGroupID.go          |   37 +-
 .../model/BACnetConstructedDataGroupMemberNames.go |   49 +-
 .../model/BACnetConstructedDataGroupMembers.go     |   49 +-
 .../model/BACnetConstructedDataGroupMode.go        |   37 +-
 .../BACnetConstructedDataGroupPresentValue.go      |   39 +-
 .../model/BACnetConstructedDataHighLimit.go        |   37 +-
 .../model/BACnetConstructedDataHigherDeck.go       |   37 +-
 .../model/BACnetConstructedDataIPAddress.go        |   37 +-
 .../model/BACnetConstructedDataIPDHCPEnable.go     |   37 +-
 .../model/BACnetConstructedDataIPDHCPLeaseTime.go  |   37 +-
 ...ACnetConstructedDataIPDHCPLeaseTimeRemaining.go |   37 +-
 .../model/BACnetConstructedDataIPDHCPServer.go     |   37 +-
 .../model/BACnetConstructedDataIPDNSServer.go      |   49 +-
 .../model/BACnetConstructedDataIPDefaultGateway.go |   37 +-
 .../model/BACnetConstructedDataIPSubnetMask.go     |   37 +-
 .../model/BACnetConstructedDataIPv6Address.go      |   37 +-
 ...ACnetConstructedDataIPv6AutoAddressingEnable.go |   37 +-
 .../BACnetConstructedDataIPv6DHCPLeaseTime.go      |   37 +-
 ...netConstructedDataIPv6DHCPLeaseTimeRemaining.go |   37 +-
 .../model/BACnetConstructedDataIPv6DHCPServer.go   |   37 +-
 .../model/BACnetConstructedDataIPv6DNSServer.go    |   49 +-
 .../BACnetConstructedDataIPv6DefaultGateway.go     |   37 +-
 .../model/BACnetConstructedDataIPv6PrefixLength.go |   37 +-
 .../model/BACnetConstructedDataIPv6ZoneIndex.go    |   37 +-
 .../model/BACnetConstructedDataInProcess.go        |   37 +-
 .../model/BACnetConstructedDataInProgress.go       |   37 +-
 .../model/BACnetConstructedDataInactiveText.go     |   37 +-
 .../model/BACnetConstructedDataInitialTimeout.go   |   37 +-
 .../model/BACnetConstructedDataInputReference.go   |   37 +-
 .../model/BACnetConstructedDataInstallationID.go   |   37 +-
 .../model/BACnetConstructedDataInstanceOf.go       |   37 +-
 .../BACnetConstructedDataInstantaneousPower.go     |   37 +-
 .../model/BACnetConstructedDataIntegerValueAll.go  |   27 +-
 ...ACnetConstructedDataIntegerValueCOVIncrement.go |   37 +-
 .../BACnetConstructedDataIntegerValueDeadband.go   |   37 +-
 ...netConstructedDataIntegerValueFaultHighLimit.go |   37 +-
 ...CnetConstructedDataIntegerValueFaultLowLimit.go |   37 +-
 .../BACnetConstructedDataIntegerValueHighLimit.go  |   37 +-
 .../BACnetConstructedDataIntegerValueLowLimit.go   |   37 +-
 ...ACnetConstructedDataIntegerValueMaxPresValue.go |   37 +-
 ...ACnetConstructedDataIntegerValueMinPresValue.go |   37 +-
 ...ACnetConstructedDataIntegerValuePresentValue.go |   37 +-
 ...ConstructedDataIntegerValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataIntegerValueResolution.go |   37 +-
 .../model/BACnetConstructedDataIntegralConstant.go |   37 +-
 .../BACnetConstructedDataIntegralConstantUnits.go  |   37 +-
 .../model/BACnetConstructedDataIntervalOffset.go   |   37 +-
 .../readwrite/model/BACnetConstructedDataIsUTC.go  |   37 +-
 .../model/BACnetConstructedDataKeySets.go          |   49 +-
 .../BACnetConstructedDataLandingCallControl.go     |   37 +-
 .../model/BACnetConstructedDataLandingCalls.go     |   39 +-
 .../BACnetConstructedDataLandingDoorStatus.go      |   49 +-
 .../BACnetConstructedDataLargeAnalogValueAll.go    |   27 +-
 ...tConstructedDataLargeAnalogValueCOVIncrement.go |   37 +-
 ...ACnetConstructedDataLargeAnalogValueDeadband.go |   37 +-
 ...onstructedDataLargeAnalogValueFaultHighLimit.go |   37 +-
 ...ConstructedDataLargeAnalogValueFaultLowLimit.go |   37 +-
 ...CnetConstructedDataLargeAnalogValueHighLimit.go |   37 +-
 ...ACnetConstructedDataLargeAnalogValueLowLimit.go |   37 +-
 ...tConstructedDataLargeAnalogValueMaxPresValue.go |   37 +-
 ...tConstructedDataLargeAnalogValueMinPresValue.go |   37 +-
 ...tConstructedDataLargeAnalogValuePresentValue.go |   37 +-
 ...tructedDataLargeAnalogValueRelinquishDefault.go |   37 +-
 ...netConstructedDataLargeAnalogValueResolution.go |   37 +-
 .../model/BACnetConstructedDataLastAccessEvent.go  |   37 +-
 .../model/BACnetConstructedDataLastAccessPoint.go  |   37 +-
 .../model/BACnetConstructedDataLastCommandTime.go  |   37 +-
 .../BACnetConstructedDataLastCredentialAdded.go    |   37 +-
 ...BACnetConstructedDataLastCredentialAddedTime.go |   37 +-
 .../BACnetConstructedDataLastCredentialRemoved.go  |   37 +-
 ...CnetConstructedDataLastCredentialRemovedTime.go |   37 +-
 .../model/BACnetConstructedDataLastKeyServer.go    |   37 +-
 .../model/BACnetConstructedDataLastNotifyRecord.go |   37 +-
 .../model/BACnetConstructedDataLastPriority.go     |   37 +-
 .../BACnetConstructedDataLastRestartReason.go      |   37 +-
 .../model/BACnetConstructedDataLastRestoreTime.go  |   37 +-
 .../model/BACnetConstructedDataLastStateChange.go  |   37 +-
 .../model/BACnetConstructedDataLastUseTime.go      |   37 +-
 .../BACnetConstructedDataLifeSafetyAlarmValues.go  |   39 +-
 ...netConstructedDataLifeSafetyPointAlarmValues.go |   39 +-
 .../BACnetConstructedDataLifeSafetyPointAll.go     |   27 +-
 ...netConstructedDataLifeSafetyPointFaultValues.go |   39 +-
 ...etConstructedDataLifeSafetyPointPresentValue.go |   37 +-
 ...CnetConstructedDataLifeSafetyZoneAlarmValues.go |   39 +-
 .../BACnetConstructedDataLifeSafetyZoneAll.go      |   27 +-
 ...CnetConstructedDataLifeSafetyZoneFaultValues.go |   39 +-
 ...tructedDataLifeSafetyZoneMaintenanceRequired.go |   37 +-
 ...netConstructedDataLifeSafetyZonePresentValue.go |   37 +-
 .../model/BACnetConstructedDataLiftAll.go          |   27 +-
 .../model/BACnetConstructedDataLiftFaultSignals.go |   39 +-
 .../model/BACnetConstructedDataLightingCommand.go  |   37 +-
 ...onstructedDataLightingCommandDefaultPriority.go |   37 +-
 .../BACnetConstructedDataLightingOutputAll.go      |   27 +-
 ...etConstructedDataLightingOutputFeedbackValue.go |   37 +-
 ...netConstructedDataLightingOutputPresentValue.go |   37 +-
 ...nstructedDataLightingOutputRelinquishDefault.go |   37 +-
 ...etConstructedDataLightingOutputTrackingValue.go |   37 +-
 .../model/BACnetConstructedDataLimitEnable.go      |   37 +-
 ...BACnetConstructedDataLimitMonitoringInterval.go |   37 +-
 .../model/BACnetConstructedDataLinkSpeed.go        |   37 +-
 .../BACnetConstructedDataLinkSpeedAutonegotiate.go |   37 +-
 .../model/BACnetConstructedDataLinkSpeeds.go       |   49 +-
 .../BACnetConstructedDataListOfGroupMembers.go     |   39 +-
 ...onstructedDataListOfObjectPropertyReferences.go |   39 +-
 .../model/BACnetConstructedDataLoadControlAll.go   |   27 +-
 ...BACnetConstructedDataLoadControlPresentValue.go |   37 +-
 .../model/BACnetConstructedDataLocalDate.go        |   37 +-
 .../BACnetConstructedDataLocalForwardingOnly.go    |   37 +-
 .../model/BACnetConstructedDataLocalTime.go        |   37 +-
 .../model/BACnetConstructedDataLocation.go         |   37 +-
 .../model/BACnetConstructedDataLockStatus.go       |   37 +-
 .../model/BACnetConstructedDataLockout.go          |   37 +-
 .../BACnetConstructedDataLockoutRelinquishTime.go  |   37 +-
 .../model/BACnetConstructedDataLogBuffer.go        |   49 +-
 ...BACnetConstructedDataLogDeviceObjectProperty.go |   37 +-
 .../model/BACnetConstructedDataLogInterval.go      |   37 +-
 .../model/BACnetConstructedDataLoggingObject.go    |   37 +-
 .../model/BACnetConstructedDataLoggingRecord.go    |   37 +-
 .../model/BACnetConstructedDataLoggingType.go      |   37 +-
 .../model/BACnetConstructedDataLoopAction.go       |   37 +-
 .../model/BACnetConstructedDataLoopAll.go          |   27 +-
 .../model/BACnetConstructedDataLoopPresentValue.go |   37 +-
 .../model/BACnetConstructedDataLowDiffLimit.go     |   37 +-
 .../model/BACnetConstructedDataLowLimit.go         |   37 +-
 .../model/BACnetConstructedDataLowerDeck.go        |   37 +-
 .../model/BACnetConstructedDataMACAddress.go       |   37 +-
 .../model/BACnetConstructedDataMachineRoomID.go    |   37 +-
 .../BACnetConstructedDataMaintenanceRequired.go    |   37 +-
 .../model/BACnetConstructedDataMakingCarCall.go    |   49 +-
 ...tConstructedDataManipulatedVariableReference.go |   37 +-
 ...CnetConstructedDataManualSlaveAddressBinding.go |   39 +-
 .../BACnetConstructedDataMaskedAlarmValues.go      |   39 +-
 .../BACnetConstructedDataMaxAPDULengthAccepted.go  |   37 +-
 .../model/BACnetConstructedDataMaxActualValue.go   |   37 +-
 .../BACnetConstructedDataMaxFailedAttempts.go      |   37 +-
 .../model/BACnetConstructedDataMaxInfoFrames.go    |   37 +-
 .../model/BACnetConstructedDataMaxMaster.go        |   37 +-
 .../model/BACnetConstructedDataMaxPresValue.go     |   37 +-
 .../BACnetConstructedDataMaxSegmentsAccepted.go    |   37 +-
 .../model/BACnetConstructedDataMaximumOutput.go    |   37 +-
 .../model/BACnetConstructedDataMaximumValue.go     |   37 +-
 .../BACnetConstructedDataMaximumValueTimestamp.go  |   37 +-
 .../model/BACnetConstructedDataMemberOf.go         |   39 +-
 .../BACnetConstructedDataMemberStatusFlags.go      |   37 +-
 .../model/BACnetConstructedDataMembers.go          |   39 +-
 .../model/BACnetConstructedDataMinActualValue.go   |   37 +-
 .../model/BACnetConstructedDataMinPresValue.go     |   37 +-
 .../model/BACnetConstructedDataMinimumOffTime.go   |   37 +-
 .../model/BACnetConstructedDataMinimumOnTime.go    |   37 +-
 .../model/BACnetConstructedDataMinimumOutput.go    |   37 +-
 .../model/BACnetConstructedDataMinimumValue.go     |   37 +-
 .../BACnetConstructedDataMinimumValueTimestamp.go  |   37 +-
 .../readwrite/model/BACnetConstructedDataMode.go   |   37 +-
 .../model/BACnetConstructedDataModelName.go        |   37 +-
 .../model/BACnetConstructedDataModificationDate.go |   37 +-
 ...netConstructedDataMultiStateInputAlarmValues.go |   39 +-
 .../BACnetConstructedDataMultiStateInputAll.go     |   27 +-
 ...netConstructedDataMultiStateInputFaultValues.go |   39 +-
 ...ConstructedDataMultiStateInputInterfaceValue.go |   37 +-
 .../BACnetConstructedDataMultiStateOutputAll.go    |   27 +-
 ...ConstructedDataMultiStateOutputFeedbackValue.go |   37 +-
 ...onstructedDataMultiStateOutputInterfaceValue.go |   37 +-
 ...tructedDataMultiStateOutputRelinquishDefault.go |   37 +-
 ...netConstructedDataMultiStateValueAlarmValues.go |   39 +-
 .../BACnetConstructedDataMultiStateValueAll.go     |   27 +-
 ...netConstructedDataMultiStateValueFaultValues.go |   39 +-
 ...structedDataMultiStateValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataMusterPoint.go      |   37 +-
 .../BACnetConstructedDataNegativeAccessRules.go    |   49 +-
 ...ConstructedDataNetworkAccessSecurityPolicies.go |   49 +-
 .../BACnetConstructedDataNetworkInterfaceName.go   |   37 +-
 .../model/BACnetConstructedDataNetworkNumber.go    |   37 +-
 .../BACnetConstructedDataNetworkNumberQuality.go   |   37 +-
 .../model/BACnetConstructedDataNetworkPortAll.go   |   27 +-
 ...ACnetConstructedDataNetworkPortMaxInfoFrames.go |   37 +-
 .../BACnetConstructedDataNetworkPortMaxMaster.go   |   37 +-
 .../BACnetConstructedDataNetworkSecurityAll.go     |   27 +-
 .../model/BACnetConstructedDataNetworkType.go      |   37 +-
 .../BACnetConstructedDataNextStoppingFloor.go      |   37 +-
 .../model/BACnetConstructedDataNodeSubtype.go      |   37 +-
 .../model/BACnetConstructedDataNodeType.go         |   37 +-
 .../BACnetConstructedDataNotificationClass.go      |   37 +-
 .../BACnetConstructedDataNotificationClassAll.go   |   27 +-
 ...ACnetConstructedDataNotificationForwarderAll.go |   27 +-
 .../BACnetConstructedDataNotificationThreshold.go  |   37 +-
 .../model/BACnetConstructedDataNotifyType.go       |   37 +-
 .../BACnetConstructedDataNumberOfAPDURetries.go    |   37 +-
 ...onstructedDataNumberOfAuthenticationPolicies.go |   37 +-
 .../model/BACnetConstructedDataNumberOfStates.go   |   37 +-
 .../model/BACnetConstructedDataObjectIdentifier.go |   37 +-
 .../model/BACnetConstructedDataObjectList.go       |   49 +-
 .../model/BACnetConstructedDataObjectName.go       |   37 +-
 ...BACnetConstructedDataObjectPropertyReference.go |   37 +-
 .../model/BACnetConstructedDataObjectType.go       |   37 +-
 .../model/BACnetConstructedDataOccupancyCount.go   |   37 +-
 .../BACnetConstructedDataOccupancyCountAdjust.go   |   37 +-
 .../BACnetConstructedDataOccupancyCountEnable.go   |   37 +-
 .../BACnetConstructedDataOccupancyLowerLimit.go    |   37 +-
 ...etConstructedDataOccupancyLowerLimitEnforced.go |   37 +-
 .../model/BACnetConstructedDataOccupancyState.go   |   37 +-
 .../BACnetConstructedDataOccupancyUpperLimit.go    |   37 +-
 ...etConstructedDataOccupancyUpperLimitEnforced.go |   37 +-
 ...tConstructedDataOctetStringValuePresentValue.go |   37 +-
 ...tructedDataOctetStringValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataOctetstringValueAll.go    |   27 +-
 .../BACnetConstructedDataOperationDirection.go     |   37 +-
 .../BACnetConstructedDataOperationExpected.go      |   37 +-
 .../model/BACnetConstructedDataOptional.go         |   27 +-
 .../model/BACnetConstructedDataOutOfService.go     |   37 +-
 .../model/BACnetConstructedDataOutputUnits.go      |   37 +-
 .../BACnetConstructedDataPacketReorderTime.go      |   37 +-
 .../model/BACnetConstructedDataPassbackMode.go     |   37 +-
 .../model/BACnetConstructedDataPassbackTimeout.go  |   37 +-
 .../model/BACnetConstructedDataPassengerAlarm.go   |   37 +-
 .../model/BACnetConstructedDataPolarity.go         |   37 +-
 .../model/BACnetConstructedDataPortFilter.go       |   49 +-
 .../BACnetConstructedDataPositiveAccessRules.go    |   49 +-
 ...BACnetConstructedDataPositiveIntegerValueAll.go |   27 +-
 ...structedDataPositiveIntegerValueCOVIncrement.go |   37 +-
 ...tConstructedDataPositiveIntegerValueDeadband.go |   37 +-
 ...ructedDataPositiveIntegerValueFaultHighLimit.go |   37 +-
 ...tructedDataPositiveIntegerValueFaultLowLimit.go |   37 +-
 ...ConstructedDataPositiveIntegerValueHighLimit.go |   37 +-
 ...tConstructedDataPositiveIntegerValueLowLimit.go |   37 +-
 ...structedDataPositiveIntegerValueMaxPresValue.go |   37 +-
 ...structedDataPositiveIntegerValueMinPresValue.go |   37 +-
 ...tedDataPositiveIntegerValueRelinquishDefault.go |   37 +-
 ...onstructedDataPositiveIntegerValueResolution.go |   37 +-
 .../readwrite/model/BACnetConstructedDataPower.go  |   37 +-
 .../model/BACnetConstructedDataPowerMode.go        |   37 +-
 .../model/BACnetConstructedDataPrescale.go         |   37 +-
 .../model/BACnetConstructedDataPresentValue.go     |   37 +-
 .../model/BACnetConstructedDataPriority.go         |   49 +-
 .../model/BACnetConstructedDataPriorityArray.go    |   37 +-
 .../BACnetConstructedDataPriorityForWriting.go     |   37 +-
 .../BACnetConstructedDataProcessIdentifier.go      |   37 +-
 ...BACnetConstructedDataProcessIdentifierFilter.go |   37 +-
 .../model/BACnetConstructedDataProfileLocation.go  |   37 +-
 .../model/BACnetConstructedDataProfileName.go      |   37 +-
 .../model/BACnetConstructedDataProgramAll.go       |   27 +-
 .../model/BACnetConstructedDataProgramChange.go    |   37 +-
 .../model/BACnetConstructedDataProgramLocation.go  |   37 +-
 .../model/BACnetConstructedDataProgramState.go     |   37 +-
 .../model/BACnetConstructedDataPropertyList.go     |   49 +-
 .../BACnetConstructedDataProportionalConstant.go   |   37 +-
 ...CnetConstructedDataProportionalConstantUnits.go |   37 +-
 .../model/BACnetConstructedDataProtocolLevel.go    |   37 +-
 ...tConstructedDataProtocolObjectTypesSupported.go |   37 +-
 .../model/BACnetConstructedDataProtocolRevision.go |   37 +-
 ...CnetConstructedDataProtocolServicesSupported.go |   37 +-
 .../model/BACnetConstructedDataProtocolVersion.go  |   37 +-
 ...CnetConstructedDataPulseConverterAdjustValue.go |   37 +-
 .../BACnetConstructedDataPulseConverterAll.go      |   27 +-
 ...netConstructedDataPulseConverterPresentValue.go |   37 +-
 .../model/BACnetConstructedDataPulseRate.go        |   37 +-
 .../model/BACnetConstructedDataReadOnly.go         |   37 +-
 .../model/BACnetConstructedDataReasonForDisable.go |   39 +-
 .../model/BACnetConstructedDataReasonForHalt.go    |   37 +-
 .../model/BACnetConstructedDataRecipientList.go    |   39 +-
 .../model/BACnetConstructedDataRecordCount.go      |   37 +-
 ...ACnetConstructedDataRecordsSinceNotification.go |   37 +-
 .../model/BACnetConstructedDataReferencePort.go    |   37 +-
 .../BACnetConstructedDataRegisteredCarCall.go      |   49 +-
 .../model/BACnetConstructedDataReliability.go      |   37 +-
 ...tConstructedDataReliabilityEvaluationInhibit.go |   37 +-
 .../BACnetConstructedDataRelinquishDefault.go      |   37 +-
 .../model/BACnetConstructedDataRepresents.go       |   37 +-
 .../BACnetConstructedDataRequestedShedLevel.go     |   37 +-
 ...BACnetConstructedDataRequestedUpdateInterval.go |   37 +-
 .../model/BACnetConstructedDataRequired.go         |   27 +-
 .../model/BACnetConstructedDataResolution.go       |   37 +-
 ...ConstructedDataRestartNotificationRecipients.go |   39 +-
 .../BACnetConstructedDataRestoreCompletionTime.go  |   37 +-
 .../BACnetConstructedDataRestorePreparationTime.go |   37 +-
 .../model/BACnetConstructedDataRoutingTable.go     |   39 +-
 .../readwrite/model/BACnetConstructedDataScale.go  |   37 +-
 .../model/BACnetConstructedDataScaleFactor.go      |   37 +-
 .../model/BACnetConstructedDataScheduleAll.go      |   27 +-
 .../model/BACnetConstructedDataScheduleDefault.go  |   37 +-
 .../BACnetConstructedDataSchedulePresentValue.go   |   37 +-
 .../model/BACnetConstructedDataSecuredStatus.go    |   37 +-
 .../BACnetConstructedDataSecurityPDUTimeout.go     |   37 +-
 .../BACnetConstructedDataSecurityTimeWindow.go     |   37 +-
 .../BACnetConstructedDataSegmentationSupported.go  |   37 +-
 .../model/BACnetConstructedDataSerialNumber.go     |   37 +-
 .../model/BACnetConstructedDataSetpoint.go         |   37 +-
 .../BACnetConstructedDataSetpointReference.go      |   37 +-
 .../model/BACnetConstructedDataSetting.go          |   37 +-
 .../model/BACnetConstructedDataShedDuration.go     |   37 +-
 .../BACnetConstructedDataShedLevelDescriptions.go  |   49 +-
 .../model/BACnetConstructedDataShedLevels.go       |   49 +-
 .../model/BACnetConstructedDataSilenced.go         |   37 +-
 .../BACnetConstructedDataSlaveAddressBinding.go    |   39 +-
 .../model/BACnetConstructedDataSlaveProxyEnable.go |   37 +-
 .../model/BACnetConstructedDataStartTime.go        |   37 +-
 .../BACnetConstructedDataStateChangeValues.go      |   49 +-
 .../model/BACnetConstructedDataStateDescription.go |   37 +-
 .../model/BACnetConstructedDataStateText.go        |   49 +-
 .../model/BACnetConstructedDataStatusFlags.go      |   37 +-
 .../model/BACnetConstructedDataStopTime.go         |   37 +-
 .../model/BACnetConstructedDataStopWhenFull.go     |   37 +-
 .../model/BACnetConstructedDataStrikeCount.go      |   37 +-
 .../BACnetConstructedDataStructuredObjectList.go   |   49 +-
 .../BACnetConstructedDataStructuredViewAll.go      |   27 +-
 .../BACnetConstructedDataSubordinateAnnotations.go |   49 +-
 .../model/BACnetConstructedDataSubordinateList.go  |   49 +-
 .../BACnetConstructedDataSubordinateNodeTypes.go   |   49 +-
 ...ACnetConstructedDataSubordinateRelationships.go |   49 +-
 .../model/BACnetConstructedDataSubordinateTags.go  |   49 +-
 .../BACnetConstructedDataSubscribedRecipients.go   |   39 +-
 .../BACnetConstructedDataSupportedFormatClasses.go |   49 +-
 .../model/BACnetConstructedDataSupportedFormats.go |   49 +-
 ...etConstructedDataSupportedSecurityAlgorithms.go |   39 +-
 .../model/BACnetConstructedDataSystemStatus.go     |   37 +-
 .../readwrite/model/BACnetConstructedDataTags.go   |   49 +-
 .../model/BACnetConstructedDataThreatAuthority.go  |   37 +-
 .../model/BACnetConstructedDataThreatLevel.go      |   37 +-
 .../model/BACnetConstructedDataTimeDelay.go        |   37 +-
 .../model/BACnetConstructedDataTimeDelayNormal.go  |   37 +-
 .../BACnetConstructedDataTimeOfActiveTimeReset.go  |   37 +-
 .../BACnetConstructedDataTimeOfDeviceRestart.go    |   37 +-
 .../BACnetConstructedDataTimeOfStateCountReset.go  |   37 +-
 .../BACnetConstructedDataTimeOfStrikeCountReset.go |   37 +-
 ...tConstructedDataTimePatternValuePresentValue.go |   37 +-
 ...tructedDataTimePatternValueRelinquishDefault.go |   37 +-
 ...etConstructedDataTimeSynchronizationInterval.go |   37 +-
 ...ConstructedDataTimeSynchronizationRecipients.go |   39 +-
 .../model/BACnetConstructedDataTimeValueAll.go     |   27 +-
 .../BACnetConstructedDataTimeValuePresentValue.go  |   37 +-
 ...netConstructedDataTimeValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataTimepatternValueAll.go    |   27 +-
 .../model/BACnetConstructedDataTimerAlarmValues.go |   39 +-
 .../model/BACnetConstructedDataTimerAll.go         |   27 +-
 .../BACnetConstructedDataTimerMaxPresValue.go      |   37 +-
 .../BACnetConstructedDataTimerMinPresValue.go      |   37 +-
 .../model/BACnetConstructedDataTimerResolution.go  |   37 +-
 .../model/BACnetConstructedDataTimerRunning.go     |   37 +-
 .../model/BACnetConstructedDataTimerState.go       |   37 +-
 .../model/BACnetConstructedDataTotalRecordCount.go |   37 +-
 .../model/BACnetConstructedDataTraceFlag.go        |   37 +-
 .../model/BACnetConstructedDataTrackingValue.go    |   37 +-
 ...tConstructedDataTransactionNotificationClass.go |   37 +-
 .../model/BACnetConstructedDataTransition.go       |   37 +-
 .../model/BACnetConstructedDataTrendLogAll.go      |   27 +-
 .../BACnetConstructedDataTrendLogLogBuffer.go      |   39 +-
 ...nstructedDataTrendLogLogDeviceObjectProperty.go |   37 +-
 .../BACnetConstructedDataTrendLogMultipleAll.go    |   27 +-
 ...CnetConstructedDataTrendLogMultipleLogBuffer.go |   39 +-
 ...dDataTrendLogMultipleLogDeviceObjectProperty.go |   49 +-
 .../model/BACnetConstructedDataTrigger.go          |   37 +-
 .../model/BACnetConstructedDataUTCOffset.go        |   37 +-
 ...structedDataUTCTimeSynchronizationRecipients.go |   39 +-
 .../readwrite/model/BACnetConstructedDataUnits.go  |   37 +-
 .../model/BACnetConstructedDataUnspecified.go      |   49 +-
 .../model/BACnetConstructedDataUpdateInterval.go   |   37 +-
 .../BACnetConstructedDataUpdateKeySetTimeout.go    |   37 +-
 .../model/BACnetConstructedDataUpdateTime.go       |   37 +-
 .../BACnetConstructedDataUserExternalIdentifier.go |   37 +-
 ...ACnetConstructedDataUserInformationReference.go |   37 +-
 .../model/BACnetConstructedDataUserName.go         |   37 +-
 .../model/BACnetConstructedDataUserType.go         |   37 +-
 .../model/BACnetConstructedDataUsesRemaining.go    |   37 +-
 .../BACnetConstructedDataVTClassesSupported.go     |   39 +-
 .../model/BACnetConstructedDataValidSamples.go     |   37 +-
 .../BACnetConstructedDataValueBeforeChange.go      |   37 +-
 .../model/BACnetConstructedDataValueChangeTime.go  |   37 +-
 .../model/BACnetConstructedDataValueSet.go         |   37 +-
 .../model/BACnetConstructedDataValueSource.go      |   37 +-
 .../model/BACnetConstructedDataValueSourceArray.go |   49 +-
 .../model/BACnetConstructedDataVarianceValue.go    |   37 +-
 .../model/BACnetConstructedDataVendorIdentifier.go |   37 +-
 .../model/BACnetConstructedDataVendorName.go       |   37 +-
 .../model/BACnetConstructedDataVerificationTime.go |   37 +-
 .../BACnetConstructedDataVirtualMACAddressTable.go |   39 +-
 .../model/BACnetConstructedDataWeeklySchedule.go   |   49 +-
 .../model/BACnetConstructedDataWindowInterval.go   |   37 +-
 .../model/BACnetConstructedDataWindowSamples.go    |   37 +-
 .../model/BACnetConstructedDataWriteStatus.go      |   37 +-
 .../model/BACnetConstructedDataZoneFrom.go         |   37 +-
 .../model/BACnetConstructedDataZoneMembers.go      |   39 +-
 .../readwrite/model/BACnetConstructedDataZoneTo.go |   37 +-
 .../bacnetip/readwrite/model/BACnetContextTag.go   |   62 +-
 .../readwrite/model/BACnetContextTagBitString.go   |   33 +-
 .../readwrite/model/BACnetContextTagBoolean.go     |   37 +-
 .../model/BACnetContextTagCharacterString.go       |   37 +-
 .../readwrite/model/BACnetContextTagDate.go        |   33 +-
 .../readwrite/model/BACnetContextTagDouble.go      |   37 +-
 .../readwrite/model/BACnetContextTagEnumerated.go  |   37 +-
 .../readwrite/model/BACnetContextTagNull.go        |   27 +-
 .../model/BACnetContextTagObjectIdentifier.go      |   41 +-
 .../readwrite/model/BACnetContextTagOctetString.go |   33 +-
 .../readwrite/model/BACnetContextTagReal.go        |   37 +-
 .../model/BACnetContextTagSignedInteger.go         |   37 +-
 .../readwrite/model/BACnetContextTagTime.go        |   33 +-
 .../readwrite/model/BACnetContextTagUnknown.go     |   27 +-
 .../model/BACnetContextTagUnsignedInteger.go       |   37 +-
 .../model/BACnetCredentialAuthenticationFactor.go  |   35 +-
 .../readwrite/model/BACnetDailySchedule.go         |   47 +-
 .../bacnetip/readwrite/model/BACnetDataType.go     |   17 +-
 .../bacnetip/readwrite/model/BACnetDateRange.go    |   35 +-
 .../readwrite/model/BACnetDateRangeEnclosed.go     |   41 +-
 .../bacnetip/readwrite/model/BACnetDateTime.go     |   35 +-
 .../readwrite/model/BACnetDateTimeEnclosed.go      |   41 +-
 .../bacnetip/readwrite/model/BACnetDaysOfWeek.go   |   17 +-
 .../readwrite/model/BACnetDaysOfWeekTagged.go      |   63 +-
 .../bacnetip/readwrite/model/BACnetDestination.go  |   65 +-
 .../model/BACnetDeviceObjectPropertyReference.go   |   47 +-
 .../BACnetDeviceObjectPropertyReferenceEnclosed.go |   41 +-
 .../readwrite/model/BACnetDeviceObjectReference.go |   35 +-
 .../model/BACnetDeviceObjectReferenceEnclosed.go   |   41 +-
 .../bacnetip/readwrite/model/BACnetDeviceStatus.go |   17 +-
 .../readwrite/model/BACnetDeviceStatusTagged.go    |   33 +-
 .../readwrite/model/BACnetDoorAlarmState.go        |   17 +-
 .../readwrite/model/BACnetDoorAlarmStateTagged.go  |   33 +-
 .../readwrite/model/BACnetDoorSecuredStatus.go     |   17 +-
 .../model/BACnetDoorSecuredStatusTagged.go         |   29 +-
 .../bacnetip/readwrite/model/BACnetDoorStatus.go   |   17 +-
 .../readwrite/model/BACnetDoorStatusTagged.go      |   33 +-
 .../bacnetip/readwrite/model/BACnetDoorValue.go    |   17 +-
 .../readwrite/model/BACnetDoorValueTagged.go       |   29 +-
 .../readwrite/model/BACnetEngineeringUnits.go      |   17 +-
 .../model/BACnetEngineeringUnitsTagged.go          |   33 +-
 .../bacnetip/readwrite/model/BACnetError.go        |   36 +-
 .../bacnetip/readwrite/model/BACnetErrorGeneral.go |   33 +-
 .../readwrite/model/BACnetEscalatorFault.go        |   17 +-
 .../readwrite/model/BACnetEscalatorFaultTagged.go  |   33 +-
 .../readwrite/model/BACnetEscalatorMode.go         |   17 +-
 .../readwrite/model/BACnetEscalatorModeTagged.go   |   33 +-
 .../model/BACnetEscalatorOperationDirection.go     |   17 +-
 .../BACnetEscalatorOperationDirectionTagged.go     |   33 +-
 .../readwrite/model/BACnetEventLogRecord.go        |   35 +-
 .../model/BACnetEventLogRecordLogDatum.go          |   44 +-
 .../model/BACnetEventLogRecordLogDatumLogStatus.go |   33 +-
 .../BACnetEventLogRecordLogDatumNotification.go    |   45 +-
 .../BACnetEventLogRecordLogDatumTimeChange.go      |   33 +-
 .../model/BACnetEventNotificationSubscription.go   |   47 +-
 .../readwrite/model/BACnetEventParameter.go        |   64 +-
 .../model/BACnetEventParameterAccessEvent.go       |   51 +-
 ...tEventParameterAccessEventListOfAccessEvents.go |   47 +-
 .../model/BACnetEventParameterBufferReady.go       |   51 +-
 .../model/BACnetEventParameterChangeOfBitstring.go |   57 +-
 ...ameterChangeOfBitstringListOfBitstringValues.go |   47 +-
 .../BACnetEventParameterChangeOfCharacterString.go |   51 +-
 ...eterChangeOfCharacterStringListOfAlarmValues.go |   47 +-
 .../BACnetEventParameterChangeOfDiscreteValue.go   |   45 +-
 .../BACnetEventParameterChangeOfLifeSavety.go      |   63 +-
 ...ParameterChangeOfLifeSavetyListOfAlarmValues.go |   47 +-
 ...hangeOfLifeSavetyListOfLifeSavetyAlarmValues.go |   47 +-
 .../model/BACnetEventParameterChangeOfState.go     |   51 +-
 ...ACnetEventParameterChangeOfStateListOfValues.go |   47 +-
 .../BACnetEventParameterChangeOfStatusFlags.go     |   51 +-
 .../model/BACnetEventParameterChangeOfTimer.go     |   57 +-
 .../BACnetEventParameterChangeOfTimerAlarmValue.go |   47 +-
 .../model/BACnetEventParameterChangeOfValue.go     |   51 +-
 ...BACnetEventParameterChangeOfValueCivCriteria.go |   42 +-
 ...ventParameterChangeOfValueCivCriteriaBitmask.go |   33 +-
 ...fValueCivCriteriaReferencedPropertyIncrement.go |   33 +-
 .../model/BACnetEventParameterCommandFailure.go    |   51 +-
 .../model/BACnetEventParameterDoubleOutOfRange.go  |   63 +-
 .../model/BACnetEventParameterExtended.go          |   57 +-
 .../BACnetEventParameterExtendedParameters.go      |  133 +-
 .../model/BACnetEventParameterFloatingLimit.go     |   69 +-
 .../readwrite/model/BACnetEventParameterNone.go    |   33 +-
 .../model/BACnetEventParameterOutOfRange.go        |   63 +-
 .../model/BACnetEventParameterSignedOutOfRange.go  |   63 +-
 .../BACnetEventParameterUnsignedOutOfRange.go      |   63 +-
 .../model/BACnetEventParameterUnsignedRange.go     |   57 +-
 .../readwrite/model/BACnetEventPriorities.go       |   53 +-
 .../bacnetip/readwrite/model/BACnetEventState.go   |   17 +-
 .../readwrite/model/BACnetEventStateTagged.go      |   33 +-
 .../readwrite/model/BACnetEventSummariesList.go    |   47 +-
 .../bacnetip/readwrite/model/BACnetEventSummary.go |   65 +-
 .../readwrite/model/BACnetEventTimestamps.go       |   41 +-
 .../model/BACnetEventTimestampsEnclosed.go         |   41 +-
 .../readwrite/model/BACnetEventTransitionBits.go   |   17 +-
 .../model/BACnetEventTransitionBitsTagged.go       |   47 +-
 .../bacnetip/readwrite/model/BACnetEventType.go    |   17 +-
 .../readwrite/model/BACnetEventTypeTagged.go       |   33 +-
 .../readwrite/model/BACnetFaultParameter.go        |   42 +-
 .../BACnetFaultParameterFaultCharacterString.go    |   45 +-
 ...rameterFaultCharacterStringListOfFaultValues.go |   47 +-
 .../model/BACnetFaultParameterFaultExtended.go     |   57 +-
 .../BACnetFaultParameterFaultExtendedParameters.go |   47 +-
 ...etFaultParameterFaultExtendedParametersEntry.go |   58 +-
 ...rameterFaultExtendedParametersEntryBitString.go |   33 +-
 ...ParameterFaultExtendedParametersEntryBoolean.go |   33 +-
 ...rFaultExtendedParametersEntryCharacterString.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryDate.go |   33 +-
 ...tParameterFaultExtendedParametersEntryDouble.go |   33 +-
 ...ameterFaultExtendedParametersEntryEnumerated.go |   33 +-
 ...ParameterFaultExtendedParametersEntryInteger.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryNull.go |   33 +-
 ...FaultExtendedParametersEntryObjectidentifier.go |   33 +-
 ...meterFaultExtendedParametersEntryOctetString.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryReal.go |   33 +-
 ...rameterFaultExtendedParametersEntryReference.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryTime.go |   33 +-
 ...arameterFaultExtendedParametersEntryUnsigned.go |   33 +-
 .../model/BACnetFaultParameterFaultLifeSafety.go   |   51 +-
 ...ultParameterFaultLifeSafetyListOfFaultValues.go |   47 +-
 .../model/BACnetFaultParameterFaultListed.go       |   45 +-
 .../model/BACnetFaultParameterFaultOutOfRange.go   |   51 +-
 ...tFaultParameterFaultOutOfRangeMaxNormalValue.go |   46 +-
 ...ParameterFaultOutOfRangeMaxNormalValueDouble.go |   33 +-
 ...arameterFaultOutOfRangeMaxNormalValueInteger.go |   33 +-
 ...ltParameterFaultOutOfRangeMaxNormalValueReal.go |   33 +-
 ...rameterFaultOutOfRangeMaxNormalValueUnsigned.go |   33 +-
 ...tFaultParameterFaultOutOfRangeMinNormalValue.go |   46 +-
 ...ParameterFaultOutOfRangeMinNormalValueDouble.go |   33 +-
 ...arameterFaultOutOfRangeMinNormalValueInteger.go |   33 +-
 ...ltParameterFaultOutOfRangeMinNormalValueReal.go |   33 +-
 ...rameterFaultOutOfRangeMinNormalValueUnsigned.go |   33 +-
 .../model/BACnetFaultParameterFaultState.go        |   45 +-
 ...netFaultParameterFaultStateListOfFaultValues.go |   47 +-
 .../model/BACnetFaultParameterFaultStatusFlags.go  |   45 +-
 .../readwrite/model/BACnetFaultParameterNone.go    |   33 +-
 .../bacnetip/readwrite/model/BACnetFaultType.go    |   17 +-
 .../readwrite/model/BACnetFaultTypeTagged.go       |   29 +-
 .../readwrite/model/BACnetFileAccessMethod.go      |   17 +-
 .../model/BACnetFileAccessMethodTagged.go          |   29 +-
 .../readwrite/model/BACnetGroupChannelValue.go     |   41 +-
 .../readwrite/model/BACnetGroupChannelValueList.go |   47 +-
 .../bacnetip/readwrite/model/BACnetHostAddress.go  |   32 +-
 .../readwrite/model/BACnetHostAddressEnclosed.go   |   41 +-
 .../readwrite/model/BACnetHostAddressIpAddress.go  |   33 +-
 .../readwrite/model/BACnetHostAddressName.go       |   33 +-
 .../readwrite/model/BACnetHostAddressNull.go       |   33 +-
 .../bacnetip/readwrite/model/BACnetHostNPort.go    |   35 +-
 .../readwrite/model/BACnetHostNPortEnclosed.go     |   41 +-
 .../bacnetip/readwrite/model/BACnetIPMode.go       |   17 +-
 .../bacnetip/readwrite/model/BACnetIPModeTagged.go |   29 +-
 .../readwrite/model/BACnetKeyIdentifier.go         |   35 +-
 .../readwrite/model/BACnetLandingCallStatus.go     |   41 +-
 .../model/BACnetLandingCallStatusCommand.go        |   30 +-
 .../BACnetLandingCallStatusCommandDestination.go   |   33 +-
 .../BACnetLandingCallStatusCommandDirection.go     |   33 +-
 .../readwrite/model/BACnetLandingDoorStatus.go     |   29 +-
 .../BACnetLandingDoorStatusLandingDoorsList.go     |   47 +-
 ...BACnetLandingDoorStatusLandingDoorsListEntry.go |   35 +-
 .../readwrite/model/BACnetLifeSafetyMode.go        |   17 +-
 .../readwrite/model/BACnetLifeSafetyModeTagged.go  |   33 +-
 .../readwrite/model/BACnetLifeSafetyOperation.go   |   17 +-
 .../model/BACnetLifeSafetyOperationTagged.go       |   33 +-
 .../readwrite/model/BACnetLifeSafetyState.go       |   17 +-
 .../readwrite/model/BACnetLifeSafetyStateTagged.go |   33 +-
 .../readwrite/model/BACnetLiftCarCallList.go       |   29 +-
 .../model/BACnetLiftCarCallListFloorList.go        |   47 +-
 .../readwrite/model/BACnetLiftCarDirection.go      |   17 +-
 .../model/BACnetLiftCarDirectionTagged.go          |   33 +-
 .../readwrite/model/BACnetLiftCarDoorCommand.go    |   17 +-
 .../model/BACnetLiftCarDoorCommandTagged.go        |   29 +-
 .../readwrite/model/BACnetLiftCarDriveStatus.go    |   17 +-
 .../model/BACnetLiftCarDriveStatusTagged.go        |   33 +-
 .../bacnetip/readwrite/model/BACnetLiftCarMode.go  |   17 +-
 .../readwrite/model/BACnetLiftCarModeTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetLiftFault.go    |   17 +-
 .../readwrite/model/BACnetLiftFaultTagged.go       |   33 +-
 .../readwrite/model/BACnetLiftGroupMode.go         |   17 +-
 .../readwrite/model/BACnetLiftGroupModeTagged.go   |   29 +-
 .../readwrite/model/BACnetLightingCommand.go       |   59 +-
 .../model/BACnetLightingCommandEnclosed.go         |   41 +-
 .../readwrite/model/BACnetLightingInProgress.go    |   17 +-
 .../model/BACnetLightingInProgressTagged.go        |   29 +-
 .../readwrite/model/BACnetLightingOperation.go     |   17 +-
 .../model/BACnetLightingOperationTagged.go         |   33 +-
 .../readwrite/model/BACnetLightingTransition.go    |   17 +-
 .../model/BACnetLightingTransitionTagged.go        |   33 +-
 .../bacnetip/readwrite/model/BACnetLimitEnable.go  |   17 +-
 .../readwrite/model/BACnetLimitEnableTagged.go     |   43 +-
 .../bacnetip/readwrite/model/BACnetLockStatus.go   |   17 +-
 .../readwrite/model/BACnetLockStatusTagged.go      |   29 +-
 .../bacnetip/readwrite/model/BACnetLogData.go      |   44 +-
 .../readwrite/model/BACnetLogDataLogData.go        |   51 +-
 .../readwrite/model/BACnetLogDataLogDataEntry.go   |   44 +-
 .../model/BACnetLogDataLogDataEntryAnyValue.go     |   33 +-
 .../BACnetLogDataLogDataEntryBitStringValue.go     |   33 +-
 .../model/BACnetLogDataLogDataEntryBooleanValue.go |   33 +-
 .../BACnetLogDataLogDataEntryEnumeratedValue.go    |   33 +-
 .../model/BACnetLogDataLogDataEntryFailure.go      |   33 +-
 .../model/BACnetLogDataLogDataEntryIntegerValue.go |   33 +-
 .../model/BACnetLogDataLogDataEntryNullValue.go    |   33 +-
 .../model/BACnetLogDataLogDataEntryRealValue.go    |   33 +-
 .../BACnetLogDataLogDataEntryUnsignedValue.go      |   33 +-
 .../model/BACnetLogDataLogDataTimeChange.go        |   33 +-
 .../readwrite/model/BACnetLogDataLogStatus.go      |   33 +-
 .../readwrite/model/BACnetLogMultipleRecord.go     |   35 +-
 .../bacnetip/readwrite/model/BACnetLogRecord.go    |   41 +-
 .../readwrite/model/BACnetLogRecordLogDatum.go     |   60 +-
 .../model/BACnetLogRecordLogDatumAnyValue.go       |   33 +-
 .../model/BACnetLogRecordLogDatumBitStringValue.go |   33 +-
 .../model/BACnetLogRecordLogDatumBooleanValue.go   |   33 +-
 .../BACnetLogRecordLogDatumEnumeratedValue.go      |   33 +-
 .../model/BACnetLogRecordLogDatumFailure.go        |   33 +-
 .../model/BACnetLogRecordLogDatumIntegerValue.go   |   33 +-
 .../model/BACnetLogRecordLogDatumLogStatus.go      |   33 +-
 .../model/BACnetLogRecordLogDatumNullValue.go      |   33 +-
 .../model/BACnetLogRecordLogDatumRealValue.go      |   33 +-
 .../model/BACnetLogRecordLogDatumTimeChange.go     |   33 +-
 .../model/BACnetLogRecordLogDatumUnsignedValue.go  |   33 +-
 .../bacnetip/readwrite/model/BACnetLogStatus.go    |   17 +-
 .../readwrite/model/BACnetLogStatusTagged.go       |   47 +-
 .../bacnetip/readwrite/model/BACnetLoggingType.go  |   17 +-
 .../readwrite/model/BACnetLoggingTypeTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetMaintenance.go  |   17 +-
 .../readwrite/model/BACnetMaintenanceTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetNameValue.go    |   35 +-
 .../readwrite/model/BACnetNameValueCollection.go   |   47 +-
 .../readwrite/model/BACnetNetworkNumberQuality.go  |   17 +-
 .../model/BACnetNetworkNumberQualityTagged.go      |   29 +-
 .../readwrite/model/BACnetNetworkPortCommand.go    |   17 +-
 .../model/BACnetNetworkPortCommandTagged.go        |   33 +-
 .../readwrite/model/BACnetNetworkSecurityPolicy.go |   35 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |   17 +-
 .../readwrite/model/BACnetNetworkTypeTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |   17 +-
 .../readwrite/model/BACnetNodeTypeTagged.go        |   29 +-
 .../model/BACnetNotificationParameters.go          |   78 +-
 .../BACnetNotificationParametersAccessEvent.go     |   75 +-
 .../BACnetNotificationParametersBufferReady.go     |   57 +-
 ...ACnetNotificationParametersChangeOfBitString.go |   51 +-
 ...otificationParametersChangeOfCharacterString.go |   57 +-
 ...tNotificationParametersChangeOfDiscreteValue.go |   51 +-
 ...ationParametersChangeOfDiscreteValueNewValue.go |   62 +-
 ...rametersChangeOfDiscreteValueNewValueBoolean.go |   33 +-
 ...ChangeOfDiscreteValueNewValueCharacterString.go |   33 +-
 ...ametersChangeOfDiscreteValueNewValueDatetime.go |   33 +-
 ...etersChangeOfDiscreteValueNewValueEnumerated.go |   33 +-
 ...rametersChangeOfDiscreteValueNewValueInteger.go |   33 +-
 ...hangeOfDiscreteValueNewValueObjectidentifier.go |   33 +-
 ...metersChangeOfDiscreteValueNewValueOctetDate.go |   33 +-
 ...tersChangeOfDiscreteValueNewValueOctetString.go |   33 +-
 ...metersChangeOfDiscreteValueNewValueOctetTime.go |   33 +-
 ...ametersChangeOfDiscreteValueNewValueUnsigned.go |   33 +-
 ...CnetNotificationParametersChangeOfLifeSafety.go |   63 +-
 ...netNotificationParametersChangeOfReliability.go |   57 +-
 .../BACnetNotificationParametersChangeOfState.go   |   51 +-
 ...netNotificationParametersChangeOfStatusFlags.go |   51 +-
 .../BACnetNotificationParametersChangeOfTimer.go   |   75 +-
 .../BACnetNotificationParametersChangeOfValue.go   |   51 +-
 ...tNotificationParametersChangeOfValueNewValue.go |   42 +-
 ...onParametersChangeOfValueNewValueChangedBits.go |   33 +-
 ...nParametersChangeOfValueNewValueChangedValue.go |   33 +-
 .../BACnetNotificationParametersCommandFailure.go  |   57 +-
 ...BACnetNotificationParametersComplexEventType.go |   33 +-
 ...BACnetNotificationParametersDoubleOutOfRange.go |   63 +-
 .../model/BACnetNotificationParametersExtended.go  |   57 +-
 ...CnetNotificationParametersExtendedParameters.go |  133 +-
 .../BACnetNotificationParametersFloatingLimit.go   |   63 +-
 .../BACnetNotificationParametersOutOfRange.go      |   63 +-
 ...BACnetNotificationParametersSignedOutOfRange.go |   63 +-
 ...CnetNotificationParametersUnsignedOutOfRange.go |   63 +-
 .../BACnetNotificationParametersUnsignedRange.go   |   57 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   17 +-
 .../readwrite/model/BACnetNotifyTypeTagged.go      |   29 +-
 .../model/BACnetObjectPropertyReference.go         |   41 +-
 .../model/BACnetObjectPropertyReferenceEnclosed.go |   41 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |   17 +-
 .../readwrite/model/BACnetObjectTypeTagged.go      |   33 +-
 .../readwrite/model/BACnetObjectTypesSupported.go  |   17 +-
 .../model/BACnetObjectTypesSupportedTagged.go      |   75 +-
 .../bacnetip/readwrite/model/BACnetOpeningTag.go   |   29 +-
 .../readwrite/model/BACnetOptionalBinaryPV.go      |   30 +-
 .../readwrite/model/BACnetOptionalBinaryPVNull.go  |   33 +-
 .../readwrite/model/BACnetOptionalBinaryPVValue.go |   33 +-
 .../model/BACnetOptionalCharacterString.go         |   30 +-
 .../model/BACnetOptionalCharacterStringNull.go     |   33 +-
 .../model/BACnetOptionalCharacterStringValue.go    |   33 +-
 .../bacnetip/readwrite/model/BACnetOptionalREAL.go |   30 +-
 .../readwrite/model/BACnetOptionalREALNull.go      |   33 +-
 .../readwrite/model/BACnetOptionalREALValue.go     |   33 +-
 .../readwrite/model/BACnetOptionalUnsigned.go      |   30 +-
 .../readwrite/model/BACnetOptionalUnsignedNull.go  |   33 +-
 .../readwrite/model/BACnetOptionalUnsignedValue.go |   33 +-
 .../bacnetip/readwrite/model/BACnetPolarity.go     |   17 +-
 .../readwrite/model/BACnetPolarityTagged.go        |   29 +-
 .../readwrite/model/BACnetPortPermission.go        |   35 +-
 .../bacnetip/readwrite/model/BACnetPrescale.go     |   35 +-
 .../readwrite/model/BACnetPriorityArray.go         |  117 +-
 .../readwrite/model/BACnetPriorityValue.go         |   60 +-
 .../model/BACnetPriorityValueBitString.go          |   33 +-
 .../readwrite/model/BACnetPriorityValueBoolean.go  |   33 +-
 .../model/BACnetPriorityValueCharacterString.go    |   33 +-
 .../model/BACnetPriorityValueConstructedValue.go   |   33 +-
 .../readwrite/model/BACnetPriorityValueDate.go     |   33 +-
 .../readwrite/model/BACnetPriorityValueDateTime.go |   33 +-
 .../readwrite/model/BACnetPriorityValueDouble.go   |   33 +-
 .../model/BACnetPriorityValueEnumerated.go         |   33 +-
 .../readwrite/model/BACnetPriorityValueInteger.go  |   33 +-
 .../readwrite/model/BACnetPriorityValueNull.go     |   33 +-
 .../model/BACnetPriorityValueObjectidentifier.go   |   33 +-
 .../model/BACnetPriorityValueOctetString.go        |   33 +-
 .../readwrite/model/BACnetPriorityValueReal.go     |   33 +-
 .../readwrite/model/BACnetPriorityValueTime.go     |   33 +-
 .../readwrite/model/BACnetPriorityValueUnsigned.go |   33 +-
 .../readwrite/model/BACnetProcessIdSelection.go    |   30 +-
 .../model/BACnetProcessIdSelectionNull.go          |   33 +-
 .../model/BACnetProcessIdSelectionValue.go         |   33 +-
 .../bacnetip/readwrite/model/BACnetProgramError.go |   17 +-
 .../readwrite/model/BACnetProgramErrorTagged.go    |   33 +-
 .../readwrite/model/BACnetProgramRequest.go        |   17 +-
 .../readwrite/model/BACnetProgramRequestTagged.go  |   29 +-
 .../bacnetip/readwrite/model/BACnetProgramState.go |   17 +-
 .../readwrite/model/BACnetProgramStateTagged.go    |   29 +-
 .../readwrite/model/BACnetPropertyAccessResult.go  |   53 +-
 .../BACnetPropertyAccessResultAccessResult.go      |   30 +-
 ...yAccessResultAccessResultPropertyAccessError.go |   33 +-
 ...ropertyAccessResultAccessResultPropertyValue.go |   33 +-
 .../readwrite/model/BACnetPropertyIdentifier.go    |   17 +-
 .../model/BACnetPropertyIdentifierTagged.go        |   33 +-
 .../readwrite/model/BACnetPropertyReference.go     |   35 +-
 .../model/BACnetPropertyReferenceEnclosed.go       |   41 +-
 .../model/BACnetPropertyStateActionUnknown.go      |   33 +-
 .../readwrite/model/BACnetPropertyStates.go        |  144 ++-
 .../BACnetPropertyStatesAccessCredentialDisable.go |   33 +-
 ...tPropertyStatesAccessCredentialDisableReason.go |   33 +-
 .../model/BACnetPropertyStatesAccessEvent.go       |   33 +-
 .../readwrite/model/BACnetPropertyStatesAction.go  |   33 +-
 .../BACnetPropertyStatesAuthenticationStatus.go    |   33 +-
 .../model/BACnetPropertyStatesBackupState.go       |   33 +-
 .../model/BACnetPropertyStatesBacnetIpMode.go      |   33 +-
 .../BACnetPropertyStatesBinaryLightningValue.go    |   33 +-
 .../model/BACnetPropertyStatesBinaryValue.go       |   33 +-
 .../readwrite/model/BACnetPropertyStatesBoolean.go |   33 +-
 .../model/BACnetPropertyStatesDoorAlarmState.go    |   33 +-
 .../model/BACnetPropertyStatesDoorSecuredStatus.go |   33 +-
 .../model/BACnetPropertyStatesDoorStatus.go        |   33 +-
 .../model/BACnetPropertyStatesDoorValue.go         |   33 +-
 .../model/BACnetPropertyStatesEnclosed.go          |   41 +-
 .../model/BACnetPropertyStatesEscalatorFault.go    |   33 +-
 .../model/BACnetPropertyStatesEscalatorMode.go     |   33 +-
 ...netPropertyStatesEscalatorOperationDirection.go |   33 +-
 .../model/BACnetPropertyStatesEventType.go         |   33 +-
 .../model/BACnetPropertyStatesExtendedValue.go     |   33 +-
 .../model/BACnetPropertyStatesFileAccessMethod.go  |   33 +-
 .../model/BACnetPropertyStatesIntegerValue.go      |   33 +-
 .../model/BACnetPropertyStatesLifeSafetyMode.go    |   33 +-
 .../BACnetPropertyStatesLifeSafetyOperations.go    |   33 +-
 .../model/BACnetPropertyStatesLifeSafetyState.go   |   33 +-
 .../model/BACnetPropertyStatesLiftCarDirection.go  |   33 +-
 .../BACnetPropertyStatesLiftCarDoorCommand.go      |   33 +-
 .../BACnetPropertyStatesLiftCarDriveStatus.go      |   33 +-
 .../model/BACnetPropertyStatesLiftCarMode.go       |   33 +-
 .../model/BACnetPropertyStatesLiftFault.go         |   33 +-
 .../model/BACnetPropertyStatesLiftGroupMode.go     |   33 +-
 .../BACnetPropertyStatesLightningInProgress.go     |   33 +-
 .../BACnetPropertyStatesLightningOperation.go      |   33 +-
 .../BACnetPropertyStatesLightningTransition.go     |   33 +-
 .../model/BACnetPropertyStatesLockStatus.go        |   33 +-
 .../model/BACnetPropertyStatesMaintenance.go       |   33 +-
 .../BACnetPropertyStatesNetworkNumberQuality.go    |   33 +-
 .../BACnetPropertyStatesNetworkPortCommand.go      |   33 +-
 .../model/BACnetPropertyStatesNetworkType.go       |   33 +-
 .../model/BACnetPropertyStatesNodeType.go          |   33 +-
 .../model/BACnetPropertyStatesNotifyType.go        |   33 +-
 .../model/BACnetPropertyStatesPolarity.go          |   33 +-
 .../model/BACnetPropertyStatesProgramChange.go     |   33 +-
 .../model/BACnetPropertyStatesProtocolLevel.go     |   33 +-
 .../model/BACnetPropertyStatesReasonForHalt.go     |   33 +-
 .../model/BACnetPropertyStatesReliability.go       |   33 +-
 .../model/BACnetPropertyStatesRestartReason.go     |   33 +-
 .../model/BACnetPropertyStatesSecurityLevel.go     |   33 +-
 .../model/BACnetPropertyStatesShedState.go         |   33 +-
 .../model/BACnetPropertyStatesSilencedState.go     |   33 +-
 .../readwrite/model/BACnetPropertyStatesState.go   |   33 +-
 .../model/BACnetPropertyStatesSystemStatus.go      |   33 +-
 .../model/BACnetPropertyStatesTimerState.go        |   33 +-
 .../model/BACnetPropertyStatesTimerTransition.go   |   33 +-
 .../readwrite/model/BACnetPropertyStatesUnits.go   |   33 +-
 .../model/BACnetPropertyStatesWriteStatus.go       |   33 +-
 .../model/BACnetPropertyStatesZoneOccupanyState.go |   33 +-
 .../readwrite/model/BACnetPropertyValue.go         |   47 +-
 .../readwrite/model/BACnetPropertyValues.go        |   47 +-
 .../model/BACnetPropertyWriteDefinition.go         |   47 +-
 .../readwrite/model/BACnetProtocolLevel.go         |   17 +-
 .../readwrite/model/BACnetProtocolLevelTagged.go   |   29 +-
 .../readwrite/model/BACnetReadAccessProperty.go    |   41 +-
 .../model/BACnetReadAccessPropertyReadResult.go    |   41 +-
 .../readwrite/model/BACnetReadAccessResult.go      |   35 +-
 .../model/BACnetReadAccessResultListOfResults.go   |   47 +-
 .../model/BACnetReadAccessSpecification.go         |   53 +-
 .../bacnetip/readwrite/model/BACnetRecipient.go    |   30 +-
 .../readwrite/model/BACnetRecipientAddress.go      |   33 +-
 .../readwrite/model/BACnetRecipientDevice.go       |   33 +-
 .../readwrite/model/BACnetRecipientEnclosed.go     |   41 +-
 .../readwrite/model/BACnetRecipientProcess.go      |   35 +-
 .../model/BACnetRecipientProcessEnclosed.go        |   41 +-
 .../bacnetip/readwrite/model/BACnetRejectReason.go |   17 +-
 .../readwrite/model/BACnetRejectReasonTagged.go    |   27 +-
 .../bacnetip/readwrite/model/BACnetRelationship.go |   17 +-
 .../readwrite/model/BACnetRelationshipTagged.go    |   33 +-
 .../bacnetip/readwrite/model/BACnetReliability.go  |   17 +-
 .../readwrite/model/BACnetReliabilityTagged.go     |   33 +-
 .../readwrite/model/BACnetRestartReason.go         |   17 +-
 .../readwrite/model/BACnetRestartReasonTagged.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetResultFlags.go  |   17 +-
 .../readwrite/model/BACnetResultFlagsTagged.go     |   47 +-
 .../bacnetip/readwrite/model/BACnetRouterEntry.go  |   47 +-
 .../readwrite/model/BACnetRouterEntryStatus.go     |   17 +-
 .../model/BACnetRouterEntryStatusTagged.go         |   29 +-
 .../bacnetip/readwrite/model/BACnetScale.go        |   30 +-
 .../readwrite/model/BACnetScaleFloatScale.go       |   33 +-
 .../readwrite/model/BACnetScaleIntegerScale.go     |   33 +-
 .../readwrite/model/BACnetSecurityKeySet.go        |   47 +-
 .../readwrite/model/BACnetSecurityKeySetKeyIds.go  |   47 +-
 .../readwrite/model/BACnetSecurityLevel.go         |   17 +-
 .../readwrite/model/BACnetSecurityLevelTagged.go   |   29 +-
 .../readwrite/model/BACnetSecurityPolicy.go        |   17 +-
 .../readwrite/model/BACnetSecurityPolicyTagged.go  |   29 +-
 .../bacnetip/readwrite/model/BACnetSegmentation.go |   17 +-
 .../readwrite/model/BACnetSegmentationTagged.go    |   29 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   58 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |   39 +-
 .../model/BACnetServiceAckAtomicReadFileRecord.go  |   65 +-
 .../model/BACnetServiceAckAtomicReadFileStream.go  |   39 +-
 ...BACnetServiceAckAtomicReadFileStreamOrRecord.go |   42 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   33 +-
 .../model/BACnetServiceAckAuthenticate.go          |   27 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   45 +-
 .../model/BACnetServiceAckCreateObject.go          |   33 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   45 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   57 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   39 +-
 .../model/BACnetServiceAckReadProperty.go          |   51 +-
 .../BACnetServiceAckReadPropertyConditional.go     |   27 +-
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   39 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   69 +-
 .../readwrite/model/BACnetServiceAckRequestKey.go  |   27 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   45 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   33 +-
 .../readwrite/model/BACnetServicesSupported.go     |   17 +-
 .../model/BACnetServicesSupportedTagged.go         |   75 +-
 .../readwrite/model/BACnetSetpointReference.go     |   29 +-
 .../bacnetip/readwrite/model/BACnetShedLevel.go    |   32 +-
 .../readwrite/model/BACnetShedLevelAmount.go       |   33 +-
 .../readwrite/model/BACnetShedLevelLevel.go        |   33 +-
 .../readwrite/model/BACnetShedLevelPercent.go      |   33 +-
 .../bacnetip/readwrite/model/BACnetShedState.go    |   17 +-
 .../readwrite/model/BACnetShedStateTagged.go       |   29 +-
 .../readwrite/model/BACnetSilencedState.go         |   17 +-
 .../readwrite/model/BACnetSilencedStateTagged.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetSpecialEvent.go |   41 +-
 .../model/BACnetSpecialEventListOfTimeValues.go    |   47 +-
 .../readwrite/model/BACnetSpecialEventPeriod.go    |   30 +-
 .../model/BACnetSpecialEventPeriodCalendarEntry.go |   33 +-
 .../BACnetSpecialEventPeriodCalendarReference.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetStatusFlags.go  |   17 +-
 .../readwrite/model/BACnetStatusFlagsTagged.go     |   51 +-
 .../bacnetip/readwrite/model/BACnetTagHeader.go    |   47 +-
 .../readwrite/model/BACnetTagPayloadBitString.go   |   46 +-
 .../readwrite/model/BACnetTagPayloadBoolean.go     |   35 +-
 .../model/BACnetTagPayloadCharacterString.go       |   31 +-
 .../readwrite/model/BACnetTagPayloadDate.go        |   67 +-
 .../readwrite/model/BACnetTagPayloadDouble.go      |   23 +-
 .../readwrite/model/BACnetTagPayloadEnumerated.go  |   27 +-
 .../model/BACnetTagPayloadObjectIdentifier.go      |   27 +-
 .../readwrite/model/BACnetTagPayloadOctetString.go |   23 +-
 .../readwrite/model/BACnetTagPayloadReal.go        |   23 +-
 .../model/BACnetTagPayloadSignedInteger.go         |   59 +-
 .../readwrite/model/BACnetTagPayloadTime.go        |   43 +-
 .../model/BACnetTagPayloadUnsignedInteger.go       |   59 +-
 .../bacnetip/readwrite/model/BACnetTimeStamp.go    |   32 +-
 .../readwrite/model/BACnetTimeStampDateTime.go     |   33 +-
 .../readwrite/model/BACnetTimeStampEnclosed.go     |   41 +-
 .../readwrite/model/BACnetTimeStampSequence.go     |   33 +-
 .../readwrite/model/BACnetTimeStampTime.go         |   33 +-
 .../readwrite/model/BACnetTimeStampsEnclosed.go    |   47 +-
 .../bacnetip/readwrite/model/BACnetTimeValue.go    |   35 +-
 .../bacnetip/readwrite/model/BACnetTimerState.go   |   17 +-
 .../readwrite/model/BACnetTimerStateChangeValue.go |   64 +-
 .../model/BACnetTimerStateChangeValueBitString.go  |   33 +-
 .../model/BACnetTimerStateChangeValueBoolean.go    |   33 +-
 .../BACnetTimerStateChangeValueCharacterString.go  |   33 +-
 .../BACnetTimerStateChangeValueConstructedValue.go |   33 +-
 .../model/BACnetTimerStateChangeValueDate.go       |   33 +-
 .../model/BACnetTimerStateChangeValueDateTime.go   |   33 +-
 .../model/BACnetTimerStateChangeValueDouble.go     |   33 +-
 .../model/BACnetTimerStateChangeValueEnumerated.go |   33 +-
 .../model/BACnetTimerStateChangeValueInteger.go    |   33 +-
 .../BACnetTimerStateChangeValueLightingCommand.go  |   33 +-
 .../model/BACnetTimerStateChangeValueNoValue.go    |   33 +-
 .../model/BACnetTimerStateChangeValueNull.go       |   33 +-
 .../BACnetTimerStateChangeValueObjectidentifier.go |   33 +-
 .../BACnetTimerStateChangeValueOctetString.go      |   33 +-
 .../model/BACnetTimerStateChangeValueReal.go       |   33 +-
 .../model/BACnetTimerStateChangeValueTime.go       |   33 +-
 .../model/BACnetTimerStateChangeValueUnsigned.go   |   33 +-
 .../readwrite/model/BACnetTimerStateTagged.go      |   29 +-
 .../readwrite/model/BACnetTimerTransition.go       |   17 +-
 .../readwrite/model/BACnetTimerTransitionTagged.go |   29 +-
 .../model/BACnetUnconfirmedServiceChoice.go        |   17 +-
 .../model/BACnetUnconfirmedServiceChoiceTagged.go  |   29 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   50 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   51 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   45 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   39 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   39 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   57 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   57 +-
 ...edServiceRequestUnconfirmedEventNotification.go |  105 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   45 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   51 +-
 .../BACnetUnconfirmedServiceRequestUnknown.go      |   27 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   45 +-
 .../BACnetUnconfirmedServiceRequestWhoHasObject.go |   30 +-
 ...onfirmedServiceRequestWhoHasObjectIdentifier.go |   33 +-
 ...netUnconfirmedServiceRequestWhoHasObjectName.go |   33 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   39 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   51 +-
 .../bacnetip/readwrite/model/BACnetVMACEntry.go    |   35 +-
 .../bacnetip/readwrite/model/BACnetVTClass.go      |   17 +-
 .../readwrite/model/BACnetVTClassTagged.go         |   33 +-
 .../bacnetip/readwrite/model/BACnetVTSession.go    |   41 +-
 .../bacnetip/readwrite/model/BACnetValueSource.go  |   32 +-
 .../readwrite/model/BACnetValueSourceAddress.go    |   33 +-
 .../readwrite/model/BACnetValueSourceNone.go       |   33 +-
 .../readwrite/model/BACnetValueSourceObject.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetVendorId.go     |   17 +-
 .../readwrite/model/BACnetVendorIdTagged.go        |   33 +-
 .../bacnetip/readwrite/model/BACnetWeekNDay.go     |   23 +-
 .../readwrite/model/BACnetWeekNDayTagged.go        |   85 +-
 .../model/BACnetWriteAccessSpecification.go        |   53 +-
 .../bacnetip/readwrite/model/BACnetWriteStatus.go  |   17 +-
 .../readwrite/model/BACnetWriteStatusTagged.go     |   29 +-
 plc4go/protocols/bacnetip/readwrite/model/BVLC.go  |   54 +-
 .../model/BVLCBroadcastDistributionTableEntry.go   |   46 +-
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   39 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   33 +-
 .../readwrite/model/BVLCForeignDeviceTableEntry.go |   35 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |   45 +-
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |   33 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |   33 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   27 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   39 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   27 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   39 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   27 +-
 .../bacnetip/readwrite/model/BVLCResult.go         |   31 +-
 .../bacnetip/readwrite/model/BVLCResultCode.go     |   17 +-
 .../readwrite/model/BVLCResultCodeTagged.go        |   29 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   27 +-
 .../model/BVLCWriteBroadcastDistributionTable.go   |   39 +-
 .../bacnetip/readwrite/model/BacnetConstants.go    |   23 +-
 .../bacnetip/readwrite/model/ChangeListAddError.go |   39 +-
 .../readwrite/model/ChangeListRemoveError.go       |   39 +-
 .../model/ConfirmedEventNotificationRequest.go     |  101 +-
 .../model/ConfirmedPrivateTransferError.go         |   51 +-
 .../bacnetip/readwrite/model/CreateObjectError.go  |   39 +-
 plc4go/protocols/bacnetip/readwrite/model/Error.go |   35 +-
 .../bacnetip/readwrite/model/ErrorClass.go         |   17 +-
 .../bacnetip/readwrite/model/ErrorClassTagged.go   |   33 +-
 .../bacnetip/readwrite/model/ErrorCode.go          |   17 +-
 .../bacnetip/readwrite/model/ErrorCodeTagged.go    |   33 +-
 .../bacnetip/readwrite/model/ErrorEnclosed.go      |   41 +-
 .../readwrite/model/ListOfCovNotifications.go      |   53 +-
 .../readwrite/model/ListOfCovNotificationsList.go  |   47 +-
 .../readwrite/model/ListOfCovNotificationsValue.go |   47 +-
 .../readwrite/model/MaxApduLengthAccepted.go       |   17 +-
 .../readwrite/model/MaxApduLengthAcceptedTagged.go |  238 ----
 .../readwrite/model/MaxSegmentsAccepted.go         |   17 +-
 .../readwrite/model/MaxSegmentsAcceptedTagged.go   |  238 ----
 plc4go/protocols/bacnetip/readwrite/model/NLM.go   |   68 +-
 .../readwrite/model/NLMChallengeRequest.go         |   27 +-
 .../model/NLMDisconnectConnectionToNetwork.go      |   27 +-
 .../model/NLMEstablishConnectionToNetwork.go       |   27 +-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |   30 +-
 .../readwrite/model/NLMICouldBeRouterToNetwork.go  |   27 +-
 .../readwrite/model/NLMInitalizeRoutingTable.go    |   53 +-
 .../readwrite/model/NLMInitalizeRoutingTableAck.go |   53 +-
 .../model/NLMInitalizeRoutingTablePortMapping.go   |   23 +-
 .../bacnetip/readwrite/model/NLMNetworkNumberIs.go |   27 +-
 .../readwrite/model/NLMRejectRouterToNetwork.go    |   31 +-
 .../model/NLMRejectRouterToNetworkRejectReason.go  |   17 +-
 .../readwrite/model/NLMRequestKeyUpdate.go         |   27 +-
 .../readwrite/model/NLMRequestMasterKey.go         |   27 +-
 .../bacnetip/readwrite/model/NLMReserved.go        |   27 +-
 .../readwrite/model/NLMRouterAvailableToNetwork.go |   30 +-
 .../readwrite/model/NLMRouterBusyToNetwork.go      |   30 +-
 .../bacnetip/readwrite/model/NLMSecurityPayload.go |   27 +-
 .../readwrite/model/NLMSecurityResponse.go         |   31 +-
 .../bacnetip/readwrite/model/NLMSetMasterKey.go    |   33 +-
 .../readwrite/model/NLMUpdateKeyDistributionKey.go |   33 +-
 .../bacnetip/readwrite/model/NLMUpdateKeyUpdate.go |   84 +-
 .../model/NLMUpdateKeyUpdateControlFlags.go        |   23 +-
 .../readwrite/model/NLMUpdateKeyUpdateKeyEntry.go  |   23 +-
 .../readwrite/model/NLMVendorProprietaryMessage.go |   31 +-
 .../readwrite/model/NLMWhatIsNetworkNumber.go      |   27 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |   27 +-
 plc4go/protocols/bacnetip/readwrite/model/NPDU.go  |   76 +-
 .../bacnetip/readwrite/model/NPDUControl.go        |   27 +-
 .../readwrite/model/NPDUNetworkPriority.go         |   17 +-
 .../readwrite/model/NPDUNetworkPriorityTagged.go   |   29 +-
 .../readwrite/model/SecurityResponseCode.go        |   17 +-
 .../readwrite/model/SecurityResponseCodeTagged.go  |   29 +-
 .../model/SubscribeCOVPropertyMultipleError.go     |   39 +-
 ...PropertyMultipleErrorFirstFailedSubscription.go |   53 +-
 .../protocols/bacnetip/readwrite/model/TagClass.go |   17 +-
 .../bacnetip/readwrite/model/VTCloseError.go       |   39 +-
 .../VTCloseErrorListOfVTSessionIdentifiers.go      |   47 +-
 .../readwrite/model/WritePropertyMultipleError.go  |   39 +-
 plc4go/protocols/cbus/readwrite/ParserHelper.go    |  156 +--
 plc4go/protocols/cbus/readwrite/XmlParserHelper.go |  160 +--
 .../cbus/readwrite/model/AccessControlCategory.go  |   17 +-
 .../readwrite/model/AccessControlCommandType.go    |   17 +-
 .../model/AccessControlCommandTypeContainer.go     |   17 +-
 .../cbus/readwrite/model/AccessControlData.go      |   44 +-
 .../model/AccessControlDataAccessPointClosed.go    |   27 +-
 .../AccessControlDataAccessPointForcedOpen.go      |   27 +-
 .../model/AccessControlDataAccessPointLeftOpen.go  |   27 +-
 .../model/AccessControlDataCloseAccessPoint.go     |   27 +-
 .../model/AccessControlDataInvalidAccessRequest.go |   31 +-
 .../model/AccessControlDataLockAccessPoint.go      |   27 +-
 .../model/AccessControlDataRequestToExit.go        |   27 +-
 .../model/AccessControlDataValidAccessRequest.go   |   31 +-
 .../cbus/readwrite/model/AccessControlDirection.go |   17 +-
 .../readwrite/model/AirConditioningCommandType.go  |   17 +-
 .../model/AirConditioningCommandTypeContainer.go   |   17 +-
 .../cbus/readwrite/model/AirConditioningData.go    |   66 +-
 .../AirConditioningDataHumidityScheduleEntry.go    |   57 +-
 .../model/AirConditioningDataHvacScheduleEntry.go  |   57 +-
 .../readwrite/model/AirConditioningDataRefresh.go  |   27 +-
 ...irConditioningDataSetHumidityLowerGuardLimit.go |   45 +-
 .../AirConditioningDataSetHumiditySetbackLimit.go  |   45 +-
 ...irConditioningDataSetHumidityUpperGuardLimit.go |   45 +-
 .../AirConditioningDataSetHvacLowerGuardLimit.go   |   45 +-
 .../AirConditioningDataSetHvacSetbackLimit.go      |   45 +-
 .../AirConditioningDataSetHvacUpperGuardLimit.go   |   45 +-
 .../AirConditioningDataSetPlantHumidityLevel.go    |   61 +-
 .../model/AirConditioningDataSetPlantHvacLevel.go  |   61 +-
 .../model/AirConditioningDataSetZoneGroupOff.go    |   27 +-
 .../model/AirConditioningDataSetZoneGroupOn.go     |   27 +-
 .../AirConditioningDataSetZoneHumidityMode.go      |   61 +-
 .../model/AirConditioningDataSetZoneHvacMode.go    |   61 +-
 .../model/AirConditioningDataZoneHumidity.go       |   43 +-
 .../AirConditioningDataZoneHumidityPlantStatus.go  |   47 +-
 .../AirConditioningDataZoneHvacPlantStatus.go      |   47 +-
 .../model/AirConditioningDataZoneTemperature.go    |   43 +-
 plc4go/protocols/cbus/readwrite/model/Alpha.go     |   23 +-
 .../cbus/readwrite/model/ApplicationAddress1.go    |   27 +-
 .../cbus/readwrite/model/ApplicationAddress2.go    |   27 +-
 .../cbus/readwrite/model/ApplicationId.go          |   17 +-
 .../cbus/readwrite/model/ApplicationIdContainer.go |   17 +-
 plc4go/protocols/cbus/readwrite/model/Attribute.go |   17 +-
 .../cbus/readwrite/model/BaudRateSelector.go       |   17 +-
 .../cbus/readwrite/model/BridgeAddress.go          |   23 +-
 .../cbus/readwrite/model/CALCommandType.go         |   17 +-
 .../readwrite/model/CALCommandTypeContainer.go     |   17 +-
 plc4go/protocols/cbus/readwrite/model/CALData.go   |   58 +-
 .../cbus/readwrite/model/CALDataAcknowledge.go     |   31 +-
 .../cbus/readwrite/model/CALDataGetStatus.go       |   31 +-
 .../cbus/readwrite/model/CALDataIdentify.go        |   31 +-
 .../cbus/readwrite/model/CALDataIdentifyReply.go   |   37 +-
 .../cbus/readwrite/model/CALDataRecall.go          |   31 +-
 .../protocols/cbus/readwrite/model/CALDataReply.go |   37 +-
 .../protocols/cbus/readwrite/model/CALDataReset.go |   27 +-
 .../cbus/readwrite/model/CALDataStatus.go          |   57 +-
 .../cbus/readwrite/model/CALDataStatusExtended.go  |   94 +-
 .../protocols/cbus/readwrite/model/CALDataWrite.go |   37 +-
 plc4go/protocols/cbus/readwrite/model/CALReply.go  |   30 +-
 .../protocols/cbus/readwrite/model/CALReplyLong.go |   55 +-
 .../cbus/readwrite/model/CALReplyShort.go          |   27 +-
 .../protocols/cbus/readwrite/model/CBusCommand.go  |   42 +-
 .../readwrite/model/CBusCommandDeviceManagement.go |   31 +-
 .../model/CBusCommandPointToMultiPoint.go          |   33 +-
 .../readwrite/model/CBusCommandPointToPoint.go     |   33 +-
 .../model/CBusCommandPointToPointToMultiPoint.go   |   33 +-
 .../cbus/readwrite/model/CBusConstants.go          |   23 +-
 .../protocols/cbus/readwrite/model/CBusHeader.go   |   31 +-
 .../protocols/cbus/readwrite/model/CBusMessage.go  |   24 +-
 .../cbus/readwrite/model/CBusMessageToClient.go    |   33 +-
 .../cbus/readwrite/model/CBusMessageToServer.go    |   33 +-
 .../protocols/cbus/readwrite/model/CBusOptions.go  |   23 +-
 .../model/CBusPointToMultiPointCommand.go          |   24 +-
 .../model/CBusPointToMultiPointCommandNormal.go    |   37 +-
 .../model/CBusPointToMultiPointCommandStatus.go    |   33 +-
 .../readwrite/model/CBusPointToPointCommand.go     |   34 +-
 .../model/CBusPointToPointCommandDirect.go         |   33 +-
 .../model/CBusPointToPointCommandIndirect.go       |   45 +-
 .../model/CBusPointToPointToMultiPointCommand.go   |   36 +-
 .../CBusPointToPointToMultiPointCommandNormal.go   |   37 +-
 .../CBusPointToPointToMultiPointCommandStatus.go   |   33 +-
 .../cbus/readwrite/model/ChannelStatus.go          |   17 +-
 plc4go/protocols/cbus/readwrite/model/Checksum.go  |   23 +-
 .../model/ClockAndTimekeepingCommandType.go        |   17 +-
 .../ClockAndTimekeepingCommandTypeContainer.go     |   17 +-
 .../readwrite/model/ClockAndTimekeepingData.go     |   34 +-
 .../model/ClockAndTimekeepingDataRequestRefresh.go |   27 +-
 .../model/ClockAndTimekeepingDataUpdateDate.go     |   27 +-
 .../model/ClockAndTimekeepingDataUpdateTime.go     |   43 +-
 .../protocols/cbus/readwrite/model/Confirmation.go |   43 +-
 .../cbus/readwrite/model/ConfirmationType.go       |   17 +-
 .../cbus/readwrite/model/CustomManufacturer.go     |   23 +-
 .../protocols/cbus/readwrite/model/CustomTypes.go  |   23 +-
 .../cbus/readwrite/model/DestinationAddressType.go |   17 +-
 .../cbus/readwrite/model/DialInFailureReason.go    |   17 +-
 .../cbus/readwrite/model/DialOutFailureReason.go   |   17 +-
 .../readwrite/model/EnableControlCommandType.go    |   17 +-
 .../model/EnableControlCommandTypeContainer.go     |   17 +-
 .../cbus/readwrite/model/EnableControlData.go      |   31 +-
 .../protocols/cbus/readwrite/model/EncodedReply.go |   28 +-
 .../cbus/readwrite/model/EncodedReplyCALReply.go   |   33 +-
 .../readwrite/model/ErrorReportingCommandType.go   |   17 +-
 .../model/ErrorReportingCommandTypeContainer.go    |   17 +-
 .../cbus/readwrite/model/ErrorReportingData.go     |   30 +-
 .../readwrite/model/ErrorReportingDataGeneric.go   |   49 +-
 .../cbus/readwrite/model/ErrorReportingSeverity.go |   17 +-
 .../model/ErrorReportingSystemCategory.go          |   37 +-
 .../model/ErrorReportingSystemCategoryClass.go     |   17 +-
 .../model/ErrorReportingSystemCategoryType.go      |   32 +-
 ...gSystemCategoryTypeBuildingManagementSystems.go |   31 +-
 ...eportingSystemCategoryTypeClimateControllers.go |   31 +-
 ...stemCategoryTypeForBuildingManagementSystems.go |   17 +-
 ...rtingSystemCategoryTypeForClimateControllers.go |   17 +-
 ...rrorReportingSystemCategoryTypeForInputUnits.go |   17 +-
 ...rorReportingSystemCategoryTypeForOutputUnits.go |   17 +-
 ...orReportingSystemCategoryTypeForSupportUnits.go |   17 +-
 .../ErrorReportingSystemCategoryTypeInputUnits.go  |   31 +-
 .../ErrorReportingSystemCategoryTypeOutputUnits.go |   31 +-
 .../ErrorReportingSystemCategoryTypeReserved.go    |   27 +-
 ...ErrorReportingSystemCategoryTypeSupportUnits.go |   31 +-
 .../model/ErrorReportingSystemCategoryVariant.go   |   17 +-
 plc4go/protocols/cbus/readwrite/model/GAVState.go  |   17 +-
 .../cbus/readwrite/model/HVACAuxiliaryLevel.go     |   39 +-
 plc4go/protocols/cbus/readwrite/model/HVACError.go |   17 +-
 .../protocols/cbus/readwrite/model/HVACHumidity.go |   27 +-
 .../cbus/readwrite/model/HVACHumidityError.go      |   17 +-
 .../readwrite/model/HVACHumidityModeAndFlags.go    |   59 +-
 .../model/HVACHumidityModeAndFlagsMode.go          |   17 +-
 .../readwrite/model/HVACHumidityStatusFlags.go     |   31 +-
 .../cbus/readwrite/model/HVACHumidityType.go       |   17 +-
 .../cbus/readwrite/model/HVACModeAndFlags.go       |   59 +-
 .../cbus/readwrite/model/HVACModeAndFlagsMode.go   |   17 +-
 .../cbus/readwrite/model/HVACRawLevels.go          |   27 +-
 .../cbus/readwrite/model/HVACSensorStatus.go       |   17 +-
 .../cbus/readwrite/model/HVACStartTime.go          |   43 +-
 .../cbus/readwrite/model/HVACStatusFlags.go        |   31 +-
 .../cbus/readwrite/model/HVACTemperature.go        |   27 +-
 plc4go/protocols/cbus/readwrite/model/HVACType.go  |   17 +-
 .../protocols/cbus/readwrite/model/HVACZoneList.go |   27 +-
 .../cbus/readwrite/model/IdentifyReplyCommand.go   |   56 +-
 .../IdentifyReplyCommandCurrentSenseLevels.go      |   27 +-
 .../model/IdentifyReplyCommandDSIStatus.go         |   63 +-
 .../readwrite/model/IdentifyReplyCommandDelays.go  |   27 +-
 ...dentifyReplyCommandExtendedDiagnosticSummary.go |   39 +-
 .../model/IdentifyReplyCommandFirmwareVersion.go   |   27 +-
 .../IdentifyReplyCommandGAVPhysicalAddresses.go    |   27 +-
 .../model/IdentifyReplyCommandGAVValuesCurrent.go  |   27 +-
 .../model/IdentifyReplyCommandGAVValuesStored.go   |   27 +-
 .../model/IdentifyReplyCommandLogicalAssignment.go |   53 +-
 .../model/IdentifyReplyCommandManufacturer.go      |   27 +-
 .../model/IdentifyReplyCommandMaximumLevels.go     |   27 +-
 .../model/IdentifyReplyCommandMinimumLevels.go     |   27 +-
 .../IdentifyReplyCommandNetworkTerminalLevels.go   |   27 +-
 .../model/IdentifyReplyCommandNetworkVoltage.go    |   27 +-
 .../model/IdentifyReplyCommandOutputUnitSummary.go |   33 +-
 .../readwrite/model/IdentifyReplyCommandSummary.go |   27 +-
 .../model/IdentifyReplyCommandTerminalLevels.go    |   27 +-
 .../readwrite/model/IdentifyReplyCommandType.go    |   27 +-
 .../model/IdentifyReplyCommandUnitSummary.go       |   23 +-
 .../cbus/readwrite/model/InterfaceOptions1.go      |   23 +-
 .../model/InterfaceOptions1PowerUpSettings.go      |   29 +-
 .../cbus/readwrite/model/InterfaceOptions2.go      |   23 +-
 .../cbus/readwrite/model/InterfaceOptions3.go      |   23 +-
 plc4go/protocols/cbus/readwrite/model/Language.go  |   17 +-
 .../cbus/readwrite/model/LevelInformation.go       |   58 +-
 .../cbus/readwrite/model/LevelInformationAbsent.go |   27 +-
 .../readwrite/model/LevelInformationCorrupted.go   |   27 +-
 .../readwrite/model/LevelInformationNibblePair.go  |   17 +-
 .../cbus/readwrite/model/LevelInformationNormal.go |   43 +-
 .../cbus/readwrite/model/LightingCommandType.go    |   17 +-
 .../model/LightingCommandTypeContainer.go          |   17 +-
 .../cbus/readwrite/model/LightingCompatible.go     |   17 +-
 .../protocols/cbus/readwrite/model/LightingData.go |   38 +-
 .../cbus/readwrite/model/LightingDataLabel.go      |   37 +-
 .../cbus/readwrite/model/LightingDataOff.go        |   27 +-
 .../cbus/readwrite/model/LightingDataOn.go         |   27 +-
 .../readwrite/model/LightingDataRampToLevel.go     |   27 +-
 .../readwrite/model/LightingDataTerminateRamp.go   |   27 +-
 .../cbus/readwrite/model/LightingLabelFlavour.go   |   17 +-
 .../cbus/readwrite/model/LightingLabelOptions.go   |   31 +-
 .../cbus/readwrite/model/LightingLabelType.go      |   17 +-
 .../cbus/readwrite/model/LineOffHookReason.go      |   17 +-
 .../cbus/readwrite/model/LogicAssignment.go        |   23 +-
 .../cbus/readwrite/model/MeasurementCommandType.go |   17 +-
 .../model/MeasurementCommandTypeContainer.go       |   17 +-
 .../cbus/readwrite/model/MeasurementData.go        |   30 +-
 .../model/MeasurementDataChannelMeasurementData.go |   39 +-
 .../cbus/readwrite/model/MeasurementUnits.go       |   17 +-
 .../model/MediaTransportControlCommandType.go      |   17 +-
 .../MediaTransportControlCommandTypeContainer.go   |   17 +-
 .../readwrite/model/MediaTransportControlData.go   |   70 +-
 .../model/MediaTransportControlDataCategoryName.go |   27 +-
 ...ontrolDataEnumerateCategoriesSelectionTracks.go |   43 +-
 .../MediaTransportControlDataEnumerationsSize.go   |   43 +-
 .../model/MediaTransportControlDataFastForward.go  |   59 +-
 ...ediaTransportControlDataNextPreviousCategory.go |   35 +-
 ...diaTransportControlDataNextPreviousSelection.go |   35 +-
 .../MediaTransportControlDataNextPreviousTrack.go  |   35 +-
 .../model/MediaTransportControlDataPauseResume.go  |   35 +-
 .../model/MediaTransportControlDataPlay.go         |   27 +-
 .../model/MediaTransportControlDataRepeatOnOff.go  |   39 +-
 .../model/MediaTransportControlDataRewind.go       |   59 +-
 .../MediaTransportControlDataSelectionName.go      |   27 +-
 .../model/MediaTransportControlDataSetCategory.go  |   27 +-
 .../model/MediaTransportControlDataSetSelection.go |   27 +-
 .../model/MediaTransportControlDataSetTrack.go     |   27 +-
 .../model/MediaTransportControlDataShuffleOnOff.go |   35 +-
 .../MediaTransportControlDataSourcePowerControl.go |   35 +-
 .../MediaTransportControlDataStatusRequest.go      |   27 +-
 .../model/MediaTransportControlDataStop.go         |   27 +-
 .../model/MediaTransportControlDataTotalTracks.go  |   27 +-
 .../model/MediaTransportControlDataTrackName.go    |   27 +-
 .../cbus/readwrite/model/MeteringCommandType.go    |   17 +-
 .../model/MeteringCommandTypeContainer.go          |   17 +-
 .../protocols/cbus/readwrite/model/MeteringData.go |   48 +-
 .../model/MeteringDataDrinkingWaterConsumption.go  |   27 +-
 .../model/MeteringDataElectricityConsumption.go    |   27 +-
 .../readwrite/model/MeteringDataGasConsumption.go  |   27 +-
 .../model/MeteringDataMeasureDrinkingWater.go      |   27 +-
 .../model/MeteringDataMeasureElectricity.go        |   27 +-
 .../cbus/readwrite/model/MeteringDataMeasureGas.go |   27 +-
 .../cbus/readwrite/model/MeteringDataMeasureOil.go |   27 +-
 .../model/MeteringDataMeasureOtherWater.go         |   27 +-
 .../readwrite/model/MeteringDataOilConsumption.go  |   27 +-
 .../model/MeteringDataOtherWaterConsumption.go     |   27 +-
 .../protocols/cbus/readwrite/model/MonitoredSAL.go |   24 +-
 .../model/MonitoredSALLongFormSmartMode.go         |   59 +-
 .../cbus/readwrite/model/MonitoredSALReply.go      |   33 +-
 .../model/MonitoredSALShortFormBasicMode.go        |   37 +-
 .../model/NetworkProtocolControlInformation.go     |   23 +-
 .../protocols/cbus/readwrite/model/NetworkRoute.go |   55 +-
 .../protocols/cbus/readwrite/model/PanicStatus.go  |   35 +-
 plc4go/protocols/cbus/readwrite/model/Parameter.go |   17 +-
 .../cbus/readwrite/model/ParameterChange.go        |   23 +-
 .../cbus/readwrite/model/ParameterChangeReply.go   |   33 +-
 .../cbus/readwrite/model/ParameterType.go          |   17 +-
 .../cbus/readwrite/model/ParameterValue.go         |   42 +-
 .../model/ParameterValueApplicationAddress1.go     |   33 +-
 .../model/ParameterValueApplicationAddress2.go     |   33 +-
 .../model/ParameterValueBaudRateSelector.go        |   31 +-
 .../model/ParameterValueCustomManufacturer.go      |   33 +-
 .../readwrite/model/ParameterValueCustomTypes.go   |   33 +-
 .../model/ParameterValueInterfaceOptions1.go       |   33 +-
 ...rameterValueInterfaceOptions1PowerUpSettings.go |   33 +-
 .../model/ParameterValueInterfaceOptions2.go       |   33 +-
 .../model/ParameterValueInterfaceOptions3.go       |   33 +-
 .../cbus/readwrite/model/ParameterValueRaw.go      |   27 +-
 .../readwrite/model/ParameterValueSerialNumber.go  |   33 +-
 plc4go/protocols/cbus/readwrite/model/PowerUp.go   |   23 +-
 .../protocols/cbus/readwrite/model/PowerUpReply.go |   33 +-
 .../cbus/readwrite/model/PriorityClass.go          |   17 +-
 .../cbus/readwrite/model/ProtectionLevel.go        |   17 +-
 plc4go/protocols/cbus/readwrite/model/Reply.go     |   26 +-
 .../cbus/readwrite/model/ReplyEncodedReply.go      |   37 +-
 .../protocols/cbus/readwrite/model/ReplyNetwork.go |   35 +-
 .../cbus/readwrite/model/ReplyOrConfirmation.go    |   30 +-
 .../model/ReplyOrConfirmationConfirmation.go       |   39 +-
 .../readwrite/model/ReplyOrConfirmationReply.go    |   39 +-
 plc4go/protocols/cbus/readwrite/model/Request.go   |   56 +-
 .../cbus/readwrite/model/RequestCommand.go         |   43 +-
 .../cbus/readwrite/model/RequestContext.go         |   23 +-
 .../readwrite/model/RequestDirectCommandAccess.go  |   39 +-
 .../protocols/cbus/readwrite/model/RequestEmpty.go |   27 +-
 .../protocols/cbus/readwrite/model/RequestNull.go  |   27 +-
 .../cbus/readwrite/model/RequestObsolete.go        |   39 +-
 .../protocols/cbus/readwrite/model/RequestReset.go |   39 +-
 .../readwrite/model/RequestSmartConnectShortcut.go |   29 +-
 .../cbus/readwrite/model/RequestTermination.go     |   23 +-
 .../protocols/cbus/readwrite/model/RequestType.go  |   17 +-
 .../cbus/readwrite/model/ResponseTermination.go    |   23 +-
 plc4go/protocols/cbus/readwrite/model/SALData.go   |   72 +-
 .../cbus/readwrite/model/SALDataAccessControl.go   |   33 +-
 .../cbus/readwrite/model/SALDataAirConditioning.go |   33 +-
 .../cbus/readwrite/model/SALDataAudioAndVideo.go   |   33 +-
 .../readwrite/model/SALDataClockAndTimekeeping.go  |   33 +-
 .../cbus/readwrite/model/SALDataEnableControl.go   |   33 +-
 .../cbus/readwrite/model/SALDataErrorReporting.go  |   33 +-
 .../cbus/readwrite/model/SALDataFreeUsage.go       |   27 +-
 .../cbus/readwrite/model/SALDataHeating.go         |   33 +-
 .../cbus/readwrite/model/SALDataHvacActuator.go    |   33 +-
 .../readwrite/model/SALDataIrrigationControl.go    |   33 +-
 .../cbus/readwrite/model/SALDataLighting.go        |   33 +-
 .../cbus/readwrite/model/SALDataMeasurement.go     |   33 +-
 .../cbus/readwrite/model/SALDataMediaTransport.go  |   33 +-
 .../cbus/readwrite/model/SALDataMetering.go        |   33 +-
 .../model/SALDataPoolsSpasPondsFountainsControl.go |   33 +-
 .../cbus/readwrite/model/SALDataReserved.go        |   27 +-
 .../readwrite/model/SALDataRoomControlSystem.go    |   27 +-
 .../cbus/readwrite/model/SALDataSecurity.go        |   33 +-
 .../model/SALDataTelephonyStatusAndControl.go      |   33 +-
 .../readwrite/model/SALDataTemperatureBroadcast.go |   33 +-
 .../cbus/readwrite/model/SALDataTesting.go         |   27 +-
 .../cbus/readwrite/model/SALDataTriggerControl.go  |   33 +-
 .../cbus/readwrite/model/SALDataVentilation.go     |   33 +-
 .../cbus/readwrite/model/SecurityArmCode.go        |   43 +-
 .../cbus/readwrite/model/SecurityCommandType.go    |   17 +-
 .../model/SecurityCommandTypeContainer.go          |   17 +-
 .../protocols/cbus/readwrite/model/SecurityData.go |  124 +-
 .../cbus/readwrite/model/SecurityDataAlarmOff.go   |   27 +-
 .../cbus/readwrite/model/SecurityDataAlarmOn.go    |   27 +-
 .../model/SecurityDataArmFailedCleared.go          |   27 +-
 .../readwrite/model/SecurityDataArmFailedRaised.go |   27 +-
 .../model/SecurityDataArmReadyNotReady.go          |   27 +-
 .../cbus/readwrite/model/SecurityDataArmSystem.go  |   51 +-
 .../model/SecurityDataCurrentAlarmType.go          |   27 +-
 .../readwrite/model/SecurityDataDisplayMessage.go  |   27 +-
 .../cbus/readwrite/model/SecurityDataDropTamper.go |   27 +-
 .../readwrite/model/SecurityDataEmulatedKeypad.go  |   71 +-
 .../model/SecurityDataEntryDelayStarted.go         |   27 +-
 .../cbus/readwrite/model/SecurityDataEvent.go      |   27 +-
 .../model/SecurityDataExitDelayStarted.go          |   27 +-
 .../model/SecurityDataFireAlarmCleared.go          |   27 +-
 .../readwrite/model/SecurityDataFireAlarmRaised.go |   27 +-
 .../readwrite/model/SecurityDataGasAlarmCleared.go |   27 +-
 .../readwrite/model/SecurityDataGasAlarmRaised.go  |   27 +-
 .../model/SecurityDataLineCutAlarmCleared.go       |   27 +-
 .../model/SecurityDataLineCutAlarmRaised.go        |   27 +-
 .../model/SecurityDataLowBatteryCharging.go        |   35 +-
 .../model/SecurityDataLowBatteryCorrected.go       |   27 +-
 .../model/SecurityDataLowBatteryDetected.go        |   27 +-
 .../readwrite/model/SecurityDataMainsFailure.go    |   27 +-
 .../model/SecurityDataMainsRestoredOrApplied.go    |   27 +-
 .../cbus/readwrite/model/SecurityDataOff.go        |   27 +-
 .../cbus/readwrite/model/SecurityDataOn.go         |   27 +-
 .../model/SecurityDataOtherAlarmCleared.go         |   27 +-
 .../model/SecurityDataOtherAlarmRaised.go          |   27 +-
 .../readwrite/model/SecurityDataPanicActivated.go  |   27 +-
 .../readwrite/model/SecurityDataPanicCleared.go    |   27 +-
 .../model/SecurityDataPasswordEntryStatus.go       |   47 +-
 .../cbus/readwrite/model/SecurityDataRaiseAlarm.go |   27 +-
 .../readwrite/model/SecurityDataRaiseTamper.go     |   27 +-
 .../readwrite/model/SecurityDataRequestZoneName.go |   27 +-
 .../readwrite/model/SecurityDataStatus1Request.go  |   27 +-
 .../readwrite/model/SecurityDataStatus2Request.go  |   27 +-
 .../readwrite/model/SecurityDataStatusReport1.go   |   71 +-
 .../readwrite/model/SecurityDataStatusReport2.go   |   53 +-
 .../model/SecurityDataSystemArmedDisarmed.go       |   33 +-
 .../readwrite/model/SecurityDataSystemDisarmed.go  |   27 +-
 .../cbus/readwrite/model/SecurityDataTamperOff.go  |   27 +-
 .../cbus/readwrite/model/SecurityDataTamperOn.go   |   27 +-
 .../readwrite/model/SecurityDataZoneIsolated.go    |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneName.go   |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneOpen.go   |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneSealed.go |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneShort.go  |   27 +-
 .../readwrite/model/SecurityDataZoneUnsealed.go    |   27 +-
 .../cbus/readwrite/model/SerialInterfaceAddress.go |   23 +-
 .../protocols/cbus/readwrite/model/SerialNumber.go |   23 +-
 .../cbus/readwrite/model/ServerErrorReply.go       |   27 +-
 .../protocols/cbus/readwrite/model/StatusByte.go   |   39 +-
 .../protocols/cbus/readwrite/model/StatusCoding.go |   17 +-
 .../cbus/readwrite/model/StatusRequest.go          |   26 +-
 .../readwrite/model/StatusRequestBinaryState.go    |   31 +-
 .../model/StatusRequestBinaryStateDeprecated.go    |   31 +-
 .../cbus/readwrite/model/StatusRequestLevel.go     |   31 +-
 .../protocols/cbus/readwrite/model/TamperStatus.go |   35 +-
 .../cbus/readwrite/model/TelephonyCommandType.go   |   17 +-
 .../model/TelephonyCommandTypeContainer.go         |   17 +-
 .../cbus/readwrite/model/TelephonyData.go          |   52 +-
 .../readwrite/model/TelephonyDataClearDiversion.go |   27 +-
 .../readwrite/model/TelephonyDataDialInFailure.go  |   31 +-
 .../readwrite/model/TelephonyDataDialOutFailure.go |   31 +-
 .../cbus/readwrite/model/TelephonyDataDivert.go    |   27 +-
 .../TelephonyDataInternetConnectionRequestMade.go  |   27 +-
 .../model/TelephonyDataIsolateSecondaryOutlet.go   |   35 +-
 .../readwrite/model/TelephonyDataLineOffHook.go    |   31 +-
 .../readwrite/model/TelephonyDataLineOnHook.go     |   27 +-
 .../model/TelephonyDataRecallLastNumber.go         |   35 +-
 .../model/TelephonyDataRecallLastNumberRequest.go  |   35 +-
 .../model/TelephonyDataRejectIncomingCall.go       |   27 +-
 .../cbus/readwrite/model/TelephonyDataRinging.go   |   27 +-
 .../model/TemperatureBroadcastCommandType.go       |   17 +-
 .../TemperatureBroadcastCommandTypeContainer.go    |   17 +-
 .../readwrite/model/TemperatureBroadcastData.go    |   35 +-
 .../readwrite/model/TriggerControlCommandType.go   |   17 +-
 .../model/TriggerControlCommandTypeContainer.go    |   17 +-
 .../cbus/readwrite/model/TriggerControlData.go     |   42 +-
 .../model/TriggerControlDataIndicatorKill.go       |   27 +-
 .../readwrite/model/TriggerControlDataLabel.go     |   37 +-
 .../model/TriggerControlDataTriggerEvent.go        |   27 +-
 .../model/TriggerControlDataTriggerMax.go          |   27 +-
 .../model/TriggerControlDataTriggerMin.go          |   27 +-
 .../readwrite/model/TriggerControlLabelFlavour.go  |   17 +-
 .../readwrite/model/TriggerControlLabelOptions.go  |   31 +-
 .../readwrite/model/TriggerControlLabelType.go     |   17 +-
 .../protocols/cbus/readwrite/model/UnitAddress.go  |   23 +-
 .../protocols/cbus/readwrite/model/UnitStatus.go   |   17 +-
 .../protocols/cbus/readwrite/model/ZoneStatus.go   |   27 +-
 .../cbus/readwrite/model/ZoneStatusTemp.go         |   17 +-
 plc4go/protocols/df1/readwrite/ParserHelper.go     |    6 +-
 plc4go/protocols/df1/readwrite/XmlParserHelper.go  |   10 +-
 plc4go/protocols/df1/readwrite/model/DF1Command.go |   24 +-
 plc4go/protocols/df1/readwrite/model/DF1Symbol.go  |   26 +-
 .../df1/readwrite/model/DF1SymbolMessageFrame.go   |   33 +-
 .../readwrite/model/DF1SymbolMessageFrameACK.go    |   27 +-
 .../readwrite/model/DF1SymbolMessageFrameNAK.go    |   27 +-
 .../readwrite/model/DF1UnprotectedReadRequest.go   |   27 +-
 .../readwrite/model/DF1UnprotectedReadResponse.go  |   27 +-
 plc4go/protocols/eip/readwrite/ParserHelper.go     |   10 +-
 plc4go/protocols/eip/readwrite/XmlParserHelper.go  |   14 +-
 .../eip/readwrite/model/CIPDataTypeCode.go         |   17 +-
 .../eip/readwrite/model/CIPStructTypeCode.go       |   17 +-
 .../protocols/eip/readwrite/model/CipExchange.go   |   31 +-
 plc4go/protocols/eip/readwrite/model/CipRRData.go  |   33 +-
 .../eip/readwrite/model/CipReadRequest.go          |   27 +-
 .../eip/readwrite/model/CipReadResponse.go         |   31 +-
 plc4go/protocols/eip/readwrite/model/CipService.go |   34 +-
 .../eip/readwrite/model/CipUnconnectedRequest.go   |   35 +-
 .../eip/readwrite/model/CipWriteRequest.go         |   31 +-
 .../eip/readwrite/model/CipWriteResponse.go        |   27 +-
 plc4go/protocols/eip/readwrite/model/EiPCommand.go |   17 +-
 .../eip/readwrite/model/EipConnectionRequest.go    |   27 +-
 .../eip/readwrite/model/EipDisconnectRequest.go    |   27 +-
 plc4go/protocols/eip/readwrite/model/EipPacket.go  |   40 +-
 .../eip/readwrite/model/MultipleServiceRequest.go  |   33 +-
 .../eip/readwrite/model/MultipleServiceResponse.go |   39 +-
 plc4go/protocols/eip/readwrite/model/Services.go   |   60 +-
 plc4go/protocols/firmata/readwrite/ParserHelper.go |    8 +-
 .../protocols/firmata/readwrite/XmlParserHelper.go |   12 +-
 .../firmata/readwrite/model/FirmataCommand.go      |   30 +-
 .../model/FirmataCommandProtocolVersion.go         |   27 +-
 .../model/FirmataCommandSetDigitalPinValue.go      |   27 +-
 .../readwrite/model/FirmataCommandSetPinMode.go    |   31 +-
 .../firmata/readwrite/model/FirmataCommandSysex.go |   33 +-
 .../readwrite/model/FirmataCommandSystemReset.go   |   27 +-
 .../firmata/readwrite/model/FirmataMessage.go      |   30 +-
 .../readwrite/model/FirmataMessageAnalogIO.go      |   39 +-
 .../readwrite/model/FirmataMessageCommand.go       |   33 +-
 .../readwrite/model/FirmataMessageDigitalIO.go     |   39 +-
 .../model/FirmataMessageSubscribeAnalogPinValue.go |   27 +-
 .../FirmataMessageSubscribeDigitalPinValue.go      |   27 +-
 .../protocols/firmata/readwrite/model/PinMode.go   |   17 +-
 .../firmata/readwrite/model/SysexCommand.go        |   50 +-
 .../model/SysexCommandAnalogMappingQueryRequest.go |   27 +-
 .../SysexCommandAnalogMappingQueryResponse.go      |   27 +-
 .../model/SysexCommandAnalogMappingResponse.go     |   27 +-
 .../readwrite/model/SysexCommandCapabilityQuery.go |   27 +-
 .../model/SysexCommandCapabilityResponse.go        |   27 +-
 .../readwrite/model/SysexCommandExtendedAnalog.go  |   27 +-
 .../readwrite/model/SysexCommandExtendedId.go      |   39 +-
 .../readwrite/model/SysexCommandPinStateQuery.go   |   27 +-
 .../model/SysexCommandPinStateResponse.go          |   27 +-
 .../model/SysexCommandReportFirmwareRequest.go     |   27 +-
 .../model/SysexCommandReportFirmwareResponse.go    |   27 +-
 .../model/SysexCommandSamplingInterval.go          |   27 +-
 .../readwrite/model/SysexCommandStringData.go      |   27 +-
 .../model/SysexCommandSysexNonRealtime.go          |   27 +-
 .../readwrite/model/SysexCommandSysexRealtime.go   |   27 +-
 .../protocols/knxnetip/readwrite/ParserHelper.go   |   76 +-
 .../knxnetip/readwrite/XmlParserHelper.go          |   80 +-
 .../knxnetip/readwrite/model/AccessLevel.go        |   17 +-
 plc4go/protocols/knxnetip/readwrite/model/Apdu.go  |   24 +-
 .../knxnetip/readwrite/model/ApduControl.go        |   28 +-
 .../knxnetip/readwrite/model/ApduControlAck.go     |   27 +-
 .../knxnetip/readwrite/model/ApduControlConnect.go |   27 +-
 .../readwrite/model/ApduControlContainer.go        |   33 +-
 .../readwrite/model/ApduControlDisconnect.go       |   27 +-
 .../knxnetip/readwrite/model/ApduControlNack.go    |   27 +-
 .../protocols/knxnetip/readwrite/model/ApduData.go |   52 +-
 .../knxnetip/readwrite/model/ApduDataAdcRead.go    |   27 +-
 .../readwrite/model/ApduDataAdcResponse.go         |   27 +-
 .../knxnetip/readwrite/model/ApduDataContainer.go  |   33 +-
 .../model/ApduDataDeviceDescriptorRead.go          |   27 +-
 .../model/ApduDataDeviceDescriptorResponse.go      |   27 +-
 .../knxnetip/readwrite/model/ApduDataExt.go        |  102 +-
 .../readwrite/model/ApduDataExtAuthorizeRequest.go |   27 +-
 .../model/ApduDataExtAuthorizeResponse.go          |   27 +-
 .../model/ApduDataExtDomainAddressRead.go          |   27 +-
 .../model/ApduDataExtDomainAddressResponse.go      |   27 +-
 .../model/ApduDataExtDomainAddressSelectiveRead.go |   27 +-
 .../ApduDataExtDomainAddressSerialNumberRead.go    |   27 +-
 ...ApduDataExtDomainAddressSerialNumberResponse.go |   27 +-
 .../ApduDataExtDomainAddressSerialNumberWrite.go   |   27 +-
 .../model/ApduDataExtDomainAddressWrite.go         |   27 +-
 .../model/ApduDataExtFileStreamInfoReport.go       |   27 +-
 .../ApduDataExtGroupPropertyValueInfoReport.go     |   27 +-
 .../model/ApduDataExtGroupPropertyValueRead.go     |   27 +-
 .../model/ApduDataExtGroupPropertyValueResponse.go |   27 +-
 .../model/ApduDataExtGroupPropertyValueWrite.go    |   27 +-
 ...ApduDataExtIndividualAddressSerialNumberRead.go |   27 +-
 ...DataExtIndividualAddressSerialNumberResponse.go |   27 +-
 ...pduDataExtIndividualAddressSerialNumberWrite.go |   27 +-
 .../readwrite/model/ApduDataExtKeyResponse.go      |   27 +-
 .../readwrite/model/ApduDataExtKeyWrite.go         |   27 +-
 .../readwrite/model/ApduDataExtLinkRead.go         |   27 +-
 .../readwrite/model/ApduDataExtLinkResponse.go     |   27 +-
 .../readwrite/model/ApduDataExtLinkWrite.go        |   27 +-
 .../readwrite/model/ApduDataExtMemoryBitWrite.go   |   27 +-
 .../model/ApduDataExtNetworkParameterRead.go       |   27 +-
 .../model/ApduDataExtNetworkParameterResponse.go   |   27 +-
 .../model/ApduDataExtNetworkParameterWrite.go      |   27 +-
 .../model/ApduDataExtOpenRoutingTableRequest.go    |   27 +-
 .../model/ApduDataExtPropertyDescriptionRead.go    |   27 +-
 .../ApduDataExtPropertyDescriptionResponse.go      |   39 +-
 .../model/ApduDataExtPropertyValueRead.go          |   27 +-
 .../model/ApduDataExtPropertyValueResponse.go      |   27 +-
 .../model/ApduDataExtPropertyValueWrite.go         |   27 +-
 .../model/ApduDataExtReadRouterMemoryRequest.go    |   27 +-
 .../model/ApduDataExtReadRouterMemoryResponse.go   |   27 +-
 .../model/ApduDataExtReadRouterStatusRequest.go    |   27 +-
 .../model/ApduDataExtReadRouterStatusResponse.go   |   27 +-
 .../model/ApduDataExtReadRoutingTableRequest.go    |   27 +-
 .../model/ApduDataExtReadRoutingTableResponse.go   |   27 +-
 .../model/ApduDataExtWriteRouterMemoryRequest.go   |   27 +-
 .../model/ApduDataExtWriteRouterStatusRequest.go   |   27 +-
 .../model/ApduDataExtWriteRoutingTableRequest.go   |   27 +-
 .../readwrite/model/ApduDataGroupValueRead.go      |   27 +-
 .../readwrite/model/ApduDataGroupValueResponse.go  |   27 +-
 .../readwrite/model/ApduDataGroupValueWrite.go     |   27 +-
 .../model/ApduDataIndividualAddressRead.go         |   27 +-
 .../model/ApduDataIndividualAddressResponse.go     |   27 +-
 .../model/ApduDataIndividualAddressWrite.go        |   27 +-
 .../knxnetip/readwrite/model/ApduDataMemoryRead.go |   27 +-
 .../readwrite/model/ApduDataMemoryResponse.go      |   27 +-
 .../readwrite/model/ApduDataMemoryWrite.go         |   27 +-
 .../knxnetip/readwrite/model/ApduDataOther.go      |   33 +-
 .../knxnetip/readwrite/model/ApduDataRestart.go    |   27 +-
 .../readwrite/model/ApduDataUserMessage.go         |   27 +-
 plc4go/protocols/knxnetip/readwrite/model/CEMI.go  |   66 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |   24 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |   27 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |   33 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |   17 +-
 .../knxnetip/readwrite/model/ChannelInformation.go |   23 +-
 .../knxnetip/readwrite/model/ComObjectTable.go     |   26 +-
 .../readwrite/model/ComObjectTableAddresses.go     |   17 +-
 .../model/ComObjectTableRealisationType1.go        |   53 +-
 .../model/ComObjectTableRealisationType2.go        |   53 +-
 .../model/ComObjectTableRealisationType6.go        |   33 +-
 .../knxnetip/readwrite/model/ComObjectValueType.go |   17 +-
 .../knxnetip/readwrite/model/ConnectionRequest.go  |   45 +-
 .../model/ConnectionRequestInformation.go          |   26 +-
 ...ConnectionRequestInformationDeviceManagement.go |   27 +-
 ...ConnectionRequestInformationTunnelConnection.go |   31 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |   43 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |   26 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |   27 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |   33 +-
 .../readwrite/model/ConnectionStateRequest.go      |   33 +-
 .../readwrite/model/ConnectionStateResponse.go     |   31 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |   59 +-
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |   37 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |   33 +-
 .../readwrite/model/DescriptionResponse.go         |   39 +-
 .../readwrite/model/DeviceConfigurationAck.go      |   33 +-
 .../model/DeviceConfigurationAckDataBlock.go       |   29 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |   39 +-
 .../model/DeviceConfigurationRequestDataBlock.go   |   25 +-
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |   17 +-
 .../readwrite/model/DeviceDescriptorMediumType.go  |   17 +-
 .../readwrite/model/DeviceDescriptorType2.go       |   47 +-
 .../knxnetip/readwrite/model/DeviceStatus.go       |   23 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |   33 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |   31 +-
 .../knxnetip/readwrite/model/FirmwareType.go       |   17 +-
 .../model/GroupObjectDescriptorRealisationType1.go |   31 +-
 .../model/GroupObjectDescriptorRealisationType2.go |   31 +-
 .../model/GroupObjectDescriptorRealisationType6.go |   23 +-
 .../model/GroupObjectDescriptorRealisationType7.go |   31 +-
 .../model/GroupObjectDescriptorRealisationTypeB.go |   31 +-
 .../readwrite/model/HPAIControlEndpoint.go         |   35 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |   35 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |   35 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |   17 +-
 .../knxnetip/readwrite/model/IPAddress.go          |   23 +-
 .../knxnetip/readwrite/model/KnxAddress.go         |   23 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       |   11 +-
 .../readwrite/model/KnxDatapointMainType.go        |   17 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   |   17 +-
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |   26 +-
 .../readwrite/model/KnxGroupAddress2Level.go       |   27 +-
 .../readwrite/model/KnxGroupAddress3Level.go       |   27 +-
 .../readwrite/model/KnxGroupAddressFreeLevel.go    |   27 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |   17 +-
 .../readwrite/model/KnxInterfaceObjectType.go      |   17 +-
 .../protocols/knxnetip/readwrite/model/KnxLayer.go |   17 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    |   17 +-
 .../knxnetip/readwrite/model/KnxMedium.go          |   17 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   27 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   27 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |   54 +-
 .../knxnetip/readwrite/model/KnxNetIpRouting.go    |   27 +-
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   27 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   27 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   27 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   27 +-
 .../knxnetip/readwrite/model/KnxProperty.go        |   11 +-
 .../readwrite/model/KnxPropertyDataType.go         |   17 +-
 .../knxnetip/readwrite/model/LBusmonInd.go         |   45 +-
 .../protocols/knxnetip/readwrite/model/LDataCon.go |   45 +-
 .../knxnetip/readwrite/model/LDataExtended.go      |   41 +-
 .../knxnetip/readwrite/model/LDataFrame.go         |   30 +-
 .../knxnetip/readwrite/model/LDataFrameACK.go      |   27 +-
 .../protocols/knxnetip/readwrite/model/LDataInd.go |   45 +-
 .../protocols/knxnetip/readwrite/model/LDataReq.go |   45 +-
 .../knxnetip/readwrite/model/LPollData.go          |   33 +-
 .../knxnetip/readwrite/model/LPollDataCon.go       |   27 +-
 .../knxnetip/readwrite/model/LPollDataReq.go       |   27 +-
 .../protocols/knxnetip/readwrite/model/LRawCon.go  |   27 +-
 .../protocols/knxnetip/readwrite/model/LRawInd.go  |   27 +-
 .../protocols/knxnetip/readwrite/model/LRawReq.go  |   27 +-
 .../knxnetip/readwrite/model/MACAddress.go         |   23 +-
 .../readwrite/model/MFuncPropCommandReq.go         |   27 +-
 .../knxnetip/readwrite/model/MFuncPropCon.go       |   27 +-
 .../readwrite/model/MFuncPropStateReadReq.go       |   27 +-
 .../knxnetip/readwrite/model/MPropInfoInd.go       |   27 +-
 .../knxnetip/readwrite/model/MPropReadCon.go       |   27 +-
 .../knxnetip/readwrite/model/MPropReadReq.go       |   27 +-
 .../knxnetip/readwrite/model/MPropWriteCon.go      |   27 +-
 .../knxnetip/readwrite/model/MPropWriteReq.go      |   27 +-
 .../knxnetip/readwrite/model/MResetInd.go          |   27 +-
 .../knxnetip/readwrite/model/MResetReq.go          |   27 +-
 .../model/ProjectInstallationIdentifier.go         |   23 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   23 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   27 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |   33 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |   45 +-
 .../knxnetip/readwrite/model/ServiceId.go          |   34 +-
 .../protocols/knxnetip/readwrite/model/Status.go   |   17 +-
 .../readwrite/model/SupportedPhysicalMedia.go      |   17 +-
 .../knxnetip/readwrite/model/TDataConnectedInd.go  |   27 +-
 .../knxnetip/readwrite/model/TDataConnectedReq.go  |   27 +-
 .../knxnetip/readwrite/model/TDataIndividualInd.go |   27 +-
 .../knxnetip/readwrite/model/TDataIndividualReq.go |   27 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |   39 +-
 .../readwrite/model/TunnelingRequestDataBlock.go   |   25 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |   33 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |   29 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |   27 +-
 plc4go/protocols/modbus/readwrite/ParserHelper.go  |   20 +-
 .../protocols/modbus/readwrite/XmlParserHelper.go  |   24 +-
 .../protocols/modbus/readwrite/model/DataItem.go   |   11 +-
 .../protocols/modbus/readwrite/model/DriverType.go |   17 +-
 .../protocols/modbus/readwrite/model/ModbusADU.go  |   26 +-
 .../modbus/readwrite/model/ModbusAsciiADU.go       |   33 +-
 .../modbus/readwrite/model/ModbusConstants.go      |   23 +-
 .../modbus/readwrite/model/ModbusDataType.go       |   17 +-
 .../ModbusDeviceInformationConformityLevel.go      |   17 +-
 .../model/ModbusDeviceInformationLevel.go          |   17 +-
 .../model/ModbusDeviceInformationMoreFollows.go    |   17 +-
 .../model/ModbusDeviceInformationObject.go         |   23 +-
 .../modbus/readwrite/model/ModbusErrorCode.go      |   17 +-
 .../protocols/modbus/readwrite/model/ModbusPDU.go  |   98 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |   27 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |   27 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |   31 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |   27 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |   27 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |   27 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |   27 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |   27 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |   27 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |   27 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |   27 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   31 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   65 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |   27 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |   27 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   27 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |   27 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |   27 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |   39 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |   41 +-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |   23 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |   41 +-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |   23 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |   27 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |   27 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |   27 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |   27 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |   27 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |   27 +-
 .../model/ModbusPDUReportServerIdRequest.go        |   27 +-
 .../model/ModbusPDUReportServerIdResponse.go       |   27 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |   41 +-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |   23 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |   41 +-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |   23 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |   27 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |   27 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |   27 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |   27 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |   27 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |   27 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |   27 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |   27 +-
 .../modbus/readwrite/model/ModbusRtuADU.go         |   33 +-
 .../modbus/readwrite/model/ModbusTcpADU.go         |   35 +-
 plc4go/protocols/s7/readwrite/ParserHelper.go      |   58 +-
 plc4go/protocols/s7/readwrite/XmlParserHelper.go   |   62 +-
 .../model/AlarmMessageAckObjectPushType.go         |   39 +-
 .../s7/readwrite/model/AlarmMessageAckPushType.go  |   55 +-
 .../readwrite/model/AlarmMessageAckResponseType.go |   35 +-
 .../s7/readwrite/model/AlarmMessageAckType.go      |   49 +-
 .../readwrite/model/AlarmMessageObjectAckType.go   |   39 +-
 .../readwrite/model/AlarmMessageObjectPushType.go  |   77 +-
 .../readwrite/model/AlarmMessageObjectQueryType.go |   65 +-
 .../s7/readwrite/model/AlarmMessagePushType.go     |   55 +-
 .../s7/readwrite/model/AlarmMessageQueryType.go    |   57 +-
 .../protocols/s7/readwrite/model/AlarmStateType.go |   17 +-
 plc4go/protocols/s7/readwrite/model/AlarmType.go   |   17 +-
 .../s7/readwrite/model/AssociatedValueType.go      |   43 +-
 plc4go/protocols/s7/readwrite/model/COTPPacket.go  |   52 +-
 .../readwrite/model/COTPPacketConnectionRequest.go |   31 +-
 .../model/COTPPacketConnectionResponse.go          |   31 +-
 .../protocols/s7/readwrite/model/COTPPacketData.go |   27 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |   31 +-
 .../model/COTPPacketDisconnectResponse.go          |   27 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |   27 +-
 .../protocols/s7/readwrite/model/COTPParameter.go  |   32 +-
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   27 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   27 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   27 +-
 ...COTPParameterDisconnectAdditionalInformation.go |   27 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   31 +-
 .../s7/readwrite/model/COTPProtocolClass.go        |   17 +-
 .../protocols/s7/readwrite/model/COTPTpduSize.go   |   17 +-
 .../s7/readwrite/model/CpuSubscribeEvents.go       |   17 +-
 plc4go/protocols/s7/readwrite/model/DataItem.go    |   11 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |   17 +-
 .../s7/readwrite/model/DataTransportSize.go        |   17 +-
 plc4go/protocols/s7/readwrite/model/DateAndTime.go |   23 +-
 plc4go/protocols/s7/readwrite/model/DeviceGroup.go |   17 +-
 plc4go/protocols/s7/readwrite/model/EventType.go   |   17 +-
 plc4go/protocols/s7/readwrite/model/MemoryArea.go  |   17 +-
 .../s7/readwrite/model/ModeTransitionType.go       |   17 +-
 plc4go/protocols/s7/readwrite/model/QueryType.go   |   17 +-
 plc4go/protocols/s7/readwrite/model/S7Address.go   |   22 +-
 .../protocols/s7/readwrite/model/S7AddressAny.go   |   31 +-
 .../s7/readwrite/model/S7DataAlarmMessage.go       |   24 +-
 plc4go/protocols/s7/readwrite/model/S7Message.go   |   44 +-
 .../s7/readwrite/model/S7MessageObjectRequest.go   |   39 +-
 .../s7/readwrite/model/S7MessageObjectResponse.go  |   35 +-
 .../s7/readwrite/model/S7MessageRequest.go         |   27 +-
 .../s7/readwrite/model/S7MessageResponse.go        |   27 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |   27 +-
 .../s7/readwrite/model/S7MessageUserData.go        |   27 +-
 plc4go/protocols/s7/readwrite/model/S7Parameter.go |   34 +-
 .../readwrite/model/S7ParameterModeTransition.go   |   29 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |   53 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |   27 +-
 .../model/S7ParameterSetupCommunication.go         |   27 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |   53 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   22 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |   29 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |   53 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |   27 +-
 plc4go/protocols/s7/readwrite/model/S7Payload.go   |   28 +-
 .../s7/readwrite/model/S7PayloadAlarm8.go          |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmAckInd.go     |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmS.go          |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmSC.go         |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmSQ.go         |   33 +-
 .../readwrite/model/S7PayloadDiagnosticMessage.go  |   33 +-
 .../s7/readwrite/model/S7PayloadNotify.go          |   33 +-
 .../s7/readwrite/model/S7PayloadNotify8.go         |   33 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |   53 +-
 .../s7/readwrite/model/S7PayloadUserData.go        |   53 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   66 +-
 .../S7PayloadUserDataItemCpuFunctionAlarmAck.go    |   53 +-
 ...yloadUserDataItemCpuFunctionAlarmAckResponse.go |   39 +-
 .../S7PayloadUserDataItemCpuFunctionAlarmQuery.go  |   39 +-
 ...oadUserDataItemCpuFunctionAlarmQueryResponse.go |   35 +-
 ...ayloadUserDataItemCpuFunctionMsgSubscription.go |   31 +-
 ...aItemCpuFunctionMsgSubscriptionAlarmResponse.go |   31 +-
 ...erDataItemCpuFunctionMsgSubscriptionResponse.go |   27 +-
 ...ataItemCpuFunctionMsgSubscriptionSysResponse.go |   27 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   33 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |   59 +-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |   53 +-
 .../readwrite/model/S7PayloadWriteVarResponse.go   |   53 +-
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |   38 +-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   27 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |   22 +-
 .../model/S7VarRequestParameterItemAddress.go      |   35 +-
 plc4go/protocols/s7/readwrite/model/State.go       |   23 +-
 .../protocols/s7/readwrite/model/SyntaxIdType.go   |   17 +-
 .../s7/readwrite/model/SzlDataTreeItem.go          |   23 +-
 plc4go/protocols/s7/readwrite/model/SzlId.go       |   31 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |   17 +-
 plc4go/protocols/s7/readwrite/model/SzlSublist.go  |   17 +-
 plc4go/protocols/s7/readwrite/model/TPKTPacket.go  |   31 +-
 .../protocols/s7/readwrite/model/TransportSize.go  |   17 +-
 .../protocols/simulated/readwrite/ParserHelper.go  |    6 +-
 .../simulated/readwrite/XmlParserHelper.go         |   10 +-
 .../simulated/readwrite/model/DataItem.go          |   11 +-
 .../protocols/simulated/readwrite/model/Dummy.go   |   23 +-
 .../readwrite/model/SimulatedDataTypeSizes.go      |   17 +-
 plc4go/spi/Message.go                              |   10 +-
 plc4go/spi/context/ArrayContext.go                 |   61 +
 plc4go/spi/model/DefaultPlcBrowseEvent_plc4xgen.go |   11 +-
 plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go  |   13 +-
 .../DefaultPlcBrowseRequestResult_plc4xgen.go      |   11 +-
 .../spi/model/DefaultPlcBrowseRequest_plc4xgen.go  |   13 +-
 plc4go/spi/model/DefaultPlcBrowseResponse.go       |   11 +-
 .../DefaultPlcConsumerRegistration_plc4xgen.go     |   11 +-
 .../model/DefaultPlcReadRequestBuilder_plc4xgen.go |   15 +-
 .../model/DefaultPlcReadRequestResult_plc4xgen.go  |   11 +-
 plc4go/spi/model/DefaultPlcReadRequest_plc4xgen.go |   13 +-
 .../spi/model/DefaultPlcReadResponse_plc4xgen.go   |   13 +-
 plc4go/spi/model/DefaultPlcRequest.go              |    7 +-
 .../model/DefaultPlcSubscriptionEvent_plc4xgen.go  |   15 +-
 .../model/DefaultPlcSubscriptionHandle_plc4xgen.go |    9 +-
 ...efaultPlcSubscriptionRequestBuilder_plc4xgen.go |   17 +-
 ...DefaultPlcSubscriptionRequestResult_plc4xgen.go |   11 +-
 .../DefaultPlcSubscriptionRequest_plc4xgen.go      |   13 +-
 .../DefaultPlcSubscriptionResponse_plc4xgen.go     |   13 +-
 plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go  |    9 +-
 ...faultPlcUnsubscriptionRequestResult_plc4xgen.go |   11 +-
 .../DefaultPlcWriteRequestBuilder_plc4xgen.go      |   17 +-
 .../model/DefaultPlcWriteRequestResult_plc4xgen.go |   11 +-
 .../spi/model/DefaultPlcWriteRequest_plc4xgen.go   |   15 +-
 .../spi/model/DefaultPlcWriteResponse_plc4xgen.go  |   11 +-
 plc4go/spi/model/DefaultResponse_plc4xgen.go       |    9 +-
 plc4go/spi/testutils/DriverTestRunner.go           |    9 +-
 plc4go/spi/testutils/ParserSerializerTestRunner.go |   14 +-
 plc4go/spi/utils/LengthAware.go                    |    6 +-
 plc4go/spi/utils/Serializable.go                   |    4 +-
 plc4go/spi/utils/WriteBuffer.go                    |    5 +-
 plc4go/spi/utils/WriteBufferBoxBased.go            |    9 +-
 plc4go/spi/utils/WriteBufferByteBased.go           |    7 +-
 plc4go/spi/utils/WriteBufferByteBased_test.go      |   10 +-
 plc4go/spi/utils/WriteBufferJsonBased.go           |   10 +-
 plc4go/spi/utils/WriteBufferXmlBased.go            |   13 +-
 plc4go/spi/values/PlcList.go                       |    7 +-
 plc4go/spi/values/PlcStruct.go                     |    7 +-
 plc4go/spi/values/WriteBufferPlcValueBased.go      |    7 +-
 plc4go/tests/drivers/tests/ads_driver_test.go      |    3 +-
 plc4go/tests/drivers/tests/eip_driver_test.go      |    6 +-
 plc4go/tests/drivers/tests/knxnetip_driver_test.go |    6 +-
 plc4go/tests/drivers/tests/manual_bacnet_test.go   |    3 +-
 plc4go/tests/drivers/tests/modbus_driver_test.go   |    6 +-
 plc4go/tests/drivers/tests/s7_driver_test.go       |    6 +-
 plc4go/tools/plc4xgenerator/gen.go                 |   13 +-
 .../internal/cbusanalyzer/analyzer.go              |    5 +-
 .../helloads/telemetry/DeviceManagerConstants.java |   37 +
 .../helloads/telemetry/EtherCatDevice.java}        |   42 +-
 .../telemetry/EtherCatMasterConstants.java         |   82 ++
 .../telemetry/HelloAdsEtherCatTelemetry.java       |  164 +--
 .../helloads/telemetry/HelloAdsTelemetry.java      |   48 +-
 2406 files changed, 40856 insertions(+), 43502 deletions(-)
 delete mode 100644 plc4go/protocols/bacnetip/readwrite/model/MaxApduLengthAcceptedTagged.go
 delete mode 100644 plc4go/protocols/bacnetip/readwrite/model/MaxSegmentsAcceptedTagged.go
 create mode 100644 plc4go/spi/context/ArrayContext.go
 create mode 100644 plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/DeviceManagerConstants.java
 copy plc4j/{utils/test-utils/src/main/java/org/apache/plc4x/test/parserserializer/model/ParserSerializerTestsuite.java => examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatDevice.java} (55%)
 create mode 100644 plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatMasterConstants.java


[plc4x] 01/02: chore(plc4j/examples/ads): Continued on extracting the state of EtherCAT Slave devices.

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch featrue/cdutz/arrays-with-special-variables
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit afa10bbec6c489229f68dc429c313460a91e04ae
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Feb 2 19:41:19 2023 +0100

    chore(plc4j/examples/ads): Continued on extracting the state of EtherCAT Slave devices.
---
 .../helloads/telemetry/DeviceManagerConstants.java |  37 +++++
 .../helloads/telemetry/EtherCatDevice.java         |  56 +++++++
 .../telemetry/EtherCatMasterConstants.java         |  82 +++++++++++
 .../telemetry/HelloAdsEtherCatTelemetry.java       | 164 +++++++++------------
 .../helloads/telemetry/HelloAdsTelemetry.java      |  48 +-----
 5 files changed, 250 insertions(+), 137 deletions(-)

diff --git a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/DeviceManagerConstants.java b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/DeviceManagerConstants.java
new file mode 100644
index 0000000000..1f1e516638
--- /dev/null
+++ b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/DeviceManagerConstants.java
@@ -0,0 +1,37 @@
+package org.apache.plc4x.java.examples.helloads.telemetry;
+
+// Extracted from https://infosys.beckhoff.com/index.php?content=../content/1031/devicemanager/262982923.html
+
+public enum DeviceManagerConstants {
+    NIC(0x00000002),
+    Time(0x00000003),
+    UserManagement(0x00000004),
+    RAS(0x00000005),
+    FTP(0x00000006),
+    SMB(0x00000007),
+    TwinCat(0x00000008),
+    Software(0x0000000A),
+    COU(0x0000000B),
+    Memory(0x0000000C),
+    FirewallWinCE(0x0000000E),
+    FileSystemObject(0x00000010),
+    DisplayDevice(0x00000013),
+    EWF(0x00000014),
+    FBWF(0x00000015),
+    OS(0x00000018),
+    RAID(0x00000019),
+    Fan(0x0000001B),
+    Mainboard(0x0000001C),
+    DiskManagement(0x0000001D),
+    UPS(0x0000001E),
+    PhysicalDrive(0x0000001F),
+    MassStorageDrive(0x00000020),
+    UnifiedWriteFilter(0x00000021),
+    IO(0x00000022),
+    Misc(0x00000100);
+
+    final int typeNumber;
+    DeviceManagerConstants(int typeNumber) {
+        this.typeNumber = typeNumber;
+    }
+}
diff --git a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatDevice.java b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatDevice.java
new file mode 100644
index 0000000000..094a0ff24c
--- /dev/null
+++ b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatDevice.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.java.examples.helloads.telemetry;
+
+public class EtherCatDevice {
+
+    private final int etherCatAddress;
+    private final String name;
+    private final int vendorId;
+    private final int productCode;
+    private final int revisionNumber;
+
+    public EtherCatDevice(int etherCatAddress, String name, int vendorId, int productCode, int revisionNumber) {
+        this.etherCatAddress = etherCatAddress;
+        this.name = name;
+        this.vendorId = vendorId;
+        this.productCode = productCode;
+        this.revisionNumber = revisionNumber;
+    }
+
+    public int getEtherCatAddress() {
+        return etherCatAddress;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public int getVendorId() {
+        return vendorId;
+    }
+
+    public int getProductCode() {
+        return productCode;
+    }
+
+    public int getRevisionNumber() {
+        return revisionNumber;
+    }
+}
diff --git a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatMasterConstants.java b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatMasterConstants.java
new file mode 100644
index 0000000000..9d6543f630
--- /dev/null
+++ b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/EtherCatMasterConstants.java
@@ -0,0 +1,82 @@
+package org.apache.plc4x.java.examples.helloads.telemetry;
+
+// Extracted from https://infosys.beckhoff.com/index.php?content=../content/1031/devicemanager/262982923.html
+
+import org.apache.plc4x.java.api.types.PlcValueType;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum EtherCatMasterConstants {
+    DeviceType(0x10000000, PlcValueType.UDINT),
+    ManufacturerDeviceName(0x10080000, PlcValueType.STRING),
+    HardwareVersion(0x10090000, PlcValueType.UINT),
+    SoftwareVersion(0x100A0000, PlcValueType.STRING),
+    IdentityObjectNum(0x10180000, PlcValueType.USINT),
+    IdentityObjectVendorId(0x10180001, PlcValueType.UDINT),
+    IdentityObjectProductCode(0x10180002, PlcValueType.UDINT),
+    IdentityObjectRevisionNumber(0x10180003, PlcValueType.UDINT),
+    IdentityObjectSerialNumber(0x10180004, PlcValueType.UDINT),
+    ConfigurationDataNum(0x80000000, PlcValueType.USINT), // 0x8xxx0000 xxx = device index (starting with 0)
+    ConfigurationDataAddress(0x80000001, PlcValueType.UINT),
+    ConfigurationDataType(0x80000002, PlcValueType.STRING), // Not sure ...
+    ConfigurationDataName(0x80000003, PlcValueType.STRING),
+    ConfigurationDataDeviceType(0x80000004, PlcValueType.UDINT),
+    ConfigurationDataVendorId(0x80000005, PlcValueType.UDINT),
+    ConfigurationDataProductCode(0x80000006, PlcValueType.UDINT),
+    ConfigurationDataRevisionNumber(0x80000007, PlcValueType.UDINT),
+    ConfigurationDataSerialNumber(0x80000008, PlcValueType.UDINT),
+    ConfigurationDataMailboxOutSize(0x80000021, PlcValueType.UINT),
+    ConfigurationDataMailboxInSize(0x80000022, PlcValueType.UINT),
+    ConfigurationDataLinkStatus(0x80000023, PlcValueType.USINT),
+    ConfigurationDataLinkPreset(0x80000024, PlcValueType.USINT),
+    ConfigurationDataFlags(0x80000025, PlcValueType.UINT),
+    StateMachineNum(0xA0000000, PlcValueType.USINT),      // 0xAxxx0000 xxx = device index (starting with 0)
+    StateMachineAlStatus(0xA0000001, PlcValueType.UINT),
+    StateMachineAlControl(0xA0000002, PlcValueType.UINT),
+    StateMachineLastAlStatusCode(0xA0000003, PlcValueType.UINT),
+    StateMachineLinkConnectionStatus(0xA0000004, PlcValueType.USINT),
+    StateMachineLinkControl(0xA0000005, PlcValueType.USINT),
+    StateMachineFixedAddressPort0(0xA0000006, PlcValueType.UINT),
+    StateMachineFixedAddressPort1(0xA0000007, PlcValueType.UINT),
+    StateMachineFixedAddressPort2(0xA0000008, PlcValueType.UINT),
+    StateMachineFixedAddressPort3(0xA0000009, PlcValueType.UINT),
+    StateMachineCrcErrorCountPort0(0xA000000A, PlcValueType.UDINT),
+    StateMachineCrcErrorCountPort1(0xA000000B, PlcValueType.UDINT),
+    StateMachineCrcErrorCountPort2(0xA000000C, PlcValueType.UDINT),
+    StateMachineCrcErrorCountPort3(0xA000000D, PlcValueType.UDINT),
+    StateMachineCyclicWcErrorCount(0xA000000E, PlcValueType.UDINT),
+    StateMachineSlaveNotPresentCount(0xA000000F, PlcValueType.UDINT),
+    StateMachineAbnormalStateChangeCount(0xA0000010, PlcValueType.UDINT),
+    //StateMachineDisableAutomaticLinkControl(0xA0000011, PlcValueType.BOOL),
+    //ScanSlavesNum(0xF002000, PlcValueType.),
+    //ScanSlavesScanCommand(0xF002001, PlcValueType.),
+    ScanSlavesScanStatus(0xF002002, PlcValueType.USINT),
+    //ScanSlavesScanReply(0xF002003, PlcValueType.),
+    ConfiguredSlavesNum(0xF0200000, PlcValueType.USINT), // Get the EtherCAT address by looping through the modules
+    //    FrameStatisticsNum(0xF1200000, PlcValueType.);
+    FrameStatisticsCyclicLostFramesCount(0xF1200001, PlcValueType.UDINT),
+    FrameStatisticsAcyclicLostFramesCount(0xF1200002, PlcValueType.UDINT);
+    //DiagnosticNum(0xF2000000, PlcValueType.),
+    //DiagnosticResetDiagnosticCounters(0xF2000001, PlcValueType.);
+
+    private static final Map<Integer, EtherCatMasterConstants> map;
+    static {
+        map = new HashMap<>();
+        for (EtherCatMasterConstants value : EtherCatMasterConstants.values()) {
+            map.put(value.offset, value);
+        }
+    }
+
+    final int offset;
+    final PlcValueType plcValueType;
+    EtherCatMasterConstants(int offset, PlcValueType plcValueType) {
+        this.offset = offset;
+        this.plcValueType = plcValueType;
+    }
+
+    public static EtherCatMasterConstants enumForValue(int offset) {
+        return map.get(offset);
+    }
+
+}
diff --git a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsEtherCatTelemetry.java b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsEtherCatTelemetry.java
index e68de4c777..38d8e8a1e3 100644
--- a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsEtherCatTelemetry.java
+++ b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsEtherCatTelemetry.java
@@ -20,6 +20,7 @@ package org.apache.plc4x.java.examples.helloads.telemetry;
 
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.PlcDriverManager;
+import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.PlcReadResponse;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.api.types.PlcValueType;
@@ -32,131 +33,85 @@ import java.util.Map;
 
 // Extracted from https://infosys.beckhoff.com/index.php?content=../content/1031/devicemanager/262982923.html
 
-enum EtherCatConstant {
-    DeviceType(0x10000000, PlcValueType.UDINT),
-    ManufacturerDeviceName(0x10080000, PlcValueType.STRING),
-    HardwareVersion(0x10090000, PlcValueType.UINT),
-    SoftwareVersion(0x100A0000, PlcValueType.STRING),
-    IdentityObjectNum(0x10180000, PlcValueType.USINT),
-    IdentityObjectVendorId(0x10180001, PlcValueType.UDINT),
-    IdentityObjectProductCode(0x10180002, PlcValueType.UDINT),
-    IdentityObjectRevisionNumber(0x10180003, PlcValueType.UDINT),
-    IdentityObjectSerialNumber(0x10180004, PlcValueType.UDINT),
-    ConfigurationDataNum(0x80000000, PlcValueType.USINT), // 0x8xxx0000 xxx = device index (starting with 0)
-    ConfigurationDataAddress(0x80000001, PlcValueType.UINT),
-    ConfigurationDataType(0x80000002, PlcValueType.STRING), // Not sure ...
-    ConfigurationDataName(0x80000003, PlcValueType.STRING),
-    ConfigurationDataDeviceType(0x80000004, PlcValueType.UDINT),
-    ConfigurationDataVendorId(0x80000005, PlcValueType.UDINT),
-    ConfigurationDataProductCode(0x80000006, PlcValueType.UDINT),
-    ConfigurationDataRevisionNumber(0x80000007, PlcValueType.UDINT),
-    ConfigurationDataSerialNumber(0x80000008, PlcValueType.UDINT),
-    ConfigurationDataMailboxOutSize(0x80000021, PlcValueType.UINT),
-    ConfigurationDataMailboxInSize(0x80000022, PlcValueType.UINT),
-    ConfigurationDataLinkStatus(0x80000023, PlcValueType.USINT),
-    ConfigurationDataLinkPreset(0x80000024, PlcValueType.USINT),
-    ConfigurationDataFlags(0x80000025, PlcValueType.UINT),
-    StateMachineNum(0xA0000000, PlcValueType.USINT),      // 0xAxxx0000 xxx = device index (starting with 0)
-    StateMachineAlStatus(0xA0000001, PlcValueType.UINT),
-    StateMachineAlControl(0xA0000002, PlcValueType.UINT),
-    StateMachineLastAlStatusCode(0xA0000003, PlcValueType.UINT),
-    StateMachineLinkConnectionStatus(0xA0000004, PlcValueType.USINT),
-    StateMachineLinkControl(0xA0000005, PlcValueType.USINT),
-    StateMachineFixedAddressPort0(0xA0000006, PlcValueType.UINT),
-    StateMachineFixedAddressPort1(0xA0000007, PlcValueType.UINT),
-    StateMachineFixedAddressPort2(0xA0000008, PlcValueType.UINT),
-    StateMachineFixedAddressPort3(0xA0000009, PlcValueType.UINT),
-    StateMachineCrcErrorCountPort0(0xA000000A, PlcValueType.UDINT),
-    StateMachineCrcErrorCountPort1(0xA000000B, PlcValueType.UDINT),
-    StateMachineCrcErrorCountPort2(0xA000000C, PlcValueType.UDINT),
-    StateMachineCrcErrorCountPort3(0xA000000D, PlcValueType.UDINT),
-    StateMachineCyclicWcErrorCount(0xA000000E, PlcValueType.UDINT),
-    StateMachineSlaveNotPresentCount(0xA000000F, PlcValueType.UDINT),
-    StateMachineAbnormalStateChangeCount(0xA0000010, PlcValueType.UDINT),
-    //StateMachineDisableAutomaticLinkControl(0xA0000011, PlcValueType.BOOL),
-    //ScanSlavesNum(0xF002000, PlcValueType.),
-    //ScanSlavesScanCommand(0xF002001, PlcValueType.),
-    ScanSlavesScanStatus(0xF002002, PlcValueType.USINT),
-    //ScanSlavesScanReply(0xF002003, PlcValueType.),
-    ConfiguredSlavesNum(0xF0200000, PlcValueType.USINT), // Get the EtherCAT address by looping through the modules
-//    FrameStatisticsNum(0xF1200000, PlcValueType.);
-    FrameStatisticsCyclicLostFramesCount(0xF1200001, PlcValueType.UDINT),
-    FrameStatisticsAcyclicLostFramesCount(0xF1200002, PlcValueType.UDINT);
-    //DiagnosticNum(0xF2000000, PlcValueType.),
-    //DiagnosticResetDiagnosticCounters(0xF2000001, PlcValueType.);
-
-    private static final Map<Integer, EtherCatConstant> map;
-    static {
-        map = new HashMap<>();
-        for (EtherCatConstant value : EtherCatConstant.values()) {
-            map.put(value.offset, value);
-        }
-    }
-
-    final int offset;
-    final PlcValueType plcValueType;
-    EtherCatConstant(int offset, PlcValueType plcValueType) {
-        this.offset = offset;
-        this.plcValueType = plcValueType;
-    }
-
-    public static EtherCatConstant enumForValue(int offset) {
-        return map.get(offset);
-    }
-
-}
 public class HelloAdsEtherCatTelemetry {
 
     private static final Logger logger = LoggerFactory.getLogger(HelloAdsTelemetry.class);
 
     private static final int AoEGroupIndex = 0x0000F302;
 
-    protected void outputEtherCatData(String localIp, String remoteIp, String remoteAmdNetId) {
+    protected void outputEtherCatData(String remoteIp, String localAmsNetId, String remoteAmdNetId) {
+        Map<Integer, EtherCatDevice> devices = new HashMap<>();
         // The AmsNetId of the PLC usually is {ip}.1.1 and that of the EtherCAT master is {ip}.3.1
         // The port number equals the EtherCAT address. For the EtherCAT master, this port is 0xFFFF = 65535
-        try (PlcConnection connection = PlcDriverManager.getDefault().getConnectionManager().getConnection(String.format("ads:tcp://%s?targetAmsNetId=%s.3.1&targetAmsPort=65535&sourceAmsNetId=%s.1.1&sourceAmsPort=65534&load-symbol-and-data-type-tables=false", remoteIp, remoteIp, localIp))) {
-            String manufacturerDeviceName = connection.readRequestBuilder().addTagAddress("manufacturerDeviceName", getAddress(EtherCatConstant.ManufacturerDeviceName)).build().execute().get().getString("manufacturerDeviceName");
-            int hardwareVersion = connection.readRequestBuilder().addTagAddress("hardwareVersion", getAddress(EtherCatConstant.HardwareVersion)).build().execute().get().getInteger("hardwareVersion");
-            String softwareVersion = connection.readRequestBuilder().addTagAddress("softwareVersion", getAddress(EtherCatConstant.SoftwareVersion)).build().execute().get().getString("softwareVersion");
+        try (PlcConnection connection = PlcDriverManager.getDefault().getConnectionManager().getConnection(String.format("ads:tcp://%s?targetAmsNetId=%s&targetAmsPort=65535&sourceAmsNetId=%s&sourceAmsPort=65534&load-symbol-and-data-type-tables=false", remoteIp, remoteAmdNetId, localAmsNetId))) {
+            String manufacturerDeviceName = connection.readRequestBuilder().addTagAddress("manufacturerDeviceName", getAddress(EtherCatMasterConstants.ManufacturerDeviceName)).build().execute().get().getString("manufacturerDeviceName");
+            int hardwareVersion = connection.readRequestBuilder().addTagAddress("hardwareVersion", getAddress(EtherCatMasterConstants.HardwareVersion)).build().execute().get().getInteger("hardwareVersion");
+            String softwareVersion = connection.readRequestBuilder().addTagAddress("softwareVersion", getAddress(EtherCatMasterConstants.SoftwareVersion)).build().execute().get().getString("softwareVersion");
             logger.info("Found Device: {} Hardware Version {}, Software Version {}", manufacturerDeviceName, hardwareVersion, softwareVersion);
 
             logger.info("Identity Object:");
-            outputEtherCatSection(connection, EtherCatConstant.IdentityObjectNum.offset, EtherCatConstant.IdentityObjectNum.offset);
+            outputEtherCatSection(connection, EtherCatMasterConstants.IdentityObjectNum.offset, EtherCatMasterConstants.IdentityObjectNum.offset);
 
             // Load the number of EtherCAT slaves:
             int numSlaves = connection.readRequestBuilder().addTagAddress("numberOfSlaves", "0x0000F302/0xF0200000:USINT").build().execute().get().getInteger("numberOfSlaves");
 
             // Load the number of slaves and their etherCatAddresses
             // NOTE: We need to do this without using multi-item-requests as it seems that this part of the system doesn't support this.
-            Map<Integer, Integer> etherCatAddresses = new HashMap<>();
             for(int i = 0; i < numSlaves; i++) {
                 logger.info("Slave {}", i);
-                int etherCatAddressOffset = EtherCatConstant.ConfiguredSlavesNum.offset | (i + 1);
-                int configDataOffset = EtherCatConstant.ConfigurationDataNum.offset | (i << 16);
-                int stateMachineOffset = EtherCatConstant.StateMachineNum.offset | (i << 16);
+                int etherCatAddressOffset = EtherCatMasterConstants.ConfiguredSlavesNum.offset | (i + 1);
+                int configDataOffset = EtherCatMasterConstants.ConfigurationDataNum.offset | (i << 16);
+                int stateMachineOffset = EtherCatMasterConstants.StateMachineNum.offset | (i << 16);
 
                 String etherCatAddressAddress = String.format("0x%08X/0x%08X:%s", AoEGroupIndex, etherCatAddressOffset, PlcValueType.UINT.name());
                 int etherCatAddress = connection.readRequestBuilder().addTagAddress("etherCatAddress", etherCatAddressAddress).build().execute().get().getInteger("etherCatAddress");
                 logger.info(" - EtherCat Address: {}", etherCatAddress);
 
                 logger.info(" - Configuration Data:");
-                outputEtherCatSection(connection, configDataOffset, EtherCatConstant.ConfigurationDataNum.offset);
-                logger.info(" - State Machine Data");
-                outputEtherCatSection(connection, stateMachineOffset, EtherCatConstant.StateMachineNum.offset);
-            }
+                EtherCatDevice device = outputEtherCatSection(connection, configDataOffset, EtherCatMasterConstants.ConfigurationDataNum.offset);
+                //logger.info(" - State Machine Data");
+                //outputEtherCatSection(connection, stateMachineOffset, EtherCatConstant.StateMachineNum.offset);
+                devices.put(i, device);
+
+                //String manufacturerDeviceName = connection.readRequestBuilder().addTagAddress("lalala", getAddress(EtherCatConstant.ManufacturerDeviceName)).build().execute().get().getString("manufacturerDeviceName");
 
+            }
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
-    } 
+
+        logger.info("Loading EtherCAT device information:");
+        for (Map.Entry<Integer, EtherCatDevice> device : devices.entrySet()) {
+            int deviceIndex = device.getKey();
+            EtherCatDevice etherCatDevice = device.getValue();
+            logger.info(" - Connecting with device {} on EtherCAT address {}", deviceIndex, 1001);
+            try (PlcConnection etherCatConnection = PlcDriverManager.getDefault().getConnectionManager().getConnection(String.format("ads:tcp://%s?targetAmsNetId=%s&targetAmsPort=%d&sourceAmsNetId=%s&sourceAmsPort=65534&load-symbol-and-data-type-tables=false", remoteIp, remoteAmdNetId, etherCatDevice.getEtherCatAddress(), localAmsNetId))) {
+                String etherCatAddressAddress = String.format("0x%08X/0x%08X:%s", AoEGroupIndex, 0x60000001, PlcValueType.BOOL.name());
+                PlcReadRequest build = etherCatConnection.readRequestBuilder()
+                    .addTagAddress("Channel 1", etherCatAddressAddress)
+                    .build();
+                PlcReadResponse plcReadResponse = build.execute().get();
+                System.out.println(plcReadResponse);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
     
-    protected void outputEtherCatSection(PlcConnection connection, int baseOffset, int baseTypeOffset) throws Exception {
+    protected EtherCatDevice outputEtherCatSection(PlcConnection connection, int baseOffset, int baseTypeOffset) throws Exception {
         String sectionNumAddress = String.format("0x%08X/0x%08X:%s", AoEGroupIndex, baseOffset, PlcValueType.USINT.name());
+
+        int etherCatAddress = 0;
+        String deviceName = null;
+        int vendorId = 0;
+        int productCode = 0;
+        int revisionNumber = 0;
+
         int identityObjectNum = connection.readRequestBuilder().addTagAddress("num", sectionNumAddress).build().execute().get().getInteger("num");
         for (int i = 1; i < identityObjectNum; i++) {
             int offset = baseOffset | i;
             int typeOffset = baseTypeOffset | i;
-            EtherCatConstant etherCatConstantAddress = EtherCatConstant.enumForValue(typeOffset);
+            EtherCatMasterConstants etherCatConstantAddress = EtherCatMasterConstants.enumForValue(typeOffset);
             PlcValueType etherCatConstantType = (etherCatConstantAddress != null) ? etherCatConstantAddress.plcValueType : PlcValueType.USINT;
             String address = String.format("0x%08X/0x%08X:%s", AoEGroupIndex, offset, etherCatConstantType.name());
             if(etherCatConstantType == PlcValueType.STRING) {
@@ -167,6 +122,23 @@ public class HelloAdsEtherCatTelemetry {
                 if (readResponse.getResponseCode("value") == PlcResponseCode.OK) {
                     PlcValue value = readResponse.getPlcValue("value");
                     if (etherCatConstantAddress != null) {
+                        switch (etherCatConstantAddress) {
+                            case ConfigurationDataAddress:
+                                etherCatAddress = value.getInteger();
+                                break;
+                            case ConfigurationDataName:
+                                deviceName = value.getString();
+                                break;
+                            case ConfigurationDataVendorId:
+                                vendorId = value.getInteger();
+                                break;
+                            case ConfigurationDataProductCode:
+                                productCode = value.getInteger();
+                                break;
+                            case ConfigurationDataRevisionNumber:
+                                revisionNumber = value.getInteger();
+                                break;
+                        }
                         logger.info("    - {}: {}", etherCatConstantAddress.name(), value.toString());
                     } else {
                         logger.info("    - Unknown: {}", value.toString());
@@ -176,10 +148,11 @@ public class HelloAdsEtherCatTelemetry {
                 // Ignore this ...
             }
         }
+        return new EtherCatDevice(etherCatAddress, deviceName, vendorId, productCode, revisionNumber);
     }
     
     
-    protected String getAddress(EtherCatConstant variable) {
+    protected String getAddress(EtherCatMasterConstants variable) {
         String dataTypeName = variable.plcValueType.name();
         if (variable.plcValueType == PlcValueType.STRING) {
             dataTypeName += "(255)";
@@ -188,14 +161,15 @@ public class HelloAdsEtherCatTelemetry {
     }
 
     public static void main(String[] args) {
-        if(args.length != 2) {
-            logger.error("Usage: HelloAdsTelemetry {ip-address of PLC} {local ip-address}");
+        if(args.length != 3) {
+            logger.error("Usage: HelloAdsTelemetry {remote ip-address} {local-ams-net-id} {remote-ams-net-id}");
             System.exit(1);
         }
 
         String remoteIp = args[0];
-        String localIp = args[1];
-        new HelloAdsEtherCatTelemetry().outputEtherCatData(localIp, remoteIp, remoteIp + ".3.1");
+        String localAmsNetId = args[1];
+        String remoteAmsNetId = args[2];
+        new HelloAdsEtherCatTelemetry().outputEtherCatData(remoteIp, localAmsNetId, remoteAmsNetId);
     }
     
 }
\ No newline at end of file
diff --git a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsTelemetry.java b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsTelemetry.java
index ef4eb86b7f..02a29c68ae 100644
--- a/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsTelemetry.java
+++ b/plc4j/examples/hello-ads-telemetry/src/main/java/org/apache/plc4x/java/examples/helloads/telemetry/HelloAdsTelemetry.java
@@ -28,42 +28,6 @@ import org.slf4j.LoggerFactory;
 import java.util.HashMap;
 import java.util.Map;
 
-// Extracted from https://infosys.beckhoff.com/index.php?content=../content/1031/devicemanager/262982923.html
-
-enum Module {
-    NIC(0x00000002),
-    Time(0x00000003),
-    UserManagement(0x00000004),
-    RAS(0x00000005),
-    FTP(0x00000006),
-    SMB(0x00000007),
-    TwinCat(0x00000008),
-    Software(0x0000000A),
-    COU(0x0000000B),
-    Memory(0x0000000C),
-    FirewallWinCE(0x0000000E),
-    FileSystemObject(0x00000010),
-    DisplayDevice(0x00000013),
-    EWF(0x00000014),
-    FBWF(0x00000015),
-    OS(0x00000018),
-    RAID(0x00000019),
-    Fan(0x0000001B),
-    Mainboard(0x0000001C),
-    DiskManagement(0x0000001D),
-    UPS(0x0000001E),
-    PhysicalDrive(0x0000001F),
-    MassStorageDrive(0x00000020),
-    UnifiedWriteFilter(0x00000021),
-    IO(0x00000022),
-    Misc(0x00000100);
-
-    final int typeNumber;
-    Module(int typeNumber) {
-        this.typeNumber = typeNumber;
-    }
-
-}
 public class HelloAdsTelemetry {
 
     private static final Logger logger = LoggerFactory.getLogger(HelloAdsTelemetry.class);
@@ -96,8 +60,8 @@ public class HelloAdsTelemetry {
             }
 
             // Read the ADS Version information.
-            if(moduleTypeIdMap.containsKey(Module.TwinCat.typeNumber)) {
-                Integer mdpId = moduleTypeIdMap.get(Module.TwinCat.typeNumber);
+            if(moduleTypeIdMap.containsKey(DeviceManagerConstants.TwinCat.typeNumber)) {
+                Integer mdpId = moduleTypeIdMap.get(DeviceManagerConstants.TwinCat.typeNumber);
                 int addrAdsTypeMain = (mdpId << 20) | 0x80010001;
                 int addrAdsTypeMinor = (mdpId << 20) | 0x80010002;
                 int addrAdsTypeBuild = (mdpId << 20) | 0x80010003;
@@ -107,8 +71,8 @@ public class HelloAdsTelemetry {
                 logger.info("TwinCat Version: {}.{}.{}", twinCatMainVersion, twinCatMinorVersion, twinCatBuildVersion);
             }
             // Read the CPU Frequency and Utilization.
-            if(moduleTypeIdMap.containsKey(Module.COU.typeNumber)) {
-                Integer mdpId = moduleTypeIdMap.get(Module.COU.typeNumber);
+            if(moduleTypeIdMap.containsKey(DeviceManagerConstants.COU.typeNumber)) {
+                Integer mdpId = moduleTypeIdMap.get(DeviceManagerConstants.COU.typeNumber);
                 int addrCpuFrequency = (mdpId << 20) | 0x80010001;
                 int addrCpuUsage = (mdpId << 20) | 0x80010002;
                 int cpuFrequency = connection.readRequestBuilder().addTagAddress("value", String.format("0x0000F302/0x%8X:UDINT", addrCpuFrequency)).build().execute().get().getInteger("value");
@@ -116,8 +80,8 @@ public class HelloAdsTelemetry {
                 logger.info("CPU: Frequency: {}MHz Usage: {}%", cpuFrequency, cpuUsage);
             }
             // Read the Memory usage.
-            if(moduleTypeIdMap.containsKey(Module.Memory.typeNumber)) {
-                Integer mdpId = moduleTypeIdMap.get(Module.Memory.typeNumber);
+            if(moduleTypeIdMap.containsKey(DeviceManagerConstants.Memory.typeNumber)) {
+                Integer mdpId = moduleTypeIdMap.get(DeviceManagerConstants.Memory.typeNumber);
                 int addrMemoryAllocated = (mdpId << 20) | 0x80010001;
                 int addrMemoryAvailable = (mdpId << 20) | 0x80010002;
                 int memoryAllocated = connection.readRequestBuilder().addTagAddress("value", String.format("0x0000F302/0x%8X:UDINT", addrMemoryAllocated)).build().execute().get().getInteger("value");


[plc4x] 02/02: chore(plc4go): Updated the code-gen to use Contexts to pass along the array position information

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch featrue/cdutz/arrays-with-special-variables
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 6d7da29031e226ee400dd697374fa8ee8711786f
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Feb 2 20:04:06 2023 +0100

    chore(plc4go): Updated the code-gen to use Contexts to pass along the array position information
---
 .../language/go/GoLanguageTemplateHelper.java      |   34 +-
 .../templates/go/complex-type-template.go.ftlh     |  145 ++-
 .../templates/go/data-io-template.go.ftlh          |   11 +-
 .../resources/templates/go/enum-template.go.ftlh   |   17 +-
 .../templates/go/parser-factory-template.go.ftlh   |    4 +-
 .../go/xml-parser-factory-template.go.ftlh         |   10 +-
 .../testing/protocols/s7/DriverTestsuite.xml       |    3 +-
 .../protocols/s7/ParserSerializerTestsuite.xml     |   14 +-
 plc4go/internal/ads/Connection.go                  |    4 +-
 plc4go/internal/ads/MessageCodec.go                |    5 +-
 plc4go/internal/ads/Reader.go                      |    2 +-
 plc4go/internal/ads/Writer.go                      |    2 +-
 plc4go/internal/bacnetip/ApplicationLayer.go       |   29 +-
 plc4go/internal/bacnetip/Discoverer.go             |   11 +-
 plc4go/internal/bacnetip/MessageCodec.go           |    7 +-
 plc4go/internal/bacnetip/Reader.go                 |    2 +-
 .../internal/bacnetip/UDPCommunicationsModule.go   |    5 +-
 plc4go/internal/cbus/MessageCodec.go               |    3 +-
 plc4go/internal/cbus/Query.go                      |   12 +-
 plc4go/internal/cbus/Reader.go                     |    2 +-
 plc4go/internal/cbus/Subscriber.go                 |    2 +-
 plc4go/internal/cbus/Tag.go                        |   73 +-
 plc4go/internal/eip/MessageCodec.go                |    4 +-
 plc4go/internal/eip/Reader.go                      |    4 +-
 plc4go/internal/eip/Writer.go                      |    4 +-
 .../knxnetip/ConnectionDriverSpecificOperations.go |    8 +-
 plc4go/internal/knxnetip/Reader.go                 |    6 +-
 plc4go/internal/knxnetip/Subscriber.go             |    4 +-
 plc4go/internal/knxnetip/ValueDecoder.go           |    4 +-
 plc4go/internal/modbus/Reader.go                   |    2 +-
 plc4go/internal/s7/Reader.go                       |    2 +-
 plc4go/internal/s7/s7Io_test.go                    |   70 +-
 plc4go/internal/simulated/Device.go                |    3 +-
 plc4go/protocols/abeth/readwrite/ParserHelper.go   |   10 +-
 .../protocols/abeth/readwrite/XmlParserHelper.go   |   14 +-
 .../model/CIPEncapsulationConnectionRequest.go     |   27 +-
 .../model/CIPEncapsulationConnectionResponse.go    |   27 +-
 .../readwrite/model/CIPEncapsulationPacket.go      |   42 +-
 .../readwrite/model/CIPEncapsulationReadRequest.go |   33 +-
 .../model/CIPEncapsulationReadResponse.go          |   33 +-
 .../readwrite/model/DF1CommandRequestMessage.go    |   33 +-
 ...mandResponseMessageProtectedTypedLogicalRead.go |   30 +-
 .../abeth/readwrite/model/DF1RequestCommand.go     |   22 +-
 .../abeth/readwrite/model/DF1RequestMessage.go     |   22 +-
 .../model/DF1RequestProtectedTypedLogicalRead.go   |   27 +-
 .../abeth/readwrite/model/DF1ResponseMessage.go    |   22 +-
 .../ads/discovery/readwrite/ParserHelper.go        |   12 +-
 .../ads/discovery/readwrite/XmlParserHelper.go     |   16 +-
 .../ads/discovery/readwrite/model/AdsDiscovery.go  |   63 +-
 .../discovery/readwrite/model/AdsDiscoveryBlock.go |   42 +-
 .../readwrite/model/AdsDiscoveryBlockAmsNetId.go   |   33 +-
 .../model/AdsDiscoveryBlockFingerprint.go          |   27 +-
 .../readwrite/model/AdsDiscoveryBlockHostName.go   |   33 +-
 .../readwrite/model/AdsDiscoveryBlockOsData.go     |   27 +-
 .../readwrite/model/AdsDiscoveryBlockPassword.go   |   33 +-
 .../readwrite/model/AdsDiscoveryBlockRouteName.go  |   33 +-
 .../readwrite/model/AdsDiscoveryBlockStatus.go     |   31 +-
 .../readwrite/model/AdsDiscoveryBlockType.go       |   17 +-
 .../readwrite/model/AdsDiscoveryBlockUserName.go   |   33 +-
 .../readwrite/model/AdsDiscoveryBlockVersion.go    |   27 +-
 .../readwrite/model/AdsDiscoveryConstants.go       |   23 +-
 .../discovery/readwrite/model/AdsPortNumbers.go    |   17 +-
 .../ads/discovery/readwrite/model/AmsNetId.go      |   23 +-
 .../ads/discovery/readwrite/model/AmsString.go     |   23 +-
 .../ads/discovery/readwrite/model/Operation.go     |   17 +-
 .../ads/discovery/readwrite/model/Status.go        |   17 +-
 plc4go/protocols/ads/readwrite/ParserHelper.go     |   34 +-
 plc4go/protocols/ads/readwrite/XmlParserHelper.go  |   38 +-
 .../model/AdsAddDeviceNotificationRequest.go       |   31 +-
 .../model/AdsAddDeviceNotificationResponse.go      |   31 +-
 .../protocols/ads/readwrite/model/AdsConstants.go  |   23 +-
 .../protocols/ads/readwrite/model/AdsDataType.go   |   17 +-
 .../ads/readwrite/model/AdsDataTypeArrayInfo.go    |   27 +-
 .../readwrite/model/AdsDataTypeTableChildEntry.go  |   74 +-
 .../ads/readwrite/model/AdsDataTypeTableEntry.go   |   74 +-
 .../model/AdsDeleteDeviceNotificationRequest.go    |   27 +-
 .../model/AdsDeleteDeviceNotificationResponse.go   |   31 +-
 .../model/AdsDeviceNotificationRequest.go          |   53 +-
 .../model/AdsDeviceNotificationResponse.go         |   27 +-
 .../ads/readwrite/model/AdsInvalidRequest.go       |   27 +-
 .../ads/readwrite/model/AdsInvalidResponse.go      |   27 +-
 .../ads/readwrite/model/AdsMultiRequestItem.go     |   26 +-
 .../ads/readwrite/model/AdsMultiRequestItemRead.go |   27 +-
 .../model/AdsMultiRequestItemReadWrite.go          |   27 +-
 .../readwrite/model/AdsMultiRequestItemWrite.go    |   27 +-
 .../ads/readwrite/model/AdsNotificationSample.go   |   23 +-
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |   27 +-
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |   31 +-
 .../ads/readwrite/model/AdsReadRequest.go          |   27 +-
 .../ads/readwrite/model/AdsReadResponse.go         |   31 +-
 .../ads/readwrite/model/AdsReadStateRequest.go     |   27 +-
 .../ads/readwrite/model/AdsReadStateResponse.go    |   31 +-
 .../ads/readwrite/model/AdsReadWriteRequest.go     |   53 +-
 .../ads/readwrite/model/AdsReadWriteResponse.go    |   31 +-
 .../ads/readwrite/model/AdsStampHeader.go          |   49 +-
 .../ads/readwrite/model/AdsSymbolTableEntry.go     |   23 +-
 .../protocols/ads/readwrite/model/AdsTableSizes.go |   23 +-
 .../protocols/ads/readwrite/model/AdsTransMode.go  |   17 +-
 .../ads/readwrite/model/AdsWriteControlRequest.go  |   27 +-
 .../ads/readwrite/model/AdsWriteControlResponse.go |   31 +-
 .../ads/readwrite/model/AdsWriteRequest.go         |   27 +-
 .../ads/readwrite/model/AdsWriteResponse.go        |   31 +-
 plc4go/protocols/ads/readwrite/model/AmsNetId.go   |   23 +-
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |   80 +-
 .../readwrite/model/AmsSerialAcknowledgeFrame.go   |   23 +-
 .../ads/readwrite/model/AmsSerialFrame.go          |   29 +-
 .../ads/readwrite/model/AmsSerialResetFrame.go     |   23 +-
 .../protocols/ads/readwrite/model/AmsTCPPacket.go  |   31 +-
 plc4go/protocols/ads/readwrite/model/CommandId.go  |   17 +-
 plc4go/protocols/ads/readwrite/model/DataItem.go   |   11 +-
 .../ads/readwrite/model/DefaultAmsPorts.go         |   17 +-
 .../protocols/ads/readwrite/model/ErrorResponse.go |   27 +-
 .../protocols/ads/readwrite/model/PlcValueType.go  |   17 +-
 .../ads/readwrite/model/ReservedIndexGroups.go     |   17 +-
 plc4go/protocols/ads/readwrite/model/ReturnCode.go |   17 +-
 .../protocols/bacnetip/readwrite/ParserHelper.go   |  580 ++++-----
 .../bacnetip/readwrite/XmlParserHelper.go          |  584 ++++-----
 plc4go/protocols/bacnetip/readwrite/model/APDU.go  |   42 +-
 .../bacnetip/readwrite/model/APDUAbort.go          |   33 +-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |   45 +-
 .../readwrite/model/APDUConfirmedRequest.go        |   53 +-
 .../bacnetip/readwrite/model/APDUError.go          |   37 +-
 .../bacnetip/readwrite/model/APDUReject.go         |   33 +-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |   27 +-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |   31 +-
 .../readwrite/model/APDUUnconfirmedRequest.go      |   33 +-
 .../bacnetip/readwrite/model/APDUUnknown.go        |   27 +-
 .../protocols/bacnetip/readwrite/model/ApduType.go |   17 +-
 .../bacnetip/readwrite/model/BACnetAbortReason.go  |   17 +-
 .../readwrite/model/BACnetAbortReasonTagged.go     |   27 +-
 .../BACnetAccessAuthenticationFactorDisable.go     |   17 +-
 ...ACnetAccessAuthenticationFactorDisableTagged.go |   33 +-
 .../model/BACnetAccessCredentialDisable.go         |   17 +-
 .../model/BACnetAccessCredentialDisableReason.go   |   17 +-
 .../BACnetAccessCredentialDisableReasonTagged.go   |   33 +-
 .../model/BACnetAccessCredentialDisableTagged.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetAccessEvent.go  |   17 +-
 .../readwrite/model/BACnetAccessEventTagged.go     |   33 +-
 .../readwrite/model/BACnetAccessPassbackMode.go    |   17 +-
 .../model/BACnetAccessPassbackModeTagged.go        |   29 +-
 .../bacnetip/readwrite/model/BACnetAccessRule.go   |   53 +-
 .../model/BACnetAccessRuleLocationSpecifier.go     |   17 +-
 .../BACnetAccessRuleLocationSpecifierTagged.go     |   29 +-
 .../model/BACnetAccessRuleTimeRangeSpecifier.go    |   17 +-
 .../BACnetAccessRuleTimeRangeSpecifierTagged.go    |   29 +-
 .../readwrite/model/BACnetAccessThreatLevel.go     |   29 +-
 .../readwrite/model/BACnetAccessUserType.go        |   17 +-
 .../readwrite/model/BACnetAccessUserTypeTagged.go  |   33 +-
 .../model/BACnetAccessZoneOccupancyState.go        |   17 +-
 .../model/BACnetAccessZoneOccupancyStateTagged.go  |   33 +-
 .../readwrite/model/BACnetAccumulatorRecord.go     |   47 +-
 .../BACnetAccumulatorRecordAccumulatorStatus.go    |   17 +-
 ...CnetAccumulatorRecordAccumulatorStatusTagged.go |   29 +-
 .../bacnetip/readwrite/model/BACnetAction.go       |   17 +-
 .../readwrite/model/BACnetActionCommand.go         |   77 +-
 .../bacnetip/readwrite/model/BACnetActionList.go   |   47 +-
 .../bacnetip/readwrite/model/BACnetActionTagged.go |   29 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |   47 +-
 .../readwrite/model/BACnetAddressBinding.go        |   35 +-
 .../readwrite/model/BACnetAddressEnclosed.go       |   41 +-
 .../readwrite/model/BACnetApplicationTag.go        |   60 +-
 .../model/BACnetApplicationTagBitString.go         |   33 +-
 .../readwrite/model/BACnetApplicationTagBoolean.go |   37 +-
 .../model/BACnetApplicationTagCharacterString.go   |   37 +-
 .../readwrite/model/BACnetApplicationTagDate.go    |   33 +-
 .../readwrite/model/BACnetApplicationTagDouble.go  |   37 +-
 .../model/BACnetApplicationTagEnumerated.go        |   37 +-
 .../readwrite/model/BACnetApplicationTagNull.go    |   27 +-
 .../model/BACnetApplicationTagObjectIdentifier.go  |   41 +-
 .../model/BACnetApplicationTagOctetString.go       |   33 +-
 .../readwrite/model/BACnetApplicationTagReal.go    |   37 +-
 .../model/BACnetApplicationTagSignedInteger.go     |   37 +-
 .../readwrite/model/BACnetApplicationTagTime.go    |   33 +-
 .../model/BACnetApplicationTagUnsignedInteger.go   |   37 +-
 .../readwrite/model/BACnetAssignedAccessRights.go  |   35 +-
 .../readwrite/model/BACnetAssignedLandingCalls.go  |   29 +-
 .../BACnetAssignedLandingCallsLandingCallsList.go  |   47 +-
 ...netAssignedLandingCallsLandingCallsListEntry.go |   35 +-
 .../readwrite/model/BACnetAuthenticationFactor.go  |   41 +-
 .../model/BACnetAuthenticationFactorEnclosed.go    |   41 +-
 .../model/BACnetAuthenticationFactorFormat.go      |   41 +-
 .../model/BACnetAuthenticationFactorType.go        |   17 +-
 .../model/BACnetAuthenticationFactorTypeTagged.go  |   29 +-
 .../readwrite/model/BACnetAuthenticationPolicy.go  |   41 +-
 .../model/BACnetAuthenticationPolicyList.go        |   47 +-
 .../model/BACnetAuthenticationPolicyListEntry.go   |   35 +-
 .../readwrite/model/BACnetAuthenticationStatus.go  |   17 +-
 .../model/BACnetAuthenticationStatusTagged.go      |   29 +-
 .../model/BACnetAuthorizationExemption.go          |   17 +-
 .../model/BACnetAuthorizationExemptionTagged.go    |   33 +-
 .../readwrite/model/BACnetAuthorizationMode.go     |   17 +-
 .../model/BACnetAuthorizationModeTagged.go         |   33 +-
 .../bacnetip/readwrite/model/BACnetBDTEntry.go     |   35 +-
 .../bacnetip/readwrite/model/BACnetBackupState.go  |   17 +-
 .../readwrite/model/BACnetBackupStateTagged.go     |   29 +-
 .../readwrite/model/BACnetBinaryLightingPV.go      |   17 +-
 .../model/BACnetBinaryLightingPVTagged.go          |   33 +-
 .../bacnetip/readwrite/model/BACnetBinaryPV.go     |   17 +-
 .../readwrite/model/BACnetBinaryPVTagged.go        |   29 +-
 .../model/BACnetCOVMultipleSubscription.go         |   53 +-
 ...bscriptionListOfCovSubscriptionSpecification.go |   47 +-
 ...ptionListOfCovSubscriptionSpecificationEntry.go |   35 +-
 ...riptionSpecificationEntryListOfCovReferences.go |   47 +-
 ...onSpecificationEntryListOfCovReferencesEntry.go |   41 +-
 .../readwrite/model/BACnetCOVSubscription.go       |   53 +-
 .../readwrite/model/BACnetCalendarEntry.go         |   32 +-
 .../readwrite/model/BACnetCalendarEntryDate.go     |   33 +-
 .../model/BACnetCalendarEntryDateRange.go          |   33 +-
 .../readwrite/model/BACnetCalendarEntryEnclosed.go |   41 +-
 .../readwrite/model/BACnetCalendarEntryWeekNDay.go |   33 +-
 .../bacnetip/readwrite/model/BACnetChannelValue.go |   58 +-
 .../readwrite/model/BACnetChannelValueBitString.go |   33 +-
 .../readwrite/model/BACnetChannelValueBoolean.go   |   33 +-
 .../model/BACnetChannelValueCharacterString.go     |   33 +-
 .../readwrite/model/BACnetChannelValueDate.go      |   33 +-
 .../readwrite/model/BACnetChannelValueDouble.go    |   33 +-
 .../model/BACnetChannelValueEnumerated.go          |   33 +-
 .../readwrite/model/BACnetChannelValueInteger.go   |   33 +-
 .../model/BACnetChannelValueLightingCommand.go     |   33 +-
 .../readwrite/model/BACnetChannelValueNull.go      |   33 +-
 .../model/BACnetChannelValueObjectidentifier.go    |   33 +-
 .../model/BACnetChannelValueOctetString.go         |   33 +-
 .../readwrite/model/BACnetChannelValueReal.go      |   33 +-
 .../readwrite/model/BACnetChannelValueTime.go      |   33 +-
 .../readwrite/model/BACnetChannelValueUnsigned.go  |   33 +-
 .../readwrite/model/BACnetCharacterEncoding.go     |   17 +-
 .../bacnetip/readwrite/model/BACnetClientCOV.go    |   30 +-
 .../readwrite/model/BACnetClientCOVNone.go         |   33 +-
 .../readwrite/model/BACnetClientCOVObject.go       |   33 +-
 .../bacnetip/readwrite/model/BACnetClosingTag.go   |   29 +-
 .../model/BACnetConfirmedServiceChoice.go          |   17 +-
 .../model/BACnetConfirmedServiceRequest.go         |   92 +-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   63 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   51 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   39 +-
 ...tConfirmedServiceRequestAtomicReadFileRecord.go |   39 +-
 ...tConfirmedServiceRequestAtomicReadFileStream.go |   39 +-
 ...edServiceRequestAtomicReadFileStreamOrRecord.go |   42 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   57 +-
 .../BACnetConfirmedServiceRequestAuthenticate.go   |   27 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |   57 +-
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   57 +-
 ...rmedServiceRequestConfirmedEventNotification.go |  105 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   45 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   51 +-
 ...rviceRequestConfirmedTextMessageMessageClass.go |   42 +-
 ...estConfirmedTextMessageMessageClassCharacter.go |   33 +-
 ...questConfirmedTextMessageMessageClassNumeric.go |   33 +-
 ...ceRequestConfirmedTextMessageMessagePriority.go |   17 +-
 ...estConfirmedTextMessageMessagePriorityTagged.go |   29 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   39 +-
 ...medServiceRequestCreateObjectObjectSpecifier.go |   59 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   33 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   45 +-
 ...questDeviceCommunicationControlEnableDisable.go |   17 +-
 ...eviceCommunicationControlEnableDisableTagged.go |   29 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   63 +-
 ...estGetEnrollmentSummaryAcknowledgementFilter.go |   17 +-
 ...EnrollmentSummaryAcknowledgementFilterTagged.go |   29 +-
 ...eRequestGetEnrollmentSummaryEventStateFilter.go |   17 +-
 ...stGetEnrollmentSummaryEventStateFilterTagged.go |   29 +-
 ...iceRequestGetEnrollmentSummaryPriorityFilter.go |   47 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   33 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   51 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |   45 +-
 ...nfirmedServiceRequestReadPropertyConditional.go |   27 +-
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   39 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   51 +-
 .../BACnetConfirmedServiceRequestReadRangeRange.go |   44 +-
 ...firmedServiceRequestReadRangeRangeByPosition.go |   39 +-
 ...ServiceRequestReadRangeRangeBySequenceNumber.go |   39 +-
 ...tConfirmedServiceRequestReadRangeRangeByTime.go |   39 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   39 +-
 ...ReinitializeDeviceReinitializedStateOfDevice.go |   17 +-
 ...ializeDeviceReinitializedStateOfDeviceTagged.go |   29 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   51 +-
 .../BACnetConfirmedServiceRequestRequestKey.go     |   27 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |   51 +-
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   63 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   57 +-
 ...yMultipleListOfCovSubscriptionSpecifications.go |   53 +-
 ...tipleListOfCovSubscriptionSpecificationsList.go |   47 +-
 ...ListOfCovSubscriptionSpecificationsReference.go |   41 +-
 .../model/BACnetConfirmedServiceRequestUnknown.go  |   27 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   39 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   45 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   39 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |   57 +-
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   39 +-
 .../readwrite/model/BACnetConstructedData.go       | 1354 ++++++++++----------
 .../model/BACnetConstructedDataAPDULength.go       |   37 +-
 .../BACnetConstructedDataAPDUSegmentTimeout.go     |   37 +-
 .../model/BACnetConstructedDataAPDUTimeout.go      |   37 +-
 .../model/BACnetConstructedDataAbsenteeLimit.go    |   37 +-
 .../model/BACnetConstructedDataAcceptedModes.go    |   39 +-
 .../BACnetConstructedDataAccessAlarmEvents.go      |   39 +-
 .../BACnetConstructedDataAccessCredentialAll.go    |   27 +-
 .../BACnetConstructedDataAccessDoorAlarmValues.go  |   39 +-
 .../model/BACnetConstructedDataAccessDoorAll.go    |   27 +-
 .../BACnetConstructedDataAccessDoorFaultValues.go  |   39 +-
 .../BACnetConstructedDataAccessDoorPresentValue.go |   37 +-
 ...etConstructedDataAccessDoorRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataAccessDoors.go      |   49 +-
 .../model/BACnetConstructedDataAccessEvent.go      |   37 +-
 ...nstructedDataAccessEventAuthenticationFactor.go |   37 +-
 .../BACnetConstructedDataAccessEventCredential.go  |   37 +-
 .../model/BACnetConstructedDataAccessEventTag.go   |   37 +-
 .../model/BACnetConstructedDataAccessEventTime.go  |   37 +-
 .../model/BACnetConstructedDataAccessPointAll.go   |   27 +-
 .../model/BACnetConstructedDataAccessRightsAll.go  |   27 +-
 ...BACnetConstructedDataAccessTransactionEvents.go |   39 +-
 .../model/BACnetConstructedDataAccessUserAll.go    |   27 +-
 .../BACnetConstructedDataAccessZoneAdjustValue.go  |   37 +-
 .../BACnetConstructedDataAccessZoneAlarmValues.go  |   39 +-
 .../model/BACnetConstructedDataAccessZoneAll.go    |   27 +-
 .../model/BACnetConstructedDataAccompaniment.go    |   37 +-
 .../BACnetConstructedDataAccompanimentTime.go      |   37 +-
 .../model/BACnetConstructedDataAccumulatorAll.go   |   27 +-
 ...CnetConstructedDataAccumulatorFaultHighLimit.go |   37 +-
 ...ACnetConstructedDataAccumulatorFaultLowLimit.go |   37 +-
 .../BACnetConstructedDataAccumulatorHighLimit.go   |   37 +-
 .../BACnetConstructedDataAccumulatorLowLimit.go    |   37 +-
 ...BACnetConstructedDataAccumulatorMaxPresValue.go |   37 +-
 ...BACnetConstructedDataAccumulatorMinPresValue.go |   37 +-
 .../model/BACnetConstructedDataAckRequired.go      |   37 +-
 .../model/BACnetConstructedDataAckedTransitions.go |   37 +-
 .../readwrite/model/BACnetConstructedDataAction.go |   49 +-
 .../model/BACnetConstructedDataActionText.go       |   49 +-
 .../model/BACnetConstructedDataActivationTime.go   |   37 +-
 ...netConstructedDataActiveAuthenticationPolicy.go |   37 +-
 ...onstructedDataActiveCOVMultipleSubscriptions.go |   39 +-
 .../BACnetConstructedDataActiveCOVSubscriptions.go |   39 +-
 .../model/BACnetConstructedDataActiveText.go       |   37 +-
 .../model/BACnetConstructedDataActiveVTSessions.go |   39 +-
 .../model/BACnetConstructedDataActualShedLevel.go  |   37 +-
 .../model/BACnetConstructedDataAdjustValue.go      |   37 +-
 .../model/BACnetConstructedDataAlarmValue.go       |   37 +-
 .../model/BACnetConstructedDataAlarmValues.go      |   49 +-
 .../BACnetConstructedDataAlertEnrollmentAll.go     |   27 +-
 ...etConstructedDataAlertEnrollmentPresentValue.go |   37 +-
 .../model/BACnetConstructedDataAlignIntervals.go   |   37 +-
 .../BACnetConstructedDataAllWritesSuccessful.go    |   37 +-
 .../BACnetConstructedDataAllowGroupDelayInhibit.go |   37 +-
 .../model/BACnetConstructedDataAnalogInputAll.go   |   27 +-
 ...CnetConstructedDataAnalogInputFaultHighLimit.go |   37 +-
 ...ACnetConstructedDataAnalogInputFaultLowLimit.go |   37 +-
 ...CnetConstructedDataAnalogInputInterfaceValue.go |   37 +-
 ...BACnetConstructedDataAnalogInputMaxPresValue.go |   37 +-
 ...BACnetConstructedDataAnalogInputPresentValue.go |   37 +-
 .../model/BACnetConstructedDataAnalogOutputAll.go  |   27 +-
 ...netConstructedDataAnalogOutputInterfaceValue.go |   37 +-
 ...ACnetConstructedDataAnalogOutputMaxPresValue.go |   37 +-
 ...ACnetConstructedDataAnalogOutputPresentValue.go |   37 +-
 ...ConstructedDataAnalogOutputRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataAnalogValueAll.go   |   27 +-
 ...CnetConstructedDataAnalogValueFaultHighLimit.go |   37 +-
 ...ACnetConstructedDataAnalogValueFaultLowLimit.go |   37 +-
 ...BACnetConstructedDataAnalogValueMaxPresValue.go |   37 +-
 ...BACnetConstructedDataAnalogValuePresentValue.go |   37 +-
 ...tConstructedDataAnalogValueRelinquishDefault.go |   37 +-
 ...netConstructedDataApplicationSoftwareVersion.go |   37 +-
 .../model/BACnetConstructedDataArchive.go          |   37 +-
 .../BACnetConstructedDataAssignedAccessRights.go   |   49 +-
 .../BACnetConstructedDataAssignedLandingCalls.go   |   49 +-
 .../model/BACnetConstructedDataAttemptedSamples.go |   37 +-
 .../BACnetConstructedDataAuthenticationFactors.go  |   49 +-
 ...ACnetConstructedDataAuthenticationPolicyList.go |   49 +-
 ...CnetConstructedDataAuthenticationPolicyNames.go |   49 +-
 .../BACnetConstructedDataAuthenticationStatus.go   |   37 +-
 ...BACnetConstructedDataAuthorizationExemptions.go |   39 +-
 .../BACnetConstructedDataAuthorizationMode.go      |   37 +-
 .../BACnetConstructedDataAutoSlaveDiscovery.go     |   37 +-
 .../model/BACnetConstructedDataAverageValue.go     |   37 +-
 .../model/BACnetConstructedDataAveragingAll.go     |   27 +-
 .../BACnetConstructedDataBACnetIPGlobalAddress.go  |   37 +-
 .../model/BACnetConstructedDataBACnetIPMode.go     |   37 +-
 ...ACnetConstructedDataBACnetIPMulticastAddress.go |   37 +-
 .../BACnetConstructedDataBACnetIPNATTraversal.go   |   37 +-
 .../model/BACnetConstructedDataBACnetIPUDPPort.go  |   37 +-
 .../model/BACnetConstructedDataBACnetIPv6Mode.go   |   37 +-
 ...netConstructedDataBACnetIPv6MulticastAddress.go |   37 +-
 .../BACnetConstructedDataBACnetIPv6UDPPort.go      |   37 +-
 ...CnetConstructedDataBBMDAcceptFDRegistrations.go |   37 +-
 ...onstructedDataBBMDBroadcastDistributionTable.go |   39 +-
 .../BACnetConstructedDataBBMDForeignDeviceTable.go |   39 +-
 .../BACnetConstructedDataBackupAndRestoreState.go  |   37 +-
 .../BACnetConstructedDataBackupFailureTimeout.go   |   37 +-
 .../BACnetConstructedDataBackupPreparationTime.go  |   37 +-
 ...ACnetConstructedDataBaseDeviceSecurityPolicy.go |   37 +-
 .../model/BACnetConstructedDataBelongsTo.go        |   37 +-
 .../readwrite/model/BACnetConstructedDataBias.go   |   37 +-
 .../model/BACnetConstructedDataBinaryInputAll.go   |   27 +-
 ...CnetConstructedDataBinaryInputInterfaceValue.go |   37 +-
 ...BACnetConstructedDataBinaryInputPresentValue.go |   37 +-
 ...BACnetConstructedDataBinaryLightingOutputAll.go |   27 +-
 ...tructedDataBinaryLightingOutputFeedbackValue.go |   37 +-
 ...structedDataBinaryLightingOutputPresentValue.go |   37 +-
 ...tedDataBinaryLightingOutputRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBinaryOutputAll.go  |   27 +-
 ...CnetConstructedDataBinaryOutputFeedbackValue.go |   37 +-
 ...netConstructedDataBinaryOutputInterfaceValue.go |   37 +-
 ...ACnetConstructedDataBinaryOutputPresentValue.go |   37 +-
 ...ConstructedDataBinaryOutputRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBinaryValueAll.go   |   27 +-
 ...BACnetConstructedDataBinaryValuePresentValue.go |   37 +-
 ...tConstructedDataBinaryValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBitMask.go          |   37 +-
 ...CnetConstructedDataBitStringValueAlarmValues.go |   49 +-
 ...netConstructedDataBitStringValuePresentValue.go |   37 +-
 ...nstructedDataBitStringValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataBitText.go          |   49 +-
 .../BACnetConstructedDataBitstringValueAll.go      |   27 +-
 .../model/BACnetConstructedDataBlinkWarnEnable.go  |   37 +-
 .../model/BACnetConstructedDataBufferSize.go       |   37 +-
 .../model/BACnetConstructedDataCOVIncrement.go     |   37 +-
 .../model/BACnetConstructedDataCOVPeriod.go        |   37 +-
 ...CnetConstructedDataCOVResubscriptionInterval.go |   37 +-
 .../model/BACnetConstructedDataCOVUPeriod.go       |   37 +-
 .../model/BACnetConstructedDataCOVURecipients.go   |   39 +-
 .../model/BACnetConstructedDataCalendarAll.go      |   27 +-
 .../BACnetConstructedDataCalendarPresentValue.go   |   37 +-
 .../BACnetConstructedDataCarAssignedDirection.go   |   37 +-
 .../model/BACnetConstructedDataCarDoorCommand.go   |   49 +-
 .../model/BACnetConstructedDataCarDoorStatus.go    |   49 +-
 .../model/BACnetConstructedDataCarDoorText.go      |   49 +-
 .../model/BACnetConstructedDataCarDoorZone.go      |   37 +-
 .../model/BACnetConstructedDataCarDriveStatus.go   |   37 +-
 .../model/BACnetConstructedDataCarLoad.go          |   37 +-
 .../model/BACnetConstructedDataCarLoadUnits.go     |   37 +-
 .../model/BACnetConstructedDataCarMode.go          |   37 +-
 .../BACnetConstructedDataCarMovingDirection.go     |   37 +-
 .../model/BACnetConstructedDataCarPosition.go      |   37 +-
 .../BACnetConstructedDataChangeOfStateCount.go     |   37 +-
 .../BACnetConstructedDataChangeOfStateTime.go      |   37 +-
 .../model/BACnetConstructedDataChangesPending.go   |   37 +-
 .../model/BACnetConstructedDataChannelAll.go       |   27 +-
 ...tedDataChannelListOfObjectPropertyReferences.go |   49 +-
 .../model/BACnetConstructedDataChannelNumber.go    |   37 +-
 .../BACnetConstructedDataChannelPresentValue.go    |   37 +-
 ...nstructedDataCharacterStringValueAlarmValues.go |   49 +-
 ...nstructedDataCharacterStringValueFaultValues.go |   49 +-
 ...structedDataCharacterStringValuePresentValue.go |   37 +-
 ...tedDataCharacterStringValueRelinquishDefault.go |   37 +-
 ...BACnetConstructedDataCharacterstringValueAll.go |   27 +-
 .../BACnetConstructedDataClientCOVIncrement.go     |   37 +-
 .../model/BACnetConstructedDataCommand.go          |   37 +-
 .../model/BACnetConstructedDataCommandAction.go    |   49 +-
 .../model/BACnetConstructedDataCommandAll.go       |   27 +-
 .../model/BACnetConstructedDataCommandTimeArray.go |   49 +-
 .../BACnetConstructedDataConfigurationFiles.go     |   49 +-
 .../model/BACnetConstructedDataControlGroups.go    |   49 +-
 ...etConstructedDataControlledVariableReference.go |   37 +-
 ...BACnetConstructedDataControlledVariableUnits.go |   37 +-
 ...BACnetConstructedDataControlledVariableValue.go |   37 +-
 .../readwrite/model/BACnetConstructedDataCount.go  |   37 +-
 .../BACnetConstructedDataCountBeforeChange.go      |   37 +-
 .../model/BACnetConstructedDataCountChangeTime.go  |   37 +-
 .../BACnetConstructedDataCredentialDataInputAll.go |   27 +-
 ...nstructedDataCredentialDataInputPresentValue.go |   37 +-
 ...ConstructedDataCredentialDataInputUpdateTime.go |   37 +-
 .../BACnetConstructedDataCredentialDisable.go      |   37 +-
 .../model/BACnetConstructedDataCredentialStatus.go |   37 +-
 .../model/BACnetConstructedDataCredentials.go      |   39 +-
 .../BACnetConstructedDataCredentialsInZone.go      |   39 +-
 .../BACnetConstructedDataCurrentCommandPriority.go |   37 +-
 .../model/BACnetConstructedDataDatabaseRevision.go |   37 +-
 .../model/BACnetConstructedDataDateList.go         |   39 +-
 ...tConstructedDataDatePatternValuePresentValue.go |   37 +-
 ...tructedDataDatePatternValueRelinquishDefault.go |   37 +-
 ...structedDataDateTimePatternValuePresentValue.go |   37 +-
 ...tedDataDateTimePatternValueRelinquishDefault.go |   37 +-
 ...CnetConstructedDataDateTimeValuePresentValue.go |   37 +-
 ...onstructedDataDateTimeValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataDateValueAll.go     |   27 +-
 .../BACnetConstructedDataDateValuePresentValue.go  |   37 +-
 ...netConstructedDataDateValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataDatepatternValueAll.go    |   27 +-
 .../model/BACnetConstructedDataDatetimeValueAll.go |   27 +-
 ...BACnetConstructedDataDatetimepatternValueAll.go |   27 +-
 .../BACnetConstructedDataDaylightSavingsStatus.go  |   37 +-
 .../model/BACnetConstructedDataDaysRemaining.go    |   37 +-
 .../model/BACnetConstructedDataDeadband.go         |   37 +-
 .../model/BACnetConstructedDataDefaultFadeTime.go  |   37 +-
 .../model/BACnetConstructedDataDefaultRampRate.go  |   37 +-
 .../BACnetConstructedDataDefaultStepIncrement.go   |   37 +-
 ...onstructedDataDefaultSubordinateRelationship.go |   37 +-
 .../model/BACnetConstructedDataDefaultTimeout.go   |   37 +-
 ...BACnetConstructedDataDeployedProfileLocation.go |   37 +-
 .../BACnetConstructedDataDerivativeConstant.go     |   37 +-
 ...BACnetConstructedDataDerivativeConstantUnits.go |   37 +-
 .../model/BACnetConstructedDataDescription.go      |   37 +-
 .../BACnetConstructedDataDescriptionOfHalt.go      |   37 +-
 .../BACnetConstructedDataDeviceAddressBinding.go   |   39 +-
 .../model/BACnetConstructedDataDeviceAll.go        |   27 +-
 .../BACnetConstructedDataDeviceMaxInfoFrames.go    |   37 +-
 .../model/BACnetConstructedDataDeviceMaxMaster.go  |   37 +-
 .../model/BACnetConstructedDataDeviceType.go       |   37 +-
 .../model/BACnetConstructedDataDirectReading.go    |   37 +-
 ...BACnetConstructedDataDistributionKeyRevision.go |   37 +-
 .../model/BACnetConstructedDataDoNotHide.go        |   37 +-
 .../model/BACnetConstructedDataDoorAlarmState.go   |   37 +-
 .../BACnetConstructedDataDoorExtendedPulseTime.go  |   37 +-
 .../model/BACnetConstructedDataDoorMembers.go      |   49 +-
 .../BACnetConstructedDataDoorOpenTooLongTime.go    |   37 +-
 .../model/BACnetConstructedDataDoorPulseTime.go    |   37 +-
 .../model/BACnetConstructedDataDoorStatus.go       |   37 +-
 .../BACnetConstructedDataDoorUnlockDelayTime.go    |   37 +-
 .../model/BACnetConstructedDataDutyWindow.go       |   37 +-
 .../model/BACnetConstructedDataEffectivePeriod.go  |   37 +-
 .../model/BACnetConstructedDataEgressActive.go     |   37 +-
 .../model/BACnetConstructedDataEgressTime.go       |   37 +-
 .../BACnetConstructedDataElapsedActiveTime.go      |   37 +-
 .../model/BACnetConstructedDataElement.go          |   59 +-
 .../model/BACnetConstructedDataElevatorGroup.go    |   37 +-
 .../model/BACnetConstructedDataElevatorGroupAll.go |   27 +-
 ...CnetConstructedDataElevatorGroupGroupMembers.go |   49 +-
 .../readwrite/model/BACnetConstructedDataEnable.go |   37 +-
 .../model/BACnetConstructedDataEnergyMeter.go      |   37 +-
 .../model/BACnetConstructedDataEnergyMeterRef.go   |   37 +-
 .../model/BACnetConstructedDataEntryPoints.go      |   39 +-
 .../model/BACnetConstructedDataErrorLimit.go       |   37 +-
 .../model/BACnetConstructedDataEscalatorAll.go     |   27 +-
 .../BACnetConstructedDataEscalatorFaultSignals.go  |   39 +-
 .../model/BACnetConstructedDataEscalatorMode.go    |   37 +-
 .../BACnetConstructedDataEventAlgorithmInhibit.go  |   37 +-
 ...ACnetConstructedDataEventAlgorithmInhibitRef.go |   37 +-
 .../BACnetConstructedDataEventDetectionEnable.go   |   37 +-
 .../model/BACnetConstructedDataEventEnable.go      |   37 +-
 .../BACnetConstructedDataEventEnrollmentAll.go     |   27 +-
 .../model/BACnetConstructedDataEventLogAll.go      |   27 +-
 .../BACnetConstructedDataEventLogLogBuffer.go      |   39 +-
 .../BACnetConstructedDataEventMessageTexts.go      |   61 +-
 ...BACnetConstructedDataEventMessageTextsConfig.go |   61 +-
 .../model/BACnetConstructedDataEventParameters.go  |   37 +-
 .../model/BACnetConstructedDataEventState.go       |   37 +-
 .../model/BACnetConstructedDataEventTimeStamps.go  |   61 +-
 .../model/BACnetConstructedDataEventType.go        |   37 +-
 .../BACnetConstructedDataExceptionSchedule.go      |   49 +-
 .../model/BACnetConstructedDataExecutionDelay.go   |   49 +-
 .../model/BACnetConstructedDataExitPoints.go       |   39 +-
 .../BACnetConstructedDataExpectedShedLevel.go      |   37 +-
 .../model/BACnetConstructedDataExpirationTime.go   |   37 +-
 .../BACnetConstructedDataExtendedTimeEnable.go     |   37 +-
 .../model/BACnetConstructedDataFDBBMDAddress.go    |   37 +-
 .../BACnetConstructedDataFDSubscriptionLifetime.go |   37 +-
 .../BACnetConstructedDataFailedAttemptEvents.go    |   39 +-
 .../model/BACnetConstructedDataFailedAttempts.go   |   37 +-
 .../BACnetConstructedDataFailedAttemptsTime.go     |   37 +-
 .../model/BACnetConstructedDataFaultHighLimit.go   |   37 +-
 .../model/BACnetConstructedDataFaultLowLimit.go    |   37 +-
 .../model/BACnetConstructedDataFaultParameters.go  |   37 +-
 .../model/BACnetConstructedDataFaultSignals.go     |   39 +-
 .../model/BACnetConstructedDataFaultType.go        |   37 +-
 .../model/BACnetConstructedDataFaultValues.go      |   49 +-
 .../model/BACnetConstructedDataFileAccessMethod.go |   37 +-
 .../model/BACnetConstructedDataFileAll.go          |   27 +-
 .../model/BACnetConstructedDataFileRecordCount.go  |   37 +-
 .../model/BACnetConstructedDataFileSize.go         |   37 +-
 .../model/BACnetConstructedDataFileType.go         |   37 +-
 .../model/BACnetConstructedDataFirmwareRevision.go |   37 +-
 .../model/BACnetConstructedDataFloorText.go        |   49 +-
 .../model/BACnetConstructedDataFullDutyBaseline.go |   37 +-
 .../model/BACnetConstructedDataGlobalGroupAll.go   |   27 +-
 ...BACnetConstructedDataGlobalGroupGroupMembers.go |   49 +-
 ...BACnetConstructedDataGlobalGroupPresentValue.go |   49 +-
 .../model/BACnetConstructedDataGlobalIdentifier.go |   37 +-
 .../model/BACnetConstructedDataGroupAll.go         |   27 +-
 .../model/BACnetConstructedDataGroupID.go          |   37 +-
 .../model/BACnetConstructedDataGroupMemberNames.go |   49 +-
 .../model/BACnetConstructedDataGroupMembers.go     |   49 +-
 .../model/BACnetConstructedDataGroupMode.go        |   37 +-
 .../BACnetConstructedDataGroupPresentValue.go      |   39 +-
 .../model/BACnetConstructedDataHighLimit.go        |   37 +-
 .../model/BACnetConstructedDataHigherDeck.go       |   37 +-
 .../model/BACnetConstructedDataIPAddress.go        |   37 +-
 .../model/BACnetConstructedDataIPDHCPEnable.go     |   37 +-
 .../model/BACnetConstructedDataIPDHCPLeaseTime.go  |   37 +-
 ...ACnetConstructedDataIPDHCPLeaseTimeRemaining.go |   37 +-
 .../model/BACnetConstructedDataIPDHCPServer.go     |   37 +-
 .../model/BACnetConstructedDataIPDNSServer.go      |   49 +-
 .../model/BACnetConstructedDataIPDefaultGateway.go |   37 +-
 .../model/BACnetConstructedDataIPSubnetMask.go     |   37 +-
 .../model/BACnetConstructedDataIPv6Address.go      |   37 +-
 ...ACnetConstructedDataIPv6AutoAddressingEnable.go |   37 +-
 .../BACnetConstructedDataIPv6DHCPLeaseTime.go      |   37 +-
 ...netConstructedDataIPv6DHCPLeaseTimeRemaining.go |   37 +-
 .../model/BACnetConstructedDataIPv6DHCPServer.go   |   37 +-
 .../model/BACnetConstructedDataIPv6DNSServer.go    |   49 +-
 .../BACnetConstructedDataIPv6DefaultGateway.go     |   37 +-
 .../model/BACnetConstructedDataIPv6PrefixLength.go |   37 +-
 .../model/BACnetConstructedDataIPv6ZoneIndex.go    |   37 +-
 .../model/BACnetConstructedDataInProcess.go        |   37 +-
 .../model/BACnetConstructedDataInProgress.go       |   37 +-
 .../model/BACnetConstructedDataInactiveText.go     |   37 +-
 .../model/BACnetConstructedDataInitialTimeout.go   |   37 +-
 .../model/BACnetConstructedDataInputReference.go   |   37 +-
 .../model/BACnetConstructedDataInstallationID.go   |   37 +-
 .../model/BACnetConstructedDataInstanceOf.go       |   37 +-
 .../BACnetConstructedDataInstantaneousPower.go     |   37 +-
 .../model/BACnetConstructedDataIntegerValueAll.go  |   27 +-
 ...ACnetConstructedDataIntegerValueCOVIncrement.go |   37 +-
 .../BACnetConstructedDataIntegerValueDeadband.go   |   37 +-
 ...netConstructedDataIntegerValueFaultHighLimit.go |   37 +-
 ...CnetConstructedDataIntegerValueFaultLowLimit.go |   37 +-
 .../BACnetConstructedDataIntegerValueHighLimit.go  |   37 +-
 .../BACnetConstructedDataIntegerValueLowLimit.go   |   37 +-
 ...ACnetConstructedDataIntegerValueMaxPresValue.go |   37 +-
 ...ACnetConstructedDataIntegerValueMinPresValue.go |   37 +-
 ...ACnetConstructedDataIntegerValuePresentValue.go |   37 +-
 ...ConstructedDataIntegerValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataIntegerValueResolution.go |   37 +-
 .../model/BACnetConstructedDataIntegralConstant.go |   37 +-
 .../BACnetConstructedDataIntegralConstantUnits.go  |   37 +-
 .../model/BACnetConstructedDataIntervalOffset.go   |   37 +-
 .../readwrite/model/BACnetConstructedDataIsUTC.go  |   37 +-
 .../model/BACnetConstructedDataKeySets.go          |   49 +-
 .../BACnetConstructedDataLandingCallControl.go     |   37 +-
 .../model/BACnetConstructedDataLandingCalls.go     |   39 +-
 .../BACnetConstructedDataLandingDoorStatus.go      |   49 +-
 .../BACnetConstructedDataLargeAnalogValueAll.go    |   27 +-
 ...tConstructedDataLargeAnalogValueCOVIncrement.go |   37 +-
 ...ACnetConstructedDataLargeAnalogValueDeadband.go |   37 +-
 ...onstructedDataLargeAnalogValueFaultHighLimit.go |   37 +-
 ...ConstructedDataLargeAnalogValueFaultLowLimit.go |   37 +-
 ...CnetConstructedDataLargeAnalogValueHighLimit.go |   37 +-
 ...ACnetConstructedDataLargeAnalogValueLowLimit.go |   37 +-
 ...tConstructedDataLargeAnalogValueMaxPresValue.go |   37 +-
 ...tConstructedDataLargeAnalogValueMinPresValue.go |   37 +-
 ...tConstructedDataLargeAnalogValuePresentValue.go |   37 +-
 ...tructedDataLargeAnalogValueRelinquishDefault.go |   37 +-
 ...netConstructedDataLargeAnalogValueResolution.go |   37 +-
 .../model/BACnetConstructedDataLastAccessEvent.go  |   37 +-
 .../model/BACnetConstructedDataLastAccessPoint.go  |   37 +-
 .../model/BACnetConstructedDataLastCommandTime.go  |   37 +-
 .../BACnetConstructedDataLastCredentialAdded.go    |   37 +-
 ...BACnetConstructedDataLastCredentialAddedTime.go |   37 +-
 .../BACnetConstructedDataLastCredentialRemoved.go  |   37 +-
 ...CnetConstructedDataLastCredentialRemovedTime.go |   37 +-
 .../model/BACnetConstructedDataLastKeyServer.go    |   37 +-
 .../model/BACnetConstructedDataLastNotifyRecord.go |   37 +-
 .../model/BACnetConstructedDataLastPriority.go     |   37 +-
 .../BACnetConstructedDataLastRestartReason.go      |   37 +-
 .../model/BACnetConstructedDataLastRestoreTime.go  |   37 +-
 .../model/BACnetConstructedDataLastStateChange.go  |   37 +-
 .../model/BACnetConstructedDataLastUseTime.go      |   37 +-
 .../BACnetConstructedDataLifeSafetyAlarmValues.go  |   39 +-
 ...netConstructedDataLifeSafetyPointAlarmValues.go |   39 +-
 .../BACnetConstructedDataLifeSafetyPointAll.go     |   27 +-
 ...netConstructedDataLifeSafetyPointFaultValues.go |   39 +-
 ...etConstructedDataLifeSafetyPointPresentValue.go |   37 +-
 ...CnetConstructedDataLifeSafetyZoneAlarmValues.go |   39 +-
 .../BACnetConstructedDataLifeSafetyZoneAll.go      |   27 +-
 ...CnetConstructedDataLifeSafetyZoneFaultValues.go |   39 +-
 ...tructedDataLifeSafetyZoneMaintenanceRequired.go |   37 +-
 ...netConstructedDataLifeSafetyZonePresentValue.go |   37 +-
 .../model/BACnetConstructedDataLiftAll.go          |   27 +-
 .../model/BACnetConstructedDataLiftFaultSignals.go |   39 +-
 .../model/BACnetConstructedDataLightingCommand.go  |   37 +-
 ...onstructedDataLightingCommandDefaultPriority.go |   37 +-
 .../BACnetConstructedDataLightingOutputAll.go      |   27 +-
 ...etConstructedDataLightingOutputFeedbackValue.go |   37 +-
 ...netConstructedDataLightingOutputPresentValue.go |   37 +-
 ...nstructedDataLightingOutputRelinquishDefault.go |   37 +-
 ...etConstructedDataLightingOutputTrackingValue.go |   37 +-
 .../model/BACnetConstructedDataLimitEnable.go      |   37 +-
 ...BACnetConstructedDataLimitMonitoringInterval.go |   37 +-
 .../model/BACnetConstructedDataLinkSpeed.go        |   37 +-
 .../BACnetConstructedDataLinkSpeedAutonegotiate.go |   37 +-
 .../model/BACnetConstructedDataLinkSpeeds.go       |   49 +-
 .../BACnetConstructedDataListOfGroupMembers.go     |   39 +-
 ...onstructedDataListOfObjectPropertyReferences.go |   39 +-
 .../model/BACnetConstructedDataLoadControlAll.go   |   27 +-
 ...BACnetConstructedDataLoadControlPresentValue.go |   37 +-
 .../model/BACnetConstructedDataLocalDate.go        |   37 +-
 .../BACnetConstructedDataLocalForwardingOnly.go    |   37 +-
 .../model/BACnetConstructedDataLocalTime.go        |   37 +-
 .../model/BACnetConstructedDataLocation.go         |   37 +-
 .../model/BACnetConstructedDataLockStatus.go       |   37 +-
 .../model/BACnetConstructedDataLockout.go          |   37 +-
 .../BACnetConstructedDataLockoutRelinquishTime.go  |   37 +-
 .../model/BACnetConstructedDataLogBuffer.go        |   49 +-
 ...BACnetConstructedDataLogDeviceObjectProperty.go |   37 +-
 .../model/BACnetConstructedDataLogInterval.go      |   37 +-
 .../model/BACnetConstructedDataLoggingObject.go    |   37 +-
 .../model/BACnetConstructedDataLoggingRecord.go    |   37 +-
 .../model/BACnetConstructedDataLoggingType.go      |   37 +-
 .../model/BACnetConstructedDataLoopAction.go       |   37 +-
 .../model/BACnetConstructedDataLoopAll.go          |   27 +-
 .../model/BACnetConstructedDataLoopPresentValue.go |   37 +-
 .../model/BACnetConstructedDataLowDiffLimit.go     |   37 +-
 .../model/BACnetConstructedDataLowLimit.go         |   37 +-
 .../model/BACnetConstructedDataLowerDeck.go        |   37 +-
 .../model/BACnetConstructedDataMACAddress.go       |   37 +-
 .../model/BACnetConstructedDataMachineRoomID.go    |   37 +-
 .../BACnetConstructedDataMaintenanceRequired.go    |   37 +-
 .../model/BACnetConstructedDataMakingCarCall.go    |   49 +-
 ...tConstructedDataManipulatedVariableReference.go |   37 +-
 ...CnetConstructedDataManualSlaveAddressBinding.go |   39 +-
 .../BACnetConstructedDataMaskedAlarmValues.go      |   39 +-
 .../BACnetConstructedDataMaxAPDULengthAccepted.go  |   37 +-
 .../model/BACnetConstructedDataMaxActualValue.go   |   37 +-
 .../BACnetConstructedDataMaxFailedAttempts.go      |   37 +-
 .../model/BACnetConstructedDataMaxInfoFrames.go    |   37 +-
 .../model/BACnetConstructedDataMaxMaster.go        |   37 +-
 .../model/BACnetConstructedDataMaxPresValue.go     |   37 +-
 .../BACnetConstructedDataMaxSegmentsAccepted.go    |   37 +-
 .../model/BACnetConstructedDataMaximumOutput.go    |   37 +-
 .../model/BACnetConstructedDataMaximumValue.go     |   37 +-
 .../BACnetConstructedDataMaximumValueTimestamp.go  |   37 +-
 .../model/BACnetConstructedDataMemberOf.go         |   39 +-
 .../BACnetConstructedDataMemberStatusFlags.go      |   37 +-
 .../model/BACnetConstructedDataMembers.go          |   39 +-
 .../model/BACnetConstructedDataMinActualValue.go   |   37 +-
 .../model/BACnetConstructedDataMinPresValue.go     |   37 +-
 .../model/BACnetConstructedDataMinimumOffTime.go   |   37 +-
 .../model/BACnetConstructedDataMinimumOnTime.go    |   37 +-
 .../model/BACnetConstructedDataMinimumOutput.go    |   37 +-
 .../model/BACnetConstructedDataMinimumValue.go     |   37 +-
 .../BACnetConstructedDataMinimumValueTimestamp.go  |   37 +-
 .../readwrite/model/BACnetConstructedDataMode.go   |   37 +-
 .../model/BACnetConstructedDataModelName.go        |   37 +-
 .../model/BACnetConstructedDataModificationDate.go |   37 +-
 ...netConstructedDataMultiStateInputAlarmValues.go |   39 +-
 .../BACnetConstructedDataMultiStateInputAll.go     |   27 +-
 ...netConstructedDataMultiStateInputFaultValues.go |   39 +-
 ...ConstructedDataMultiStateInputInterfaceValue.go |   37 +-
 .../BACnetConstructedDataMultiStateOutputAll.go    |   27 +-
 ...ConstructedDataMultiStateOutputFeedbackValue.go |   37 +-
 ...onstructedDataMultiStateOutputInterfaceValue.go |   37 +-
 ...tructedDataMultiStateOutputRelinquishDefault.go |   37 +-
 ...netConstructedDataMultiStateValueAlarmValues.go |   39 +-
 .../BACnetConstructedDataMultiStateValueAll.go     |   27 +-
 ...netConstructedDataMultiStateValueFaultValues.go |   39 +-
 ...structedDataMultiStateValueRelinquishDefault.go |   37 +-
 .../model/BACnetConstructedDataMusterPoint.go      |   37 +-
 .../BACnetConstructedDataNegativeAccessRules.go    |   49 +-
 ...ConstructedDataNetworkAccessSecurityPolicies.go |   49 +-
 .../BACnetConstructedDataNetworkInterfaceName.go   |   37 +-
 .../model/BACnetConstructedDataNetworkNumber.go    |   37 +-
 .../BACnetConstructedDataNetworkNumberQuality.go   |   37 +-
 .../model/BACnetConstructedDataNetworkPortAll.go   |   27 +-
 ...ACnetConstructedDataNetworkPortMaxInfoFrames.go |   37 +-
 .../BACnetConstructedDataNetworkPortMaxMaster.go   |   37 +-
 .../BACnetConstructedDataNetworkSecurityAll.go     |   27 +-
 .../model/BACnetConstructedDataNetworkType.go      |   37 +-
 .../BACnetConstructedDataNextStoppingFloor.go      |   37 +-
 .../model/BACnetConstructedDataNodeSubtype.go      |   37 +-
 .../model/BACnetConstructedDataNodeType.go         |   37 +-
 .../BACnetConstructedDataNotificationClass.go      |   37 +-
 .../BACnetConstructedDataNotificationClassAll.go   |   27 +-
 ...ACnetConstructedDataNotificationForwarderAll.go |   27 +-
 .../BACnetConstructedDataNotificationThreshold.go  |   37 +-
 .../model/BACnetConstructedDataNotifyType.go       |   37 +-
 .../BACnetConstructedDataNumberOfAPDURetries.go    |   37 +-
 ...onstructedDataNumberOfAuthenticationPolicies.go |   37 +-
 .../model/BACnetConstructedDataNumberOfStates.go   |   37 +-
 .../model/BACnetConstructedDataObjectIdentifier.go |   37 +-
 .../model/BACnetConstructedDataObjectList.go       |   49 +-
 .../model/BACnetConstructedDataObjectName.go       |   37 +-
 ...BACnetConstructedDataObjectPropertyReference.go |   37 +-
 .../model/BACnetConstructedDataObjectType.go       |   37 +-
 .../model/BACnetConstructedDataOccupancyCount.go   |   37 +-
 .../BACnetConstructedDataOccupancyCountAdjust.go   |   37 +-
 .../BACnetConstructedDataOccupancyCountEnable.go   |   37 +-
 .../BACnetConstructedDataOccupancyLowerLimit.go    |   37 +-
 ...etConstructedDataOccupancyLowerLimitEnforced.go |   37 +-
 .../model/BACnetConstructedDataOccupancyState.go   |   37 +-
 .../BACnetConstructedDataOccupancyUpperLimit.go    |   37 +-
 ...etConstructedDataOccupancyUpperLimitEnforced.go |   37 +-
 ...tConstructedDataOctetStringValuePresentValue.go |   37 +-
 ...tructedDataOctetStringValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataOctetstringValueAll.go    |   27 +-
 .../BACnetConstructedDataOperationDirection.go     |   37 +-
 .../BACnetConstructedDataOperationExpected.go      |   37 +-
 .../model/BACnetConstructedDataOptional.go         |   27 +-
 .../model/BACnetConstructedDataOutOfService.go     |   37 +-
 .../model/BACnetConstructedDataOutputUnits.go      |   37 +-
 .../BACnetConstructedDataPacketReorderTime.go      |   37 +-
 .../model/BACnetConstructedDataPassbackMode.go     |   37 +-
 .../model/BACnetConstructedDataPassbackTimeout.go  |   37 +-
 .../model/BACnetConstructedDataPassengerAlarm.go   |   37 +-
 .../model/BACnetConstructedDataPolarity.go         |   37 +-
 .../model/BACnetConstructedDataPortFilter.go       |   49 +-
 .../BACnetConstructedDataPositiveAccessRules.go    |   49 +-
 ...BACnetConstructedDataPositiveIntegerValueAll.go |   27 +-
 ...structedDataPositiveIntegerValueCOVIncrement.go |   37 +-
 ...tConstructedDataPositiveIntegerValueDeadband.go |   37 +-
 ...ructedDataPositiveIntegerValueFaultHighLimit.go |   37 +-
 ...tructedDataPositiveIntegerValueFaultLowLimit.go |   37 +-
 ...ConstructedDataPositiveIntegerValueHighLimit.go |   37 +-
 ...tConstructedDataPositiveIntegerValueLowLimit.go |   37 +-
 ...structedDataPositiveIntegerValueMaxPresValue.go |   37 +-
 ...structedDataPositiveIntegerValueMinPresValue.go |   37 +-
 ...tedDataPositiveIntegerValueRelinquishDefault.go |   37 +-
 ...onstructedDataPositiveIntegerValueResolution.go |   37 +-
 .../readwrite/model/BACnetConstructedDataPower.go  |   37 +-
 .../model/BACnetConstructedDataPowerMode.go        |   37 +-
 .../model/BACnetConstructedDataPrescale.go         |   37 +-
 .../model/BACnetConstructedDataPresentValue.go     |   37 +-
 .../model/BACnetConstructedDataPriority.go         |   49 +-
 .../model/BACnetConstructedDataPriorityArray.go    |   37 +-
 .../BACnetConstructedDataPriorityForWriting.go     |   37 +-
 .../BACnetConstructedDataProcessIdentifier.go      |   37 +-
 ...BACnetConstructedDataProcessIdentifierFilter.go |   37 +-
 .../model/BACnetConstructedDataProfileLocation.go  |   37 +-
 .../model/BACnetConstructedDataProfileName.go      |   37 +-
 .../model/BACnetConstructedDataProgramAll.go       |   27 +-
 .../model/BACnetConstructedDataProgramChange.go    |   37 +-
 .../model/BACnetConstructedDataProgramLocation.go  |   37 +-
 .../model/BACnetConstructedDataProgramState.go     |   37 +-
 .../model/BACnetConstructedDataPropertyList.go     |   49 +-
 .../BACnetConstructedDataProportionalConstant.go   |   37 +-
 ...CnetConstructedDataProportionalConstantUnits.go |   37 +-
 .../model/BACnetConstructedDataProtocolLevel.go    |   37 +-
 ...tConstructedDataProtocolObjectTypesSupported.go |   37 +-
 .../model/BACnetConstructedDataProtocolRevision.go |   37 +-
 ...CnetConstructedDataProtocolServicesSupported.go |   37 +-
 .../model/BACnetConstructedDataProtocolVersion.go  |   37 +-
 ...CnetConstructedDataPulseConverterAdjustValue.go |   37 +-
 .../BACnetConstructedDataPulseConverterAll.go      |   27 +-
 ...netConstructedDataPulseConverterPresentValue.go |   37 +-
 .../model/BACnetConstructedDataPulseRate.go        |   37 +-
 .../model/BACnetConstructedDataReadOnly.go         |   37 +-
 .../model/BACnetConstructedDataReasonForDisable.go |   39 +-
 .../model/BACnetConstructedDataReasonForHalt.go    |   37 +-
 .../model/BACnetConstructedDataRecipientList.go    |   39 +-
 .../model/BACnetConstructedDataRecordCount.go      |   37 +-
 ...ACnetConstructedDataRecordsSinceNotification.go |   37 +-
 .../model/BACnetConstructedDataReferencePort.go    |   37 +-
 .../BACnetConstructedDataRegisteredCarCall.go      |   49 +-
 .../model/BACnetConstructedDataReliability.go      |   37 +-
 ...tConstructedDataReliabilityEvaluationInhibit.go |   37 +-
 .../BACnetConstructedDataRelinquishDefault.go      |   37 +-
 .../model/BACnetConstructedDataRepresents.go       |   37 +-
 .../BACnetConstructedDataRequestedShedLevel.go     |   37 +-
 ...BACnetConstructedDataRequestedUpdateInterval.go |   37 +-
 .../model/BACnetConstructedDataRequired.go         |   27 +-
 .../model/BACnetConstructedDataResolution.go       |   37 +-
 ...ConstructedDataRestartNotificationRecipients.go |   39 +-
 .../BACnetConstructedDataRestoreCompletionTime.go  |   37 +-
 .../BACnetConstructedDataRestorePreparationTime.go |   37 +-
 .../model/BACnetConstructedDataRoutingTable.go     |   39 +-
 .../readwrite/model/BACnetConstructedDataScale.go  |   37 +-
 .../model/BACnetConstructedDataScaleFactor.go      |   37 +-
 .../model/BACnetConstructedDataScheduleAll.go      |   27 +-
 .../model/BACnetConstructedDataScheduleDefault.go  |   37 +-
 .../BACnetConstructedDataSchedulePresentValue.go   |   37 +-
 .../model/BACnetConstructedDataSecuredStatus.go    |   37 +-
 .../BACnetConstructedDataSecurityPDUTimeout.go     |   37 +-
 .../BACnetConstructedDataSecurityTimeWindow.go     |   37 +-
 .../BACnetConstructedDataSegmentationSupported.go  |   37 +-
 .../model/BACnetConstructedDataSerialNumber.go     |   37 +-
 .../model/BACnetConstructedDataSetpoint.go         |   37 +-
 .../BACnetConstructedDataSetpointReference.go      |   37 +-
 .../model/BACnetConstructedDataSetting.go          |   37 +-
 .../model/BACnetConstructedDataShedDuration.go     |   37 +-
 .../BACnetConstructedDataShedLevelDescriptions.go  |   49 +-
 .../model/BACnetConstructedDataShedLevels.go       |   49 +-
 .../model/BACnetConstructedDataSilenced.go         |   37 +-
 .../BACnetConstructedDataSlaveAddressBinding.go    |   39 +-
 .../model/BACnetConstructedDataSlaveProxyEnable.go |   37 +-
 .../model/BACnetConstructedDataStartTime.go        |   37 +-
 .../BACnetConstructedDataStateChangeValues.go      |   49 +-
 .../model/BACnetConstructedDataStateDescription.go |   37 +-
 .../model/BACnetConstructedDataStateText.go        |   49 +-
 .../model/BACnetConstructedDataStatusFlags.go      |   37 +-
 .../model/BACnetConstructedDataStopTime.go         |   37 +-
 .../model/BACnetConstructedDataStopWhenFull.go     |   37 +-
 .../model/BACnetConstructedDataStrikeCount.go      |   37 +-
 .../BACnetConstructedDataStructuredObjectList.go   |   49 +-
 .../BACnetConstructedDataStructuredViewAll.go      |   27 +-
 .../BACnetConstructedDataSubordinateAnnotations.go |   49 +-
 .../model/BACnetConstructedDataSubordinateList.go  |   49 +-
 .../BACnetConstructedDataSubordinateNodeTypes.go   |   49 +-
 ...ACnetConstructedDataSubordinateRelationships.go |   49 +-
 .../model/BACnetConstructedDataSubordinateTags.go  |   49 +-
 .../BACnetConstructedDataSubscribedRecipients.go   |   39 +-
 .../BACnetConstructedDataSupportedFormatClasses.go |   49 +-
 .../model/BACnetConstructedDataSupportedFormats.go |   49 +-
 ...etConstructedDataSupportedSecurityAlgorithms.go |   39 +-
 .../model/BACnetConstructedDataSystemStatus.go     |   37 +-
 .../readwrite/model/BACnetConstructedDataTags.go   |   49 +-
 .../model/BACnetConstructedDataThreatAuthority.go  |   37 +-
 .../model/BACnetConstructedDataThreatLevel.go      |   37 +-
 .../model/BACnetConstructedDataTimeDelay.go        |   37 +-
 .../model/BACnetConstructedDataTimeDelayNormal.go  |   37 +-
 .../BACnetConstructedDataTimeOfActiveTimeReset.go  |   37 +-
 .../BACnetConstructedDataTimeOfDeviceRestart.go    |   37 +-
 .../BACnetConstructedDataTimeOfStateCountReset.go  |   37 +-
 .../BACnetConstructedDataTimeOfStrikeCountReset.go |   37 +-
 ...tConstructedDataTimePatternValuePresentValue.go |   37 +-
 ...tructedDataTimePatternValueRelinquishDefault.go |   37 +-
 ...etConstructedDataTimeSynchronizationInterval.go |   37 +-
 ...ConstructedDataTimeSynchronizationRecipients.go |   39 +-
 .../model/BACnetConstructedDataTimeValueAll.go     |   27 +-
 .../BACnetConstructedDataTimeValuePresentValue.go  |   37 +-
 ...netConstructedDataTimeValueRelinquishDefault.go |   37 +-
 .../BACnetConstructedDataTimepatternValueAll.go    |   27 +-
 .../model/BACnetConstructedDataTimerAlarmValues.go |   39 +-
 .../model/BACnetConstructedDataTimerAll.go         |   27 +-
 .../BACnetConstructedDataTimerMaxPresValue.go      |   37 +-
 .../BACnetConstructedDataTimerMinPresValue.go      |   37 +-
 .../model/BACnetConstructedDataTimerResolution.go  |   37 +-
 .../model/BACnetConstructedDataTimerRunning.go     |   37 +-
 .../model/BACnetConstructedDataTimerState.go       |   37 +-
 .../model/BACnetConstructedDataTotalRecordCount.go |   37 +-
 .../model/BACnetConstructedDataTraceFlag.go        |   37 +-
 .../model/BACnetConstructedDataTrackingValue.go    |   37 +-
 ...tConstructedDataTransactionNotificationClass.go |   37 +-
 .../model/BACnetConstructedDataTransition.go       |   37 +-
 .../model/BACnetConstructedDataTrendLogAll.go      |   27 +-
 .../BACnetConstructedDataTrendLogLogBuffer.go      |   39 +-
 ...nstructedDataTrendLogLogDeviceObjectProperty.go |   37 +-
 .../BACnetConstructedDataTrendLogMultipleAll.go    |   27 +-
 ...CnetConstructedDataTrendLogMultipleLogBuffer.go |   39 +-
 ...dDataTrendLogMultipleLogDeviceObjectProperty.go |   49 +-
 .../model/BACnetConstructedDataTrigger.go          |   37 +-
 .../model/BACnetConstructedDataUTCOffset.go        |   37 +-
 ...structedDataUTCTimeSynchronizationRecipients.go |   39 +-
 .../readwrite/model/BACnetConstructedDataUnits.go  |   37 +-
 .../model/BACnetConstructedDataUnspecified.go      |   49 +-
 .../model/BACnetConstructedDataUpdateInterval.go   |   37 +-
 .../BACnetConstructedDataUpdateKeySetTimeout.go    |   37 +-
 .../model/BACnetConstructedDataUpdateTime.go       |   37 +-
 .../BACnetConstructedDataUserExternalIdentifier.go |   37 +-
 ...ACnetConstructedDataUserInformationReference.go |   37 +-
 .../model/BACnetConstructedDataUserName.go         |   37 +-
 .../model/BACnetConstructedDataUserType.go         |   37 +-
 .../model/BACnetConstructedDataUsesRemaining.go    |   37 +-
 .../BACnetConstructedDataVTClassesSupported.go     |   39 +-
 .../model/BACnetConstructedDataValidSamples.go     |   37 +-
 .../BACnetConstructedDataValueBeforeChange.go      |   37 +-
 .../model/BACnetConstructedDataValueChangeTime.go  |   37 +-
 .../model/BACnetConstructedDataValueSet.go         |   37 +-
 .../model/BACnetConstructedDataValueSource.go      |   37 +-
 .../model/BACnetConstructedDataValueSourceArray.go |   49 +-
 .../model/BACnetConstructedDataVarianceValue.go    |   37 +-
 .../model/BACnetConstructedDataVendorIdentifier.go |   37 +-
 .../model/BACnetConstructedDataVendorName.go       |   37 +-
 .../model/BACnetConstructedDataVerificationTime.go |   37 +-
 .../BACnetConstructedDataVirtualMACAddressTable.go |   39 +-
 .../model/BACnetConstructedDataWeeklySchedule.go   |   49 +-
 .../model/BACnetConstructedDataWindowInterval.go   |   37 +-
 .../model/BACnetConstructedDataWindowSamples.go    |   37 +-
 .../model/BACnetConstructedDataWriteStatus.go      |   37 +-
 .../model/BACnetConstructedDataZoneFrom.go         |   37 +-
 .../model/BACnetConstructedDataZoneMembers.go      |   39 +-
 .../readwrite/model/BACnetConstructedDataZoneTo.go |   37 +-
 .../bacnetip/readwrite/model/BACnetContextTag.go   |   62 +-
 .../readwrite/model/BACnetContextTagBitString.go   |   33 +-
 .../readwrite/model/BACnetContextTagBoolean.go     |   37 +-
 .../model/BACnetContextTagCharacterString.go       |   37 +-
 .../readwrite/model/BACnetContextTagDate.go        |   33 +-
 .../readwrite/model/BACnetContextTagDouble.go      |   37 +-
 .../readwrite/model/BACnetContextTagEnumerated.go  |   37 +-
 .../readwrite/model/BACnetContextTagNull.go        |   27 +-
 .../model/BACnetContextTagObjectIdentifier.go      |   41 +-
 .../readwrite/model/BACnetContextTagOctetString.go |   33 +-
 .../readwrite/model/BACnetContextTagReal.go        |   37 +-
 .../model/BACnetContextTagSignedInteger.go         |   37 +-
 .../readwrite/model/BACnetContextTagTime.go        |   33 +-
 .../readwrite/model/BACnetContextTagUnknown.go     |   27 +-
 .../model/BACnetContextTagUnsignedInteger.go       |   37 +-
 .../model/BACnetCredentialAuthenticationFactor.go  |   35 +-
 .../readwrite/model/BACnetDailySchedule.go         |   47 +-
 .../bacnetip/readwrite/model/BACnetDataType.go     |   17 +-
 .../bacnetip/readwrite/model/BACnetDateRange.go    |   35 +-
 .../readwrite/model/BACnetDateRangeEnclosed.go     |   41 +-
 .../bacnetip/readwrite/model/BACnetDateTime.go     |   35 +-
 .../readwrite/model/BACnetDateTimeEnclosed.go      |   41 +-
 .../bacnetip/readwrite/model/BACnetDaysOfWeek.go   |   17 +-
 .../readwrite/model/BACnetDaysOfWeekTagged.go      |   63 +-
 .../bacnetip/readwrite/model/BACnetDestination.go  |   65 +-
 .../model/BACnetDeviceObjectPropertyReference.go   |   47 +-
 .../BACnetDeviceObjectPropertyReferenceEnclosed.go |   41 +-
 .../readwrite/model/BACnetDeviceObjectReference.go |   35 +-
 .../model/BACnetDeviceObjectReferenceEnclosed.go   |   41 +-
 .../bacnetip/readwrite/model/BACnetDeviceStatus.go |   17 +-
 .../readwrite/model/BACnetDeviceStatusTagged.go    |   33 +-
 .../readwrite/model/BACnetDoorAlarmState.go        |   17 +-
 .../readwrite/model/BACnetDoorAlarmStateTagged.go  |   33 +-
 .../readwrite/model/BACnetDoorSecuredStatus.go     |   17 +-
 .../model/BACnetDoorSecuredStatusTagged.go         |   29 +-
 .../bacnetip/readwrite/model/BACnetDoorStatus.go   |   17 +-
 .../readwrite/model/BACnetDoorStatusTagged.go      |   33 +-
 .../bacnetip/readwrite/model/BACnetDoorValue.go    |   17 +-
 .../readwrite/model/BACnetDoorValueTagged.go       |   29 +-
 .../readwrite/model/BACnetEngineeringUnits.go      |   17 +-
 .../model/BACnetEngineeringUnitsTagged.go          |   33 +-
 .../bacnetip/readwrite/model/BACnetError.go        |   36 +-
 .../bacnetip/readwrite/model/BACnetErrorGeneral.go |   33 +-
 .../readwrite/model/BACnetEscalatorFault.go        |   17 +-
 .../readwrite/model/BACnetEscalatorFaultTagged.go  |   33 +-
 .../readwrite/model/BACnetEscalatorMode.go         |   17 +-
 .../readwrite/model/BACnetEscalatorModeTagged.go   |   33 +-
 .../model/BACnetEscalatorOperationDirection.go     |   17 +-
 .../BACnetEscalatorOperationDirectionTagged.go     |   33 +-
 .../readwrite/model/BACnetEventLogRecord.go        |   35 +-
 .../model/BACnetEventLogRecordLogDatum.go          |   44 +-
 .../model/BACnetEventLogRecordLogDatumLogStatus.go |   33 +-
 .../BACnetEventLogRecordLogDatumNotification.go    |   45 +-
 .../BACnetEventLogRecordLogDatumTimeChange.go      |   33 +-
 .../model/BACnetEventNotificationSubscription.go   |   47 +-
 .../readwrite/model/BACnetEventParameter.go        |   64 +-
 .../model/BACnetEventParameterAccessEvent.go       |   51 +-
 ...tEventParameterAccessEventListOfAccessEvents.go |   47 +-
 .../model/BACnetEventParameterBufferReady.go       |   51 +-
 .../model/BACnetEventParameterChangeOfBitstring.go |   57 +-
 ...ameterChangeOfBitstringListOfBitstringValues.go |   47 +-
 .../BACnetEventParameterChangeOfCharacterString.go |   51 +-
 ...eterChangeOfCharacterStringListOfAlarmValues.go |   47 +-
 .../BACnetEventParameterChangeOfDiscreteValue.go   |   45 +-
 .../BACnetEventParameterChangeOfLifeSavety.go      |   63 +-
 ...ParameterChangeOfLifeSavetyListOfAlarmValues.go |   47 +-
 ...hangeOfLifeSavetyListOfLifeSavetyAlarmValues.go |   47 +-
 .../model/BACnetEventParameterChangeOfState.go     |   51 +-
 ...ACnetEventParameterChangeOfStateListOfValues.go |   47 +-
 .../BACnetEventParameterChangeOfStatusFlags.go     |   51 +-
 .../model/BACnetEventParameterChangeOfTimer.go     |   57 +-
 .../BACnetEventParameterChangeOfTimerAlarmValue.go |   47 +-
 .../model/BACnetEventParameterChangeOfValue.go     |   51 +-
 ...BACnetEventParameterChangeOfValueCivCriteria.go |   42 +-
 ...ventParameterChangeOfValueCivCriteriaBitmask.go |   33 +-
 ...fValueCivCriteriaReferencedPropertyIncrement.go |   33 +-
 .../model/BACnetEventParameterCommandFailure.go    |   51 +-
 .../model/BACnetEventParameterDoubleOutOfRange.go  |   63 +-
 .../model/BACnetEventParameterExtended.go          |   57 +-
 .../BACnetEventParameterExtendedParameters.go      |  133 +-
 .../model/BACnetEventParameterFloatingLimit.go     |   69 +-
 .../readwrite/model/BACnetEventParameterNone.go    |   33 +-
 .../model/BACnetEventParameterOutOfRange.go        |   63 +-
 .../model/BACnetEventParameterSignedOutOfRange.go  |   63 +-
 .../BACnetEventParameterUnsignedOutOfRange.go      |   63 +-
 .../model/BACnetEventParameterUnsignedRange.go     |   57 +-
 .../readwrite/model/BACnetEventPriorities.go       |   53 +-
 .../bacnetip/readwrite/model/BACnetEventState.go   |   17 +-
 .../readwrite/model/BACnetEventStateTagged.go      |   33 +-
 .../readwrite/model/BACnetEventSummariesList.go    |   47 +-
 .../bacnetip/readwrite/model/BACnetEventSummary.go |   65 +-
 .../readwrite/model/BACnetEventTimestamps.go       |   41 +-
 .../model/BACnetEventTimestampsEnclosed.go         |   41 +-
 .../readwrite/model/BACnetEventTransitionBits.go   |   17 +-
 .../model/BACnetEventTransitionBitsTagged.go       |   47 +-
 .../bacnetip/readwrite/model/BACnetEventType.go    |   17 +-
 .../readwrite/model/BACnetEventTypeTagged.go       |   33 +-
 .../readwrite/model/BACnetFaultParameter.go        |   42 +-
 .../BACnetFaultParameterFaultCharacterString.go    |   45 +-
 ...rameterFaultCharacterStringListOfFaultValues.go |   47 +-
 .../model/BACnetFaultParameterFaultExtended.go     |   57 +-
 .../BACnetFaultParameterFaultExtendedParameters.go |   47 +-
 ...etFaultParameterFaultExtendedParametersEntry.go |   58 +-
 ...rameterFaultExtendedParametersEntryBitString.go |   33 +-
 ...ParameterFaultExtendedParametersEntryBoolean.go |   33 +-
 ...rFaultExtendedParametersEntryCharacterString.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryDate.go |   33 +-
 ...tParameterFaultExtendedParametersEntryDouble.go |   33 +-
 ...ameterFaultExtendedParametersEntryEnumerated.go |   33 +-
 ...ParameterFaultExtendedParametersEntryInteger.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryNull.go |   33 +-
 ...FaultExtendedParametersEntryObjectidentifier.go |   33 +-
 ...meterFaultExtendedParametersEntryOctetString.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryReal.go |   33 +-
 ...rameterFaultExtendedParametersEntryReference.go |   33 +-
 ...ultParameterFaultExtendedParametersEntryTime.go |   33 +-
 ...arameterFaultExtendedParametersEntryUnsigned.go |   33 +-
 .../model/BACnetFaultParameterFaultLifeSafety.go   |   51 +-
 ...ultParameterFaultLifeSafetyListOfFaultValues.go |   47 +-
 .../model/BACnetFaultParameterFaultListed.go       |   45 +-
 .../model/BACnetFaultParameterFaultOutOfRange.go   |   51 +-
 ...tFaultParameterFaultOutOfRangeMaxNormalValue.go |   46 +-
 ...ParameterFaultOutOfRangeMaxNormalValueDouble.go |   33 +-
 ...arameterFaultOutOfRangeMaxNormalValueInteger.go |   33 +-
 ...ltParameterFaultOutOfRangeMaxNormalValueReal.go |   33 +-
 ...rameterFaultOutOfRangeMaxNormalValueUnsigned.go |   33 +-
 ...tFaultParameterFaultOutOfRangeMinNormalValue.go |   46 +-
 ...ParameterFaultOutOfRangeMinNormalValueDouble.go |   33 +-
 ...arameterFaultOutOfRangeMinNormalValueInteger.go |   33 +-
 ...ltParameterFaultOutOfRangeMinNormalValueReal.go |   33 +-
 ...rameterFaultOutOfRangeMinNormalValueUnsigned.go |   33 +-
 .../model/BACnetFaultParameterFaultState.go        |   45 +-
 ...netFaultParameterFaultStateListOfFaultValues.go |   47 +-
 .../model/BACnetFaultParameterFaultStatusFlags.go  |   45 +-
 .../readwrite/model/BACnetFaultParameterNone.go    |   33 +-
 .../bacnetip/readwrite/model/BACnetFaultType.go    |   17 +-
 .../readwrite/model/BACnetFaultTypeTagged.go       |   29 +-
 .../readwrite/model/BACnetFileAccessMethod.go      |   17 +-
 .../model/BACnetFileAccessMethodTagged.go          |   29 +-
 .../readwrite/model/BACnetGroupChannelValue.go     |   41 +-
 .../readwrite/model/BACnetGroupChannelValueList.go |   47 +-
 .../bacnetip/readwrite/model/BACnetHostAddress.go  |   32 +-
 .../readwrite/model/BACnetHostAddressEnclosed.go   |   41 +-
 .../readwrite/model/BACnetHostAddressIpAddress.go  |   33 +-
 .../readwrite/model/BACnetHostAddressName.go       |   33 +-
 .../readwrite/model/BACnetHostAddressNull.go       |   33 +-
 .../bacnetip/readwrite/model/BACnetHostNPort.go    |   35 +-
 .../readwrite/model/BACnetHostNPortEnclosed.go     |   41 +-
 .../bacnetip/readwrite/model/BACnetIPMode.go       |   17 +-
 .../bacnetip/readwrite/model/BACnetIPModeTagged.go |   29 +-
 .../readwrite/model/BACnetKeyIdentifier.go         |   35 +-
 .../readwrite/model/BACnetLandingCallStatus.go     |   41 +-
 .../model/BACnetLandingCallStatusCommand.go        |   30 +-
 .../BACnetLandingCallStatusCommandDestination.go   |   33 +-
 .../BACnetLandingCallStatusCommandDirection.go     |   33 +-
 .../readwrite/model/BACnetLandingDoorStatus.go     |   29 +-
 .../BACnetLandingDoorStatusLandingDoorsList.go     |   47 +-
 ...BACnetLandingDoorStatusLandingDoorsListEntry.go |   35 +-
 .../readwrite/model/BACnetLifeSafetyMode.go        |   17 +-
 .../readwrite/model/BACnetLifeSafetyModeTagged.go  |   33 +-
 .../readwrite/model/BACnetLifeSafetyOperation.go   |   17 +-
 .../model/BACnetLifeSafetyOperationTagged.go       |   33 +-
 .../readwrite/model/BACnetLifeSafetyState.go       |   17 +-
 .../readwrite/model/BACnetLifeSafetyStateTagged.go |   33 +-
 .../readwrite/model/BACnetLiftCarCallList.go       |   29 +-
 .../model/BACnetLiftCarCallListFloorList.go        |   47 +-
 .../readwrite/model/BACnetLiftCarDirection.go      |   17 +-
 .../model/BACnetLiftCarDirectionTagged.go          |   33 +-
 .../readwrite/model/BACnetLiftCarDoorCommand.go    |   17 +-
 .../model/BACnetLiftCarDoorCommandTagged.go        |   29 +-
 .../readwrite/model/BACnetLiftCarDriveStatus.go    |   17 +-
 .../model/BACnetLiftCarDriveStatusTagged.go        |   33 +-
 .../bacnetip/readwrite/model/BACnetLiftCarMode.go  |   17 +-
 .../readwrite/model/BACnetLiftCarModeTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetLiftFault.go    |   17 +-
 .../readwrite/model/BACnetLiftFaultTagged.go       |   33 +-
 .../readwrite/model/BACnetLiftGroupMode.go         |   17 +-
 .../readwrite/model/BACnetLiftGroupModeTagged.go   |   29 +-
 .../readwrite/model/BACnetLightingCommand.go       |   59 +-
 .../model/BACnetLightingCommandEnclosed.go         |   41 +-
 .../readwrite/model/BACnetLightingInProgress.go    |   17 +-
 .../model/BACnetLightingInProgressTagged.go        |   29 +-
 .../readwrite/model/BACnetLightingOperation.go     |   17 +-
 .../model/BACnetLightingOperationTagged.go         |   33 +-
 .../readwrite/model/BACnetLightingTransition.go    |   17 +-
 .../model/BACnetLightingTransitionTagged.go        |   33 +-
 .../bacnetip/readwrite/model/BACnetLimitEnable.go  |   17 +-
 .../readwrite/model/BACnetLimitEnableTagged.go     |   43 +-
 .../bacnetip/readwrite/model/BACnetLockStatus.go   |   17 +-
 .../readwrite/model/BACnetLockStatusTagged.go      |   29 +-
 .../bacnetip/readwrite/model/BACnetLogData.go      |   44 +-
 .../readwrite/model/BACnetLogDataLogData.go        |   51 +-
 .../readwrite/model/BACnetLogDataLogDataEntry.go   |   44 +-
 .../model/BACnetLogDataLogDataEntryAnyValue.go     |   33 +-
 .../BACnetLogDataLogDataEntryBitStringValue.go     |   33 +-
 .../model/BACnetLogDataLogDataEntryBooleanValue.go |   33 +-
 .../BACnetLogDataLogDataEntryEnumeratedValue.go    |   33 +-
 .../model/BACnetLogDataLogDataEntryFailure.go      |   33 +-
 .../model/BACnetLogDataLogDataEntryIntegerValue.go |   33 +-
 .../model/BACnetLogDataLogDataEntryNullValue.go    |   33 +-
 .../model/BACnetLogDataLogDataEntryRealValue.go    |   33 +-
 .../BACnetLogDataLogDataEntryUnsignedValue.go      |   33 +-
 .../model/BACnetLogDataLogDataTimeChange.go        |   33 +-
 .../readwrite/model/BACnetLogDataLogStatus.go      |   33 +-
 .../readwrite/model/BACnetLogMultipleRecord.go     |   35 +-
 .../bacnetip/readwrite/model/BACnetLogRecord.go    |   41 +-
 .../readwrite/model/BACnetLogRecordLogDatum.go     |   60 +-
 .../model/BACnetLogRecordLogDatumAnyValue.go       |   33 +-
 .../model/BACnetLogRecordLogDatumBitStringValue.go |   33 +-
 .../model/BACnetLogRecordLogDatumBooleanValue.go   |   33 +-
 .../BACnetLogRecordLogDatumEnumeratedValue.go      |   33 +-
 .../model/BACnetLogRecordLogDatumFailure.go        |   33 +-
 .../model/BACnetLogRecordLogDatumIntegerValue.go   |   33 +-
 .../model/BACnetLogRecordLogDatumLogStatus.go      |   33 +-
 .../model/BACnetLogRecordLogDatumNullValue.go      |   33 +-
 .../model/BACnetLogRecordLogDatumRealValue.go      |   33 +-
 .../model/BACnetLogRecordLogDatumTimeChange.go     |   33 +-
 .../model/BACnetLogRecordLogDatumUnsignedValue.go  |   33 +-
 .../bacnetip/readwrite/model/BACnetLogStatus.go    |   17 +-
 .../readwrite/model/BACnetLogStatusTagged.go       |   47 +-
 .../bacnetip/readwrite/model/BACnetLoggingType.go  |   17 +-
 .../readwrite/model/BACnetLoggingTypeTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetMaintenance.go  |   17 +-
 .../readwrite/model/BACnetMaintenanceTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetNameValue.go    |   35 +-
 .../readwrite/model/BACnetNameValueCollection.go   |   47 +-
 .../readwrite/model/BACnetNetworkNumberQuality.go  |   17 +-
 .../model/BACnetNetworkNumberQualityTagged.go      |   29 +-
 .../readwrite/model/BACnetNetworkPortCommand.go    |   17 +-
 .../model/BACnetNetworkPortCommandTagged.go        |   33 +-
 .../readwrite/model/BACnetNetworkSecurityPolicy.go |   35 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |   17 +-
 .../readwrite/model/BACnetNetworkTypeTagged.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |   17 +-
 .../readwrite/model/BACnetNodeTypeTagged.go        |   29 +-
 .../model/BACnetNotificationParameters.go          |   78 +-
 .../BACnetNotificationParametersAccessEvent.go     |   75 +-
 .../BACnetNotificationParametersBufferReady.go     |   57 +-
 ...ACnetNotificationParametersChangeOfBitString.go |   51 +-
 ...otificationParametersChangeOfCharacterString.go |   57 +-
 ...tNotificationParametersChangeOfDiscreteValue.go |   51 +-
 ...ationParametersChangeOfDiscreteValueNewValue.go |   62 +-
 ...rametersChangeOfDiscreteValueNewValueBoolean.go |   33 +-
 ...ChangeOfDiscreteValueNewValueCharacterString.go |   33 +-
 ...ametersChangeOfDiscreteValueNewValueDatetime.go |   33 +-
 ...etersChangeOfDiscreteValueNewValueEnumerated.go |   33 +-
 ...rametersChangeOfDiscreteValueNewValueInteger.go |   33 +-
 ...hangeOfDiscreteValueNewValueObjectidentifier.go |   33 +-
 ...metersChangeOfDiscreteValueNewValueOctetDate.go |   33 +-
 ...tersChangeOfDiscreteValueNewValueOctetString.go |   33 +-
 ...metersChangeOfDiscreteValueNewValueOctetTime.go |   33 +-
 ...ametersChangeOfDiscreteValueNewValueUnsigned.go |   33 +-
 ...CnetNotificationParametersChangeOfLifeSafety.go |   63 +-
 ...netNotificationParametersChangeOfReliability.go |   57 +-
 .../BACnetNotificationParametersChangeOfState.go   |   51 +-
 ...netNotificationParametersChangeOfStatusFlags.go |   51 +-
 .../BACnetNotificationParametersChangeOfTimer.go   |   75 +-
 .../BACnetNotificationParametersChangeOfValue.go   |   51 +-
 ...tNotificationParametersChangeOfValueNewValue.go |   42 +-
 ...onParametersChangeOfValueNewValueChangedBits.go |   33 +-
 ...nParametersChangeOfValueNewValueChangedValue.go |   33 +-
 .../BACnetNotificationParametersCommandFailure.go  |   57 +-
 ...BACnetNotificationParametersComplexEventType.go |   33 +-
 ...BACnetNotificationParametersDoubleOutOfRange.go |   63 +-
 .../model/BACnetNotificationParametersExtended.go  |   57 +-
 ...CnetNotificationParametersExtendedParameters.go |  133 +-
 .../BACnetNotificationParametersFloatingLimit.go   |   63 +-
 .../BACnetNotificationParametersOutOfRange.go      |   63 +-
 ...BACnetNotificationParametersSignedOutOfRange.go |   63 +-
 ...CnetNotificationParametersUnsignedOutOfRange.go |   63 +-
 .../BACnetNotificationParametersUnsignedRange.go   |   57 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   17 +-
 .../readwrite/model/BACnetNotifyTypeTagged.go      |   29 +-
 .../model/BACnetObjectPropertyReference.go         |   41 +-
 .../model/BACnetObjectPropertyReferenceEnclosed.go |   41 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |   17 +-
 .../readwrite/model/BACnetObjectTypeTagged.go      |   33 +-
 .../readwrite/model/BACnetObjectTypesSupported.go  |   17 +-
 .../model/BACnetObjectTypesSupportedTagged.go      |   75 +-
 .../bacnetip/readwrite/model/BACnetOpeningTag.go   |   29 +-
 .../readwrite/model/BACnetOptionalBinaryPV.go      |   30 +-
 .../readwrite/model/BACnetOptionalBinaryPVNull.go  |   33 +-
 .../readwrite/model/BACnetOptionalBinaryPVValue.go |   33 +-
 .../model/BACnetOptionalCharacterString.go         |   30 +-
 .../model/BACnetOptionalCharacterStringNull.go     |   33 +-
 .../model/BACnetOptionalCharacterStringValue.go    |   33 +-
 .../bacnetip/readwrite/model/BACnetOptionalREAL.go |   30 +-
 .../readwrite/model/BACnetOptionalREALNull.go      |   33 +-
 .../readwrite/model/BACnetOptionalREALValue.go     |   33 +-
 .../readwrite/model/BACnetOptionalUnsigned.go      |   30 +-
 .../readwrite/model/BACnetOptionalUnsignedNull.go  |   33 +-
 .../readwrite/model/BACnetOptionalUnsignedValue.go |   33 +-
 .../bacnetip/readwrite/model/BACnetPolarity.go     |   17 +-
 .../readwrite/model/BACnetPolarityTagged.go        |   29 +-
 .../readwrite/model/BACnetPortPermission.go        |   35 +-
 .../bacnetip/readwrite/model/BACnetPrescale.go     |   35 +-
 .../readwrite/model/BACnetPriorityArray.go         |  117 +-
 .../readwrite/model/BACnetPriorityValue.go         |   60 +-
 .../model/BACnetPriorityValueBitString.go          |   33 +-
 .../readwrite/model/BACnetPriorityValueBoolean.go  |   33 +-
 .../model/BACnetPriorityValueCharacterString.go    |   33 +-
 .../model/BACnetPriorityValueConstructedValue.go   |   33 +-
 .../readwrite/model/BACnetPriorityValueDate.go     |   33 +-
 .../readwrite/model/BACnetPriorityValueDateTime.go |   33 +-
 .../readwrite/model/BACnetPriorityValueDouble.go   |   33 +-
 .../model/BACnetPriorityValueEnumerated.go         |   33 +-
 .../readwrite/model/BACnetPriorityValueInteger.go  |   33 +-
 .../readwrite/model/BACnetPriorityValueNull.go     |   33 +-
 .../model/BACnetPriorityValueObjectidentifier.go   |   33 +-
 .../model/BACnetPriorityValueOctetString.go        |   33 +-
 .../readwrite/model/BACnetPriorityValueReal.go     |   33 +-
 .../readwrite/model/BACnetPriorityValueTime.go     |   33 +-
 .../readwrite/model/BACnetPriorityValueUnsigned.go |   33 +-
 .../readwrite/model/BACnetProcessIdSelection.go    |   30 +-
 .../model/BACnetProcessIdSelectionNull.go          |   33 +-
 .../model/BACnetProcessIdSelectionValue.go         |   33 +-
 .../bacnetip/readwrite/model/BACnetProgramError.go |   17 +-
 .../readwrite/model/BACnetProgramErrorTagged.go    |   33 +-
 .../readwrite/model/BACnetProgramRequest.go        |   17 +-
 .../readwrite/model/BACnetProgramRequestTagged.go  |   29 +-
 .../bacnetip/readwrite/model/BACnetProgramState.go |   17 +-
 .../readwrite/model/BACnetProgramStateTagged.go    |   29 +-
 .../readwrite/model/BACnetPropertyAccessResult.go  |   53 +-
 .../BACnetPropertyAccessResultAccessResult.go      |   30 +-
 ...yAccessResultAccessResultPropertyAccessError.go |   33 +-
 ...ropertyAccessResultAccessResultPropertyValue.go |   33 +-
 .../readwrite/model/BACnetPropertyIdentifier.go    |   17 +-
 .../model/BACnetPropertyIdentifierTagged.go        |   33 +-
 .../readwrite/model/BACnetPropertyReference.go     |   35 +-
 .../model/BACnetPropertyReferenceEnclosed.go       |   41 +-
 .../model/BACnetPropertyStateActionUnknown.go      |   33 +-
 .../readwrite/model/BACnetPropertyStates.go        |  144 ++-
 .../BACnetPropertyStatesAccessCredentialDisable.go |   33 +-
 ...tPropertyStatesAccessCredentialDisableReason.go |   33 +-
 .../model/BACnetPropertyStatesAccessEvent.go       |   33 +-
 .../readwrite/model/BACnetPropertyStatesAction.go  |   33 +-
 .../BACnetPropertyStatesAuthenticationStatus.go    |   33 +-
 .../model/BACnetPropertyStatesBackupState.go       |   33 +-
 .../model/BACnetPropertyStatesBacnetIpMode.go      |   33 +-
 .../BACnetPropertyStatesBinaryLightningValue.go    |   33 +-
 .../model/BACnetPropertyStatesBinaryValue.go       |   33 +-
 .../readwrite/model/BACnetPropertyStatesBoolean.go |   33 +-
 .../model/BACnetPropertyStatesDoorAlarmState.go    |   33 +-
 .../model/BACnetPropertyStatesDoorSecuredStatus.go |   33 +-
 .../model/BACnetPropertyStatesDoorStatus.go        |   33 +-
 .../model/BACnetPropertyStatesDoorValue.go         |   33 +-
 .../model/BACnetPropertyStatesEnclosed.go          |   41 +-
 .../model/BACnetPropertyStatesEscalatorFault.go    |   33 +-
 .../model/BACnetPropertyStatesEscalatorMode.go     |   33 +-
 ...netPropertyStatesEscalatorOperationDirection.go |   33 +-
 .../model/BACnetPropertyStatesEventType.go         |   33 +-
 .../model/BACnetPropertyStatesExtendedValue.go     |   33 +-
 .../model/BACnetPropertyStatesFileAccessMethod.go  |   33 +-
 .../model/BACnetPropertyStatesIntegerValue.go      |   33 +-
 .../model/BACnetPropertyStatesLifeSafetyMode.go    |   33 +-
 .../BACnetPropertyStatesLifeSafetyOperations.go    |   33 +-
 .../model/BACnetPropertyStatesLifeSafetyState.go   |   33 +-
 .../model/BACnetPropertyStatesLiftCarDirection.go  |   33 +-
 .../BACnetPropertyStatesLiftCarDoorCommand.go      |   33 +-
 .../BACnetPropertyStatesLiftCarDriveStatus.go      |   33 +-
 .../model/BACnetPropertyStatesLiftCarMode.go       |   33 +-
 .../model/BACnetPropertyStatesLiftFault.go         |   33 +-
 .../model/BACnetPropertyStatesLiftGroupMode.go     |   33 +-
 .../BACnetPropertyStatesLightningInProgress.go     |   33 +-
 .../BACnetPropertyStatesLightningOperation.go      |   33 +-
 .../BACnetPropertyStatesLightningTransition.go     |   33 +-
 .../model/BACnetPropertyStatesLockStatus.go        |   33 +-
 .../model/BACnetPropertyStatesMaintenance.go       |   33 +-
 .../BACnetPropertyStatesNetworkNumberQuality.go    |   33 +-
 .../BACnetPropertyStatesNetworkPortCommand.go      |   33 +-
 .../model/BACnetPropertyStatesNetworkType.go       |   33 +-
 .../model/BACnetPropertyStatesNodeType.go          |   33 +-
 .../model/BACnetPropertyStatesNotifyType.go        |   33 +-
 .../model/BACnetPropertyStatesPolarity.go          |   33 +-
 .../model/BACnetPropertyStatesProgramChange.go     |   33 +-
 .../model/BACnetPropertyStatesProtocolLevel.go     |   33 +-
 .../model/BACnetPropertyStatesReasonForHalt.go     |   33 +-
 .../model/BACnetPropertyStatesReliability.go       |   33 +-
 .../model/BACnetPropertyStatesRestartReason.go     |   33 +-
 .../model/BACnetPropertyStatesSecurityLevel.go     |   33 +-
 .../model/BACnetPropertyStatesShedState.go         |   33 +-
 .../model/BACnetPropertyStatesSilencedState.go     |   33 +-
 .../readwrite/model/BACnetPropertyStatesState.go   |   33 +-
 .../model/BACnetPropertyStatesSystemStatus.go      |   33 +-
 .../model/BACnetPropertyStatesTimerState.go        |   33 +-
 .../model/BACnetPropertyStatesTimerTransition.go   |   33 +-
 .../readwrite/model/BACnetPropertyStatesUnits.go   |   33 +-
 .../model/BACnetPropertyStatesWriteStatus.go       |   33 +-
 .../model/BACnetPropertyStatesZoneOccupanyState.go |   33 +-
 .../readwrite/model/BACnetPropertyValue.go         |   47 +-
 .../readwrite/model/BACnetPropertyValues.go        |   47 +-
 .../model/BACnetPropertyWriteDefinition.go         |   47 +-
 .../readwrite/model/BACnetProtocolLevel.go         |   17 +-
 .../readwrite/model/BACnetProtocolLevelTagged.go   |   29 +-
 .../readwrite/model/BACnetReadAccessProperty.go    |   41 +-
 .../model/BACnetReadAccessPropertyReadResult.go    |   41 +-
 .../readwrite/model/BACnetReadAccessResult.go      |   35 +-
 .../model/BACnetReadAccessResultListOfResults.go   |   47 +-
 .../model/BACnetReadAccessSpecification.go         |   53 +-
 .../bacnetip/readwrite/model/BACnetRecipient.go    |   30 +-
 .../readwrite/model/BACnetRecipientAddress.go      |   33 +-
 .../readwrite/model/BACnetRecipientDevice.go       |   33 +-
 .../readwrite/model/BACnetRecipientEnclosed.go     |   41 +-
 .../readwrite/model/BACnetRecipientProcess.go      |   35 +-
 .../model/BACnetRecipientProcessEnclosed.go        |   41 +-
 .../bacnetip/readwrite/model/BACnetRejectReason.go |   17 +-
 .../readwrite/model/BACnetRejectReasonTagged.go    |   27 +-
 .../bacnetip/readwrite/model/BACnetRelationship.go |   17 +-
 .../readwrite/model/BACnetRelationshipTagged.go    |   33 +-
 .../bacnetip/readwrite/model/BACnetReliability.go  |   17 +-
 .../readwrite/model/BACnetReliabilityTagged.go     |   33 +-
 .../readwrite/model/BACnetRestartReason.go         |   17 +-
 .../readwrite/model/BACnetRestartReasonTagged.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetResultFlags.go  |   17 +-
 .../readwrite/model/BACnetResultFlagsTagged.go     |   47 +-
 .../bacnetip/readwrite/model/BACnetRouterEntry.go  |   47 +-
 .../readwrite/model/BACnetRouterEntryStatus.go     |   17 +-
 .../model/BACnetRouterEntryStatusTagged.go         |   29 +-
 .../bacnetip/readwrite/model/BACnetScale.go        |   30 +-
 .../readwrite/model/BACnetScaleFloatScale.go       |   33 +-
 .../readwrite/model/BACnetScaleIntegerScale.go     |   33 +-
 .../readwrite/model/BACnetSecurityKeySet.go        |   47 +-
 .../readwrite/model/BACnetSecurityKeySetKeyIds.go  |   47 +-
 .../readwrite/model/BACnetSecurityLevel.go         |   17 +-
 .../readwrite/model/BACnetSecurityLevelTagged.go   |   29 +-
 .../readwrite/model/BACnetSecurityPolicy.go        |   17 +-
 .../readwrite/model/BACnetSecurityPolicyTagged.go  |   29 +-
 .../bacnetip/readwrite/model/BACnetSegmentation.go |   17 +-
 .../readwrite/model/BACnetSegmentationTagged.go    |   29 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   58 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |   39 +-
 .../model/BACnetServiceAckAtomicReadFileRecord.go  |   65 +-
 .../model/BACnetServiceAckAtomicReadFileStream.go  |   39 +-
 ...BACnetServiceAckAtomicReadFileStreamOrRecord.go |   42 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   33 +-
 .../model/BACnetServiceAckAuthenticate.go          |   27 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   45 +-
 .../model/BACnetServiceAckCreateObject.go          |   33 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   45 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   57 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   39 +-
 .../model/BACnetServiceAckReadProperty.go          |   51 +-
 .../BACnetServiceAckReadPropertyConditional.go     |   27 +-
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   39 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   69 +-
 .../readwrite/model/BACnetServiceAckRequestKey.go  |   27 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   45 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   33 +-
 .../readwrite/model/BACnetServicesSupported.go     |   17 +-
 .../model/BACnetServicesSupportedTagged.go         |   75 +-
 .../readwrite/model/BACnetSetpointReference.go     |   29 +-
 .../bacnetip/readwrite/model/BACnetShedLevel.go    |   32 +-
 .../readwrite/model/BACnetShedLevelAmount.go       |   33 +-
 .../readwrite/model/BACnetShedLevelLevel.go        |   33 +-
 .../readwrite/model/BACnetShedLevelPercent.go      |   33 +-
 .../bacnetip/readwrite/model/BACnetShedState.go    |   17 +-
 .../readwrite/model/BACnetShedStateTagged.go       |   29 +-
 .../readwrite/model/BACnetSilencedState.go         |   17 +-
 .../readwrite/model/BACnetSilencedStateTagged.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetSpecialEvent.go |   41 +-
 .../model/BACnetSpecialEventListOfTimeValues.go    |   47 +-
 .../readwrite/model/BACnetSpecialEventPeriod.go    |   30 +-
 .../model/BACnetSpecialEventPeriodCalendarEntry.go |   33 +-
 .../BACnetSpecialEventPeriodCalendarReference.go   |   33 +-
 .../bacnetip/readwrite/model/BACnetStatusFlags.go  |   17 +-
 .../readwrite/model/BACnetStatusFlagsTagged.go     |   51 +-
 .../bacnetip/readwrite/model/BACnetTagHeader.go    |   47 +-
 .../readwrite/model/BACnetTagPayloadBitString.go   |   46 +-
 .../readwrite/model/BACnetTagPayloadBoolean.go     |   35 +-
 .../model/BACnetTagPayloadCharacterString.go       |   31 +-
 .../readwrite/model/BACnetTagPayloadDate.go        |   67 +-
 .../readwrite/model/BACnetTagPayloadDouble.go      |   23 +-
 .../readwrite/model/BACnetTagPayloadEnumerated.go  |   27 +-
 .../model/BACnetTagPayloadObjectIdentifier.go      |   27 +-
 .../readwrite/model/BACnetTagPayloadOctetString.go |   23 +-
 .../readwrite/model/BACnetTagPayloadReal.go        |   23 +-
 .../model/BACnetTagPayloadSignedInteger.go         |   59 +-
 .../readwrite/model/BACnetTagPayloadTime.go        |   43 +-
 .../model/BACnetTagPayloadUnsignedInteger.go       |   59 +-
 .../bacnetip/readwrite/model/BACnetTimeStamp.go    |   32 +-
 .../readwrite/model/BACnetTimeStampDateTime.go     |   33 +-
 .../readwrite/model/BACnetTimeStampEnclosed.go     |   41 +-
 .../readwrite/model/BACnetTimeStampSequence.go     |   33 +-
 .../readwrite/model/BACnetTimeStampTime.go         |   33 +-
 .../readwrite/model/BACnetTimeStampsEnclosed.go    |   47 +-
 .../bacnetip/readwrite/model/BACnetTimeValue.go    |   35 +-
 .../bacnetip/readwrite/model/BACnetTimerState.go   |   17 +-
 .../readwrite/model/BACnetTimerStateChangeValue.go |   64 +-
 .../model/BACnetTimerStateChangeValueBitString.go  |   33 +-
 .../model/BACnetTimerStateChangeValueBoolean.go    |   33 +-
 .../BACnetTimerStateChangeValueCharacterString.go  |   33 +-
 .../BACnetTimerStateChangeValueConstructedValue.go |   33 +-
 .../model/BACnetTimerStateChangeValueDate.go       |   33 +-
 .../model/BACnetTimerStateChangeValueDateTime.go   |   33 +-
 .../model/BACnetTimerStateChangeValueDouble.go     |   33 +-
 .../model/BACnetTimerStateChangeValueEnumerated.go |   33 +-
 .../model/BACnetTimerStateChangeValueInteger.go    |   33 +-
 .../BACnetTimerStateChangeValueLightingCommand.go  |   33 +-
 .../model/BACnetTimerStateChangeValueNoValue.go    |   33 +-
 .../model/BACnetTimerStateChangeValueNull.go       |   33 +-
 .../BACnetTimerStateChangeValueObjectidentifier.go |   33 +-
 .../BACnetTimerStateChangeValueOctetString.go      |   33 +-
 .../model/BACnetTimerStateChangeValueReal.go       |   33 +-
 .../model/BACnetTimerStateChangeValueTime.go       |   33 +-
 .../model/BACnetTimerStateChangeValueUnsigned.go   |   33 +-
 .../readwrite/model/BACnetTimerStateTagged.go      |   29 +-
 .../readwrite/model/BACnetTimerTransition.go       |   17 +-
 .../readwrite/model/BACnetTimerTransitionTagged.go |   29 +-
 .../model/BACnetUnconfirmedServiceChoice.go        |   17 +-
 .../model/BACnetUnconfirmedServiceChoiceTagged.go  |   29 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   50 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   51 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   45 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   39 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   39 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   57 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   57 +-
 ...edServiceRequestUnconfirmedEventNotification.go |  105 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   45 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   51 +-
 .../BACnetUnconfirmedServiceRequestUnknown.go      |   27 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   45 +-
 .../BACnetUnconfirmedServiceRequestWhoHasObject.go |   30 +-
 ...onfirmedServiceRequestWhoHasObjectIdentifier.go |   33 +-
 ...netUnconfirmedServiceRequestWhoHasObjectName.go |   33 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   39 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   51 +-
 .../bacnetip/readwrite/model/BACnetVMACEntry.go    |   35 +-
 .../bacnetip/readwrite/model/BACnetVTClass.go      |   17 +-
 .../readwrite/model/BACnetVTClassTagged.go         |   33 +-
 .../bacnetip/readwrite/model/BACnetVTSession.go    |   41 +-
 .../bacnetip/readwrite/model/BACnetValueSource.go  |   32 +-
 .../readwrite/model/BACnetValueSourceAddress.go    |   33 +-
 .../readwrite/model/BACnetValueSourceNone.go       |   33 +-
 .../readwrite/model/BACnetValueSourceObject.go     |   33 +-
 .../bacnetip/readwrite/model/BACnetVendorId.go     |   17 +-
 .../readwrite/model/BACnetVendorIdTagged.go        |   33 +-
 .../bacnetip/readwrite/model/BACnetWeekNDay.go     |   23 +-
 .../readwrite/model/BACnetWeekNDayTagged.go        |   85 +-
 .../model/BACnetWriteAccessSpecification.go        |   53 +-
 .../bacnetip/readwrite/model/BACnetWriteStatus.go  |   17 +-
 .../readwrite/model/BACnetWriteStatusTagged.go     |   29 +-
 plc4go/protocols/bacnetip/readwrite/model/BVLC.go  |   54 +-
 .../model/BVLCBroadcastDistributionTableEntry.go   |   46 +-
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   39 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   33 +-
 .../readwrite/model/BVLCForeignDeviceTableEntry.go |   35 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |   45 +-
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |   33 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |   33 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   27 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   39 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   27 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   39 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   27 +-
 .../bacnetip/readwrite/model/BVLCResult.go         |   31 +-
 .../bacnetip/readwrite/model/BVLCResultCode.go     |   17 +-
 .../readwrite/model/BVLCResultCodeTagged.go        |   29 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   27 +-
 .../model/BVLCWriteBroadcastDistributionTable.go   |   39 +-
 .../bacnetip/readwrite/model/BacnetConstants.go    |   23 +-
 .../bacnetip/readwrite/model/ChangeListAddError.go |   39 +-
 .../readwrite/model/ChangeListRemoveError.go       |   39 +-
 .../model/ConfirmedEventNotificationRequest.go     |  101 +-
 .../model/ConfirmedPrivateTransferError.go         |   51 +-
 .../bacnetip/readwrite/model/CreateObjectError.go  |   39 +-
 plc4go/protocols/bacnetip/readwrite/model/Error.go |   35 +-
 .../bacnetip/readwrite/model/ErrorClass.go         |   17 +-
 .../bacnetip/readwrite/model/ErrorClassTagged.go   |   33 +-
 .../bacnetip/readwrite/model/ErrorCode.go          |   17 +-
 .../bacnetip/readwrite/model/ErrorCodeTagged.go    |   33 +-
 .../bacnetip/readwrite/model/ErrorEnclosed.go      |   41 +-
 .../readwrite/model/ListOfCovNotifications.go      |   53 +-
 .../readwrite/model/ListOfCovNotificationsList.go  |   47 +-
 .../readwrite/model/ListOfCovNotificationsValue.go |   47 +-
 .../readwrite/model/MaxApduLengthAccepted.go       |   17 +-
 .../readwrite/model/MaxApduLengthAcceptedTagged.go |  238 ----
 .../readwrite/model/MaxSegmentsAccepted.go         |   17 +-
 .../readwrite/model/MaxSegmentsAcceptedTagged.go   |  238 ----
 plc4go/protocols/bacnetip/readwrite/model/NLM.go   |   68 +-
 .../readwrite/model/NLMChallengeRequest.go         |   27 +-
 .../model/NLMDisconnectConnectionToNetwork.go      |   27 +-
 .../model/NLMEstablishConnectionToNetwork.go       |   27 +-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |   30 +-
 .../readwrite/model/NLMICouldBeRouterToNetwork.go  |   27 +-
 .../readwrite/model/NLMInitalizeRoutingTable.go    |   53 +-
 .../readwrite/model/NLMInitalizeRoutingTableAck.go |   53 +-
 .../model/NLMInitalizeRoutingTablePortMapping.go   |   23 +-
 .../bacnetip/readwrite/model/NLMNetworkNumberIs.go |   27 +-
 .../readwrite/model/NLMRejectRouterToNetwork.go    |   31 +-
 .../model/NLMRejectRouterToNetworkRejectReason.go  |   17 +-
 .../readwrite/model/NLMRequestKeyUpdate.go         |   27 +-
 .../readwrite/model/NLMRequestMasterKey.go         |   27 +-
 .../bacnetip/readwrite/model/NLMReserved.go        |   27 +-
 .../readwrite/model/NLMRouterAvailableToNetwork.go |   30 +-
 .../readwrite/model/NLMRouterBusyToNetwork.go      |   30 +-
 .../bacnetip/readwrite/model/NLMSecurityPayload.go |   27 +-
 .../readwrite/model/NLMSecurityResponse.go         |   31 +-
 .../bacnetip/readwrite/model/NLMSetMasterKey.go    |   33 +-
 .../readwrite/model/NLMUpdateKeyDistributionKey.go |   33 +-
 .../bacnetip/readwrite/model/NLMUpdateKeyUpdate.go |   84 +-
 .../model/NLMUpdateKeyUpdateControlFlags.go        |   23 +-
 .../readwrite/model/NLMUpdateKeyUpdateKeyEntry.go  |   23 +-
 .../readwrite/model/NLMVendorProprietaryMessage.go |   31 +-
 .../readwrite/model/NLMWhatIsNetworkNumber.go      |   27 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |   27 +-
 plc4go/protocols/bacnetip/readwrite/model/NPDU.go  |   76 +-
 .../bacnetip/readwrite/model/NPDUControl.go        |   27 +-
 .../readwrite/model/NPDUNetworkPriority.go         |   17 +-
 .../readwrite/model/NPDUNetworkPriorityTagged.go   |   29 +-
 .../readwrite/model/SecurityResponseCode.go        |   17 +-
 .../readwrite/model/SecurityResponseCodeTagged.go  |   29 +-
 .../model/SubscribeCOVPropertyMultipleError.go     |   39 +-
 ...PropertyMultipleErrorFirstFailedSubscription.go |   53 +-
 .../protocols/bacnetip/readwrite/model/TagClass.go |   17 +-
 .../bacnetip/readwrite/model/VTCloseError.go       |   39 +-
 .../VTCloseErrorListOfVTSessionIdentifiers.go      |   47 +-
 .../readwrite/model/WritePropertyMultipleError.go  |   39 +-
 plc4go/protocols/cbus/readwrite/ParserHelper.go    |  156 +--
 plc4go/protocols/cbus/readwrite/XmlParserHelper.go |  160 +--
 .../cbus/readwrite/model/AccessControlCategory.go  |   17 +-
 .../readwrite/model/AccessControlCommandType.go    |   17 +-
 .../model/AccessControlCommandTypeContainer.go     |   17 +-
 .../cbus/readwrite/model/AccessControlData.go      |   44 +-
 .../model/AccessControlDataAccessPointClosed.go    |   27 +-
 .../AccessControlDataAccessPointForcedOpen.go      |   27 +-
 .../model/AccessControlDataAccessPointLeftOpen.go  |   27 +-
 .../model/AccessControlDataCloseAccessPoint.go     |   27 +-
 .../model/AccessControlDataInvalidAccessRequest.go |   31 +-
 .../model/AccessControlDataLockAccessPoint.go      |   27 +-
 .../model/AccessControlDataRequestToExit.go        |   27 +-
 .../model/AccessControlDataValidAccessRequest.go   |   31 +-
 .../cbus/readwrite/model/AccessControlDirection.go |   17 +-
 .../readwrite/model/AirConditioningCommandType.go  |   17 +-
 .../model/AirConditioningCommandTypeContainer.go   |   17 +-
 .../cbus/readwrite/model/AirConditioningData.go    |   66 +-
 .../AirConditioningDataHumidityScheduleEntry.go    |   57 +-
 .../model/AirConditioningDataHvacScheduleEntry.go  |   57 +-
 .../readwrite/model/AirConditioningDataRefresh.go  |   27 +-
 ...irConditioningDataSetHumidityLowerGuardLimit.go |   45 +-
 .../AirConditioningDataSetHumiditySetbackLimit.go  |   45 +-
 ...irConditioningDataSetHumidityUpperGuardLimit.go |   45 +-
 .../AirConditioningDataSetHvacLowerGuardLimit.go   |   45 +-
 .../AirConditioningDataSetHvacSetbackLimit.go      |   45 +-
 .../AirConditioningDataSetHvacUpperGuardLimit.go   |   45 +-
 .../AirConditioningDataSetPlantHumidityLevel.go    |   61 +-
 .../model/AirConditioningDataSetPlantHvacLevel.go  |   61 +-
 .../model/AirConditioningDataSetZoneGroupOff.go    |   27 +-
 .../model/AirConditioningDataSetZoneGroupOn.go     |   27 +-
 .../AirConditioningDataSetZoneHumidityMode.go      |   61 +-
 .../model/AirConditioningDataSetZoneHvacMode.go    |   61 +-
 .../model/AirConditioningDataZoneHumidity.go       |   43 +-
 .../AirConditioningDataZoneHumidityPlantStatus.go  |   47 +-
 .../AirConditioningDataZoneHvacPlantStatus.go      |   47 +-
 .../model/AirConditioningDataZoneTemperature.go    |   43 +-
 plc4go/protocols/cbus/readwrite/model/Alpha.go     |   23 +-
 .../cbus/readwrite/model/ApplicationAddress1.go    |   27 +-
 .../cbus/readwrite/model/ApplicationAddress2.go    |   27 +-
 .../cbus/readwrite/model/ApplicationId.go          |   17 +-
 .../cbus/readwrite/model/ApplicationIdContainer.go |   17 +-
 plc4go/protocols/cbus/readwrite/model/Attribute.go |   17 +-
 .../cbus/readwrite/model/BaudRateSelector.go       |   17 +-
 .../cbus/readwrite/model/BridgeAddress.go          |   23 +-
 .../cbus/readwrite/model/CALCommandType.go         |   17 +-
 .../readwrite/model/CALCommandTypeContainer.go     |   17 +-
 plc4go/protocols/cbus/readwrite/model/CALData.go   |   58 +-
 .../cbus/readwrite/model/CALDataAcknowledge.go     |   31 +-
 .../cbus/readwrite/model/CALDataGetStatus.go       |   31 +-
 .../cbus/readwrite/model/CALDataIdentify.go        |   31 +-
 .../cbus/readwrite/model/CALDataIdentifyReply.go   |   37 +-
 .../cbus/readwrite/model/CALDataRecall.go          |   31 +-
 .../protocols/cbus/readwrite/model/CALDataReply.go |   37 +-
 .../protocols/cbus/readwrite/model/CALDataReset.go |   27 +-
 .../cbus/readwrite/model/CALDataStatus.go          |   57 +-
 .../cbus/readwrite/model/CALDataStatusExtended.go  |   94 +-
 .../protocols/cbus/readwrite/model/CALDataWrite.go |   37 +-
 plc4go/protocols/cbus/readwrite/model/CALReply.go  |   30 +-
 .../protocols/cbus/readwrite/model/CALReplyLong.go |   55 +-
 .../cbus/readwrite/model/CALReplyShort.go          |   27 +-
 .../protocols/cbus/readwrite/model/CBusCommand.go  |   42 +-
 .../readwrite/model/CBusCommandDeviceManagement.go |   31 +-
 .../model/CBusCommandPointToMultiPoint.go          |   33 +-
 .../readwrite/model/CBusCommandPointToPoint.go     |   33 +-
 .../model/CBusCommandPointToPointToMultiPoint.go   |   33 +-
 .../cbus/readwrite/model/CBusConstants.go          |   23 +-
 .../protocols/cbus/readwrite/model/CBusHeader.go   |   31 +-
 .../protocols/cbus/readwrite/model/CBusMessage.go  |   24 +-
 .../cbus/readwrite/model/CBusMessageToClient.go    |   33 +-
 .../cbus/readwrite/model/CBusMessageToServer.go    |   33 +-
 .../protocols/cbus/readwrite/model/CBusOptions.go  |   23 +-
 .../model/CBusPointToMultiPointCommand.go          |   24 +-
 .../model/CBusPointToMultiPointCommandNormal.go    |   37 +-
 .../model/CBusPointToMultiPointCommandStatus.go    |   33 +-
 .../readwrite/model/CBusPointToPointCommand.go     |   34 +-
 .../model/CBusPointToPointCommandDirect.go         |   33 +-
 .../model/CBusPointToPointCommandIndirect.go       |   45 +-
 .../model/CBusPointToPointToMultiPointCommand.go   |   36 +-
 .../CBusPointToPointToMultiPointCommandNormal.go   |   37 +-
 .../CBusPointToPointToMultiPointCommandStatus.go   |   33 +-
 .../cbus/readwrite/model/ChannelStatus.go          |   17 +-
 plc4go/protocols/cbus/readwrite/model/Checksum.go  |   23 +-
 .../model/ClockAndTimekeepingCommandType.go        |   17 +-
 .../ClockAndTimekeepingCommandTypeContainer.go     |   17 +-
 .../readwrite/model/ClockAndTimekeepingData.go     |   34 +-
 .../model/ClockAndTimekeepingDataRequestRefresh.go |   27 +-
 .../model/ClockAndTimekeepingDataUpdateDate.go     |   27 +-
 .../model/ClockAndTimekeepingDataUpdateTime.go     |   43 +-
 .../protocols/cbus/readwrite/model/Confirmation.go |   43 +-
 .../cbus/readwrite/model/ConfirmationType.go       |   17 +-
 .../cbus/readwrite/model/CustomManufacturer.go     |   23 +-
 .../protocols/cbus/readwrite/model/CustomTypes.go  |   23 +-
 .../cbus/readwrite/model/DestinationAddressType.go |   17 +-
 .../cbus/readwrite/model/DialInFailureReason.go    |   17 +-
 .../cbus/readwrite/model/DialOutFailureReason.go   |   17 +-
 .../readwrite/model/EnableControlCommandType.go    |   17 +-
 .../model/EnableControlCommandTypeContainer.go     |   17 +-
 .../cbus/readwrite/model/EnableControlData.go      |   31 +-
 .../protocols/cbus/readwrite/model/EncodedReply.go |   28 +-
 .../cbus/readwrite/model/EncodedReplyCALReply.go   |   33 +-
 .../readwrite/model/ErrorReportingCommandType.go   |   17 +-
 .../model/ErrorReportingCommandTypeContainer.go    |   17 +-
 .../cbus/readwrite/model/ErrorReportingData.go     |   30 +-
 .../readwrite/model/ErrorReportingDataGeneric.go   |   49 +-
 .../cbus/readwrite/model/ErrorReportingSeverity.go |   17 +-
 .../model/ErrorReportingSystemCategory.go          |   37 +-
 .../model/ErrorReportingSystemCategoryClass.go     |   17 +-
 .../model/ErrorReportingSystemCategoryType.go      |   32 +-
 ...gSystemCategoryTypeBuildingManagementSystems.go |   31 +-
 ...eportingSystemCategoryTypeClimateControllers.go |   31 +-
 ...stemCategoryTypeForBuildingManagementSystems.go |   17 +-
 ...rtingSystemCategoryTypeForClimateControllers.go |   17 +-
 ...rrorReportingSystemCategoryTypeForInputUnits.go |   17 +-
 ...rorReportingSystemCategoryTypeForOutputUnits.go |   17 +-
 ...orReportingSystemCategoryTypeForSupportUnits.go |   17 +-
 .../ErrorReportingSystemCategoryTypeInputUnits.go  |   31 +-
 .../ErrorReportingSystemCategoryTypeOutputUnits.go |   31 +-
 .../ErrorReportingSystemCategoryTypeReserved.go    |   27 +-
 ...ErrorReportingSystemCategoryTypeSupportUnits.go |   31 +-
 .../model/ErrorReportingSystemCategoryVariant.go   |   17 +-
 plc4go/protocols/cbus/readwrite/model/GAVState.go  |   17 +-
 .../cbus/readwrite/model/HVACAuxiliaryLevel.go     |   39 +-
 plc4go/protocols/cbus/readwrite/model/HVACError.go |   17 +-
 .../protocols/cbus/readwrite/model/HVACHumidity.go |   27 +-
 .../cbus/readwrite/model/HVACHumidityError.go      |   17 +-
 .../readwrite/model/HVACHumidityModeAndFlags.go    |   59 +-
 .../model/HVACHumidityModeAndFlagsMode.go          |   17 +-
 .../readwrite/model/HVACHumidityStatusFlags.go     |   31 +-
 .../cbus/readwrite/model/HVACHumidityType.go       |   17 +-
 .../cbus/readwrite/model/HVACModeAndFlags.go       |   59 +-
 .../cbus/readwrite/model/HVACModeAndFlagsMode.go   |   17 +-
 .../cbus/readwrite/model/HVACRawLevels.go          |   27 +-
 .../cbus/readwrite/model/HVACSensorStatus.go       |   17 +-
 .../cbus/readwrite/model/HVACStartTime.go          |   43 +-
 .../cbus/readwrite/model/HVACStatusFlags.go        |   31 +-
 .../cbus/readwrite/model/HVACTemperature.go        |   27 +-
 plc4go/protocols/cbus/readwrite/model/HVACType.go  |   17 +-
 .../protocols/cbus/readwrite/model/HVACZoneList.go |   27 +-
 .../cbus/readwrite/model/IdentifyReplyCommand.go   |   56 +-
 .../IdentifyReplyCommandCurrentSenseLevels.go      |   27 +-
 .../model/IdentifyReplyCommandDSIStatus.go         |   63 +-
 .../readwrite/model/IdentifyReplyCommandDelays.go  |   27 +-
 ...dentifyReplyCommandExtendedDiagnosticSummary.go |   39 +-
 .../model/IdentifyReplyCommandFirmwareVersion.go   |   27 +-
 .../IdentifyReplyCommandGAVPhysicalAddresses.go    |   27 +-
 .../model/IdentifyReplyCommandGAVValuesCurrent.go  |   27 +-
 .../model/IdentifyReplyCommandGAVValuesStored.go   |   27 +-
 .../model/IdentifyReplyCommandLogicalAssignment.go |   53 +-
 .../model/IdentifyReplyCommandManufacturer.go      |   27 +-
 .../model/IdentifyReplyCommandMaximumLevels.go     |   27 +-
 .../model/IdentifyReplyCommandMinimumLevels.go     |   27 +-
 .../IdentifyReplyCommandNetworkTerminalLevels.go   |   27 +-
 .../model/IdentifyReplyCommandNetworkVoltage.go    |   27 +-
 .../model/IdentifyReplyCommandOutputUnitSummary.go |   33 +-
 .../readwrite/model/IdentifyReplyCommandSummary.go |   27 +-
 .../model/IdentifyReplyCommandTerminalLevels.go    |   27 +-
 .../readwrite/model/IdentifyReplyCommandType.go    |   27 +-
 .../model/IdentifyReplyCommandUnitSummary.go       |   23 +-
 .../cbus/readwrite/model/InterfaceOptions1.go      |   23 +-
 .../model/InterfaceOptions1PowerUpSettings.go      |   29 +-
 .../cbus/readwrite/model/InterfaceOptions2.go      |   23 +-
 .../cbus/readwrite/model/InterfaceOptions3.go      |   23 +-
 plc4go/protocols/cbus/readwrite/model/Language.go  |   17 +-
 .../cbus/readwrite/model/LevelInformation.go       |   58 +-
 .../cbus/readwrite/model/LevelInformationAbsent.go |   27 +-
 .../readwrite/model/LevelInformationCorrupted.go   |   27 +-
 .../readwrite/model/LevelInformationNibblePair.go  |   17 +-
 .../cbus/readwrite/model/LevelInformationNormal.go |   43 +-
 .../cbus/readwrite/model/LightingCommandType.go    |   17 +-
 .../model/LightingCommandTypeContainer.go          |   17 +-
 .../cbus/readwrite/model/LightingCompatible.go     |   17 +-
 .../protocols/cbus/readwrite/model/LightingData.go |   38 +-
 .../cbus/readwrite/model/LightingDataLabel.go      |   37 +-
 .../cbus/readwrite/model/LightingDataOff.go        |   27 +-
 .../cbus/readwrite/model/LightingDataOn.go         |   27 +-
 .../readwrite/model/LightingDataRampToLevel.go     |   27 +-
 .../readwrite/model/LightingDataTerminateRamp.go   |   27 +-
 .../cbus/readwrite/model/LightingLabelFlavour.go   |   17 +-
 .../cbus/readwrite/model/LightingLabelOptions.go   |   31 +-
 .../cbus/readwrite/model/LightingLabelType.go      |   17 +-
 .../cbus/readwrite/model/LineOffHookReason.go      |   17 +-
 .../cbus/readwrite/model/LogicAssignment.go        |   23 +-
 .../cbus/readwrite/model/MeasurementCommandType.go |   17 +-
 .../model/MeasurementCommandTypeContainer.go       |   17 +-
 .../cbus/readwrite/model/MeasurementData.go        |   30 +-
 .../model/MeasurementDataChannelMeasurementData.go |   39 +-
 .../cbus/readwrite/model/MeasurementUnits.go       |   17 +-
 .../model/MediaTransportControlCommandType.go      |   17 +-
 .../MediaTransportControlCommandTypeContainer.go   |   17 +-
 .../readwrite/model/MediaTransportControlData.go   |   70 +-
 .../model/MediaTransportControlDataCategoryName.go |   27 +-
 ...ontrolDataEnumerateCategoriesSelectionTracks.go |   43 +-
 .../MediaTransportControlDataEnumerationsSize.go   |   43 +-
 .../model/MediaTransportControlDataFastForward.go  |   59 +-
 ...ediaTransportControlDataNextPreviousCategory.go |   35 +-
 ...diaTransportControlDataNextPreviousSelection.go |   35 +-
 .../MediaTransportControlDataNextPreviousTrack.go  |   35 +-
 .../model/MediaTransportControlDataPauseResume.go  |   35 +-
 .../model/MediaTransportControlDataPlay.go         |   27 +-
 .../model/MediaTransportControlDataRepeatOnOff.go  |   39 +-
 .../model/MediaTransportControlDataRewind.go       |   59 +-
 .../MediaTransportControlDataSelectionName.go      |   27 +-
 .../model/MediaTransportControlDataSetCategory.go  |   27 +-
 .../model/MediaTransportControlDataSetSelection.go |   27 +-
 .../model/MediaTransportControlDataSetTrack.go     |   27 +-
 .../model/MediaTransportControlDataShuffleOnOff.go |   35 +-
 .../MediaTransportControlDataSourcePowerControl.go |   35 +-
 .../MediaTransportControlDataStatusRequest.go      |   27 +-
 .../model/MediaTransportControlDataStop.go         |   27 +-
 .../model/MediaTransportControlDataTotalTracks.go  |   27 +-
 .../model/MediaTransportControlDataTrackName.go    |   27 +-
 .../cbus/readwrite/model/MeteringCommandType.go    |   17 +-
 .../model/MeteringCommandTypeContainer.go          |   17 +-
 .../protocols/cbus/readwrite/model/MeteringData.go |   48 +-
 .../model/MeteringDataDrinkingWaterConsumption.go  |   27 +-
 .../model/MeteringDataElectricityConsumption.go    |   27 +-
 .../readwrite/model/MeteringDataGasConsumption.go  |   27 +-
 .../model/MeteringDataMeasureDrinkingWater.go      |   27 +-
 .../model/MeteringDataMeasureElectricity.go        |   27 +-
 .../cbus/readwrite/model/MeteringDataMeasureGas.go |   27 +-
 .../cbus/readwrite/model/MeteringDataMeasureOil.go |   27 +-
 .../model/MeteringDataMeasureOtherWater.go         |   27 +-
 .../readwrite/model/MeteringDataOilConsumption.go  |   27 +-
 .../model/MeteringDataOtherWaterConsumption.go     |   27 +-
 .../protocols/cbus/readwrite/model/MonitoredSAL.go |   24 +-
 .../model/MonitoredSALLongFormSmartMode.go         |   59 +-
 .../cbus/readwrite/model/MonitoredSALReply.go      |   33 +-
 .../model/MonitoredSALShortFormBasicMode.go        |   37 +-
 .../model/NetworkProtocolControlInformation.go     |   23 +-
 .../protocols/cbus/readwrite/model/NetworkRoute.go |   55 +-
 .../protocols/cbus/readwrite/model/PanicStatus.go  |   35 +-
 plc4go/protocols/cbus/readwrite/model/Parameter.go |   17 +-
 .../cbus/readwrite/model/ParameterChange.go        |   23 +-
 .../cbus/readwrite/model/ParameterChangeReply.go   |   33 +-
 .../cbus/readwrite/model/ParameterType.go          |   17 +-
 .../cbus/readwrite/model/ParameterValue.go         |   42 +-
 .../model/ParameterValueApplicationAddress1.go     |   33 +-
 .../model/ParameterValueApplicationAddress2.go     |   33 +-
 .../model/ParameterValueBaudRateSelector.go        |   31 +-
 .../model/ParameterValueCustomManufacturer.go      |   33 +-
 .../readwrite/model/ParameterValueCustomTypes.go   |   33 +-
 .../model/ParameterValueInterfaceOptions1.go       |   33 +-
 ...rameterValueInterfaceOptions1PowerUpSettings.go |   33 +-
 .../model/ParameterValueInterfaceOptions2.go       |   33 +-
 .../model/ParameterValueInterfaceOptions3.go       |   33 +-
 .../cbus/readwrite/model/ParameterValueRaw.go      |   27 +-
 .../readwrite/model/ParameterValueSerialNumber.go  |   33 +-
 plc4go/protocols/cbus/readwrite/model/PowerUp.go   |   23 +-
 .../protocols/cbus/readwrite/model/PowerUpReply.go |   33 +-
 .../cbus/readwrite/model/PriorityClass.go          |   17 +-
 .../cbus/readwrite/model/ProtectionLevel.go        |   17 +-
 plc4go/protocols/cbus/readwrite/model/Reply.go     |   26 +-
 .../cbus/readwrite/model/ReplyEncodedReply.go      |   37 +-
 .../protocols/cbus/readwrite/model/ReplyNetwork.go |   35 +-
 .../cbus/readwrite/model/ReplyOrConfirmation.go    |   30 +-
 .../model/ReplyOrConfirmationConfirmation.go       |   39 +-
 .../readwrite/model/ReplyOrConfirmationReply.go    |   39 +-
 plc4go/protocols/cbus/readwrite/model/Request.go   |   56 +-
 .../cbus/readwrite/model/RequestCommand.go         |   43 +-
 .../cbus/readwrite/model/RequestContext.go         |   23 +-
 .../readwrite/model/RequestDirectCommandAccess.go  |   39 +-
 .../protocols/cbus/readwrite/model/RequestEmpty.go |   27 +-
 .../protocols/cbus/readwrite/model/RequestNull.go  |   27 +-
 .../cbus/readwrite/model/RequestObsolete.go        |   39 +-
 .../protocols/cbus/readwrite/model/RequestReset.go |   39 +-
 .../readwrite/model/RequestSmartConnectShortcut.go |   29 +-
 .../cbus/readwrite/model/RequestTermination.go     |   23 +-
 .../protocols/cbus/readwrite/model/RequestType.go  |   17 +-
 .../cbus/readwrite/model/ResponseTermination.go    |   23 +-
 plc4go/protocols/cbus/readwrite/model/SALData.go   |   72 +-
 .../cbus/readwrite/model/SALDataAccessControl.go   |   33 +-
 .../cbus/readwrite/model/SALDataAirConditioning.go |   33 +-
 .../cbus/readwrite/model/SALDataAudioAndVideo.go   |   33 +-
 .../readwrite/model/SALDataClockAndTimekeeping.go  |   33 +-
 .../cbus/readwrite/model/SALDataEnableControl.go   |   33 +-
 .../cbus/readwrite/model/SALDataErrorReporting.go  |   33 +-
 .../cbus/readwrite/model/SALDataFreeUsage.go       |   27 +-
 .../cbus/readwrite/model/SALDataHeating.go         |   33 +-
 .../cbus/readwrite/model/SALDataHvacActuator.go    |   33 +-
 .../readwrite/model/SALDataIrrigationControl.go    |   33 +-
 .../cbus/readwrite/model/SALDataLighting.go        |   33 +-
 .../cbus/readwrite/model/SALDataMeasurement.go     |   33 +-
 .../cbus/readwrite/model/SALDataMediaTransport.go  |   33 +-
 .../cbus/readwrite/model/SALDataMetering.go        |   33 +-
 .../model/SALDataPoolsSpasPondsFountainsControl.go |   33 +-
 .../cbus/readwrite/model/SALDataReserved.go        |   27 +-
 .../readwrite/model/SALDataRoomControlSystem.go    |   27 +-
 .../cbus/readwrite/model/SALDataSecurity.go        |   33 +-
 .../model/SALDataTelephonyStatusAndControl.go      |   33 +-
 .../readwrite/model/SALDataTemperatureBroadcast.go |   33 +-
 .../cbus/readwrite/model/SALDataTesting.go         |   27 +-
 .../cbus/readwrite/model/SALDataTriggerControl.go  |   33 +-
 .../cbus/readwrite/model/SALDataVentilation.go     |   33 +-
 .../cbus/readwrite/model/SecurityArmCode.go        |   43 +-
 .../cbus/readwrite/model/SecurityCommandType.go    |   17 +-
 .../model/SecurityCommandTypeContainer.go          |   17 +-
 .../protocols/cbus/readwrite/model/SecurityData.go |  124 +-
 .../cbus/readwrite/model/SecurityDataAlarmOff.go   |   27 +-
 .../cbus/readwrite/model/SecurityDataAlarmOn.go    |   27 +-
 .../model/SecurityDataArmFailedCleared.go          |   27 +-
 .../readwrite/model/SecurityDataArmFailedRaised.go |   27 +-
 .../model/SecurityDataArmReadyNotReady.go          |   27 +-
 .../cbus/readwrite/model/SecurityDataArmSystem.go  |   51 +-
 .../model/SecurityDataCurrentAlarmType.go          |   27 +-
 .../readwrite/model/SecurityDataDisplayMessage.go  |   27 +-
 .../cbus/readwrite/model/SecurityDataDropTamper.go |   27 +-
 .../readwrite/model/SecurityDataEmulatedKeypad.go  |   71 +-
 .../model/SecurityDataEntryDelayStarted.go         |   27 +-
 .../cbus/readwrite/model/SecurityDataEvent.go      |   27 +-
 .../model/SecurityDataExitDelayStarted.go          |   27 +-
 .../model/SecurityDataFireAlarmCleared.go          |   27 +-
 .../readwrite/model/SecurityDataFireAlarmRaised.go |   27 +-
 .../readwrite/model/SecurityDataGasAlarmCleared.go |   27 +-
 .../readwrite/model/SecurityDataGasAlarmRaised.go  |   27 +-
 .../model/SecurityDataLineCutAlarmCleared.go       |   27 +-
 .../model/SecurityDataLineCutAlarmRaised.go        |   27 +-
 .../model/SecurityDataLowBatteryCharging.go        |   35 +-
 .../model/SecurityDataLowBatteryCorrected.go       |   27 +-
 .../model/SecurityDataLowBatteryDetected.go        |   27 +-
 .../readwrite/model/SecurityDataMainsFailure.go    |   27 +-
 .../model/SecurityDataMainsRestoredOrApplied.go    |   27 +-
 .../cbus/readwrite/model/SecurityDataOff.go        |   27 +-
 .../cbus/readwrite/model/SecurityDataOn.go         |   27 +-
 .../model/SecurityDataOtherAlarmCleared.go         |   27 +-
 .../model/SecurityDataOtherAlarmRaised.go          |   27 +-
 .../readwrite/model/SecurityDataPanicActivated.go  |   27 +-
 .../readwrite/model/SecurityDataPanicCleared.go    |   27 +-
 .../model/SecurityDataPasswordEntryStatus.go       |   47 +-
 .../cbus/readwrite/model/SecurityDataRaiseAlarm.go |   27 +-
 .../readwrite/model/SecurityDataRaiseTamper.go     |   27 +-
 .../readwrite/model/SecurityDataRequestZoneName.go |   27 +-
 .../readwrite/model/SecurityDataStatus1Request.go  |   27 +-
 .../readwrite/model/SecurityDataStatus2Request.go  |   27 +-
 .../readwrite/model/SecurityDataStatusReport1.go   |   71 +-
 .../readwrite/model/SecurityDataStatusReport2.go   |   53 +-
 .../model/SecurityDataSystemArmedDisarmed.go       |   33 +-
 .../readwrite/model/SecurityDataSystemDisarmed.go  |   27 +-
 .../cbus/readwrite/model/SecurityDataTamperOff.go  |   27 +-
 .../cbus/readwrite/model/SecurityDataTamperOn.go   |   27 +-
 .../readwrite/model/SecurityDataZoneIsolated.go    |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneName.go   |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneOpen.go   |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneSealed.go |   27 +-
 .../cbus/readwrite/model/SecurityDataZoneShort.go  |   27 +-
 .../readwrite/model/SecurityDataZoneUnsealed.go    |   27 +-
 .../cbus/readwrite/model/SerialInterfaceAddress.go |   23 +-
 .../protocols/cbus/readwrite/model/SerialNumber.go |   23 +-
 .../cbus/readwrite/model/ServerErrorReply.go       |   27 +-
 .../protocols/cbus/readwrite/model/StatusByte.go   |   39 +-
 .../protocols/cbus/readwrite/model/StatusCoding.go |   17 +-
 .../cbus/readwrite/model/StatusRequest.go          |   26 +-
 .../readwrite/model/StatusRequestBinaryState.go    |   31 +-
 .../model/StatusRequestBinaryStateDeprecated.go    |   31 +-
 .../cbus/readwrite/model/StatusRequestLevel.go     |   31 +-
 .../protocols/cbus/readwrite/model/TamperStatus.go |   35 +-
 .../cbus/readwrite/model/TelephonyCommandType.go   |   17 +-
 .../model/TelephonyCommandTypeContainer.go         |   17 +-
 .../cbus/readwrite/model/TelephonyData.go          |   52 +-
 .../readwrite/model/TelephonyDataClearDiversion.go |   27 +-
 .../readwrite/model/TelephonyDataDialInFailure.go  |   31 +-
 .../readwrite/model/TelephonyDataDialOutFailure.go |   31 +-
 .../cbus/readwrite/model/TelephonyDataDivert.go    |   27 +-
 .../TelephonyDataInternetConnectionRequestMade.go  |   27 +-
 .../model/TelephonyDataIsolateSecondaryOutlet.go   |   35 +-
 .../readwrite/model/TelephonyDataLineOffHook.go    |   31 +-
 .../readwrite/model/TelephonyDataLineOnHook.go     |   27 +-
 .../model/TelephonyDataRecallLastNumber.go         |   35 +-
 .../model/TelephonyDataRecallLastNumberRequest.go  |   35 +-
 .../model/TelephonyDataRejectIncomingCall.go       |   27 +-
 .../cbus/readwrite/model/TelephonyDataRinging.go   |   27 +-
 .../model/TemperatureBroadcastCommandType.go       |   17 +-
 .../TemperatureBroadcastCommandTypeContainer.go    |   17 +-
 .../readwrite/model/TemperatureBroadcastData.go    |   35 +-
 .../readwrite/model/TriggerControlCommandType.go   |   17 +-
 .../model/TriggerControlCommandTypeContainer.go    |   17 +-
 .../cbus/readwrite/model/TriggerControlData.go     |   42 +-
 .../model/TriggerControlDataIndicatorKill.go       |   27 +-
 .../readwrite/model/TriggerControlDataLabel.go     |   37 +-
 .../model/TriggerControlDataTriggerEvent.go        |   27 +-
 .../model/TriggerControlDataTriggerMax.go          |   27 +-
 .../model/TriggerControlDataTriggerMin.go          |   27 +-
 .../readwrite/model/TriggerControlLabelFlavour.go  |   17 +-
 .../readwrite/model/TriggerControlLabelOptions.go  |   31 +-
 .../readwrite/model/TriggerControlLabelType.go     |   17 +-
 .../protocols/cbus/readwrite/model/UnitAddress.go  |   23 +-
 .../protocols/cbus/readwrite/model/UnitStatus.go   |   17 +-
 .../protocols/cbus/readwrite/model/ZoneStatus.go   |   27 +-
 .../cbus/readwrite/model/ZoneStatusTemp.go         |   17 +-
 plc4go/protocols/df1/readwrite/ParserHelper.go     |    6 +-
 plc4go/protocols/df1/readwrite/XmlParserHelper.go  |   10 +-
 plc4go/protocols/df1/readwrite/model/DF1Command.go |   24 +-
 plc4go/protocols/df1/readwrite/model/DF1Symbol.go  |   26 +-
 .../df1/readwrite/model/DF1SymbolMessageFrame.go   |   33 +-
 .../readwrite/model/DF1SymbolMessageFrameACK.go    |   27 +-
 .../readwrite/model/DF1SymbolMessageFrameNAK.go    |   27 +-
 .../readwrite/model/DF1UnprotectedReadRequest.go   |   27 +-
 .../readwrite/model/DF1UnprotectedReadResponse.go  |   27 +-
 plc4go/protocols/eip/readwrite/ParserHelper.go     |   10 +-
 plc4go/protocols/eip/readwrite/XmlParserHelper.go  |   14 +-
 .../eip/readwrite/model/CIPDataTypeCode.go         |   17 +-
 .../eip/readwrite/model/CIPStructTypeCode.go       |   17 +-
 .../protocols/eip/readwrite/model/CipExchange.go   |   31 +-
 plc4go/protocols/eip/readwrite/model/CipRRData.go  |   33 +-
 .../eip/readwrite/model/CipReadRequest.go          |   27 +-
 .../eip/readwrite/model/CipReadResponse.go         |   31 +-
 plc4go/protocols/eip/readwrite/model/CipService.go |   34 +-
 .../eip/readwrite/model/CipUnconnectedRequest.go   |   35 +-
 .../eip/readwrite/model/CipWriteRequest.go         |   31 +-
 .../eip/readwrite/model/CipWriteResponse.go        |   27 +-
 plc4go/protocols/eip/readwrite/model/EiPCommand.go |   17 +-
 .../eip/readwrite/model/EipConnectionRequest.go    |   27 +-
 .../eip/readwrite/model/EipDisconnectRequest.go    |   27 +-
 plc4go/protocols/eip/readwrite/model/EipPacket.go  |   40 +-
 .../eip/readwrite/model/MultipleServiceRequest.go  |   33 +-
 .../eip/readwrite/model/MultipleServiceResponse.go |   39 +-
 plc4go/protocols/eip/readwrite/model/Services.go   |   60 +-
 plc4go/protocols/firmata/readwrite/ParserHelper.go |    8 +-
 .../protocols/firmata/readwrite/XmlParserHelper.go |   12 +-
 .../firmata/readwrite/model/FirmataCommand.go      |   30 +-
 .../model/FirmataCommandProtocolVersion.go         |   27 +-
 .../model/FirmataCommandSetDigitalPinValue.go      |   27 +-
 .../readwrite/model/FirmataCommandSetPinMode.go    |   31 +-
 .../firmata/readwrite/model/FirmataCommandSysex.go |   33 +-
 .../readwrite/model/FirmataCommandSystemReset.go   |   27 +-
 .../firmata/readwrite/model/FirmataMessage.go      |   30 +-
 .../readwrite/model/FirmataMessageAnalogIO.go      |   39 +-
 .../readwrite/model/FirmataMessageCommand.go       |   33 +-
 .../readwrite/model/FirmataMessageDigitalIO.go     |   39 +-
 .../model/FirmataMessageSubscribeAnalogPinValue.go |   27 +-
 .../FirmataMessageSubscribeDigitalPinValue.go      |   27 +-
 .../protocols/firmata/readwrite/model/PinMode.go   |   17 +-
 .../firmata/readwrite/model/SysexCommand.go        |   50 +-
 .../model/SysexCommandAnalogMappingQueryRequest.go |   27 +-
 .../SysexCommandAnalogMappingQueryResponse.go      |   27 +-
 .../model/SysexCommandAnalogMappingResponse.go     |   27 +-
 .../readwrite/model/SysexCommandCapabilityQuery.go |   27 +-
 .../model/SysexCommandCapabilityResponse.go        |   27 +-
 .../readwrite/model/SysexCommandExtendedAnalog.go  |   27 +-
 .../readwrite/model/SysexCommandExtendedId.go      |   39 +-
 .../readwrite/model/SysexCommandPinStateQuery.go   |   27 +-
 .../model/SysexCommandPinStateResponse.go          |   27 +-
 .../model/SysexCommandReportFirmwareRequest.go     |   27 +-
 .../model/SysexCommandReportFirmwareResponse.go    |   27 +-
 .../model/SysexCommandSamplingInterval.go          |   27 +-
 .../readwrite/model/SysexCommandStringData.go      |   27 +-
 .../model/SysexCommandSysexNonRealtime.go          |   27 +-
 .../readwrite/model/SysexCommandSysexRealtime.go   |   27 +-
 .../protocols/knxnetip/readwrite/ParserHelper.go   |   76 +-
 .../knxnetip/readwrite/XmlParserHelper.go          |   80 +-
 .../knxnetip/readwrite/model/AccessLevel.go        |   17 +-
 plc4go/protocols/knxnetip/readwrite/model/Apdu.go  |   24 +-
 .../knxnetip/readwrite/model/ApduControl.go        |   28 +-
 .../knxnetip/readwrite/model/ApduControlAck.go     |   27 +-
 .../knxnetip/readwrite/model/ApduControlConnect.go |   27 +-
 .../readwrite/model/ApduControlContainer.go        |   33 +-
 .../readwrite/model/ApduControlDisconnect.go       |   27 +-
 .../knxnetip/readwrite/model/ApduControlNack.go    |   27 +-
 .../protocols/knxnetip/readwrite/model/ApduData.go |   52 +-
 .../knxnetip/readwrite/model/ApduDataAdcRead.go    |   27 +-
 .../readwrite/model/ApduDataAdcResponse.go         |   27 +-
 .../knxnetip/readwrite/model/ApduDataContainer.go  |   33 +-
 .../model/ApduDataDeviceDescriptorRead.go          |   27 +-
 .../model/ApduDataDeviceDescriptorResponse.go      |   27 +-
 .../knxnetip/readwrite/model/ApduDataExt.go        |  102 +-
 .../readwrite/model/ApduDataExtAuthorizeRequest.go |   27 +-
 .../model/ApduDataExtAuthorizeResponse.go          |   27 +-
 .../model/ApduDataExtDomainAddressRead.go          |   27 +-
 .../model/ApduDataExtDomainAddressResponse.go      |   27 +-
 .../model/ApduDataExtDomainAddressSelectiveRead.go |   27 +-
 .../ApduDataExtDomainAddressSerialNumberRead.go    |   27 +-
 ...ApduDataExtDomainAddressSerialNumberResponse.go |   27 +-
 .../ApduDataExtDomainAddressSerialNumberWrite.go   |   27 +-
 .../model/ApduDataExtDomainAddressWrite.go         |   27 +-
 .../model/ApduDataExtFileStreamInfoReport.go       |   27 +-
 .../ApduDataExtGroupPropertyValueInfoReport.go     |   27 +-
 .../model/ApduDataExtGroupPropertyValueRead.go     |   27 +-
 .../model/ApduDataExtGroupPropertyValueResponse.go |   27 +-
 .../model/ApduDataExtGroupPropertyValueWrite.go    |   27 +-
 ...ApduDataExtIndividualAddressSerialNumberRead.go |   27 +-
 ...DataExtIndividualAddressSerialNumberResponse.go |   27 +-
 ...pduDataExtIndividualAddressSerialNumberWrite.go |   27 +-
 .../readwrite/model/ApduDataExtKeyResponse.go      |   27 +-
 .../readwrite/model/ApduDataExtKeyWrite.go         |   27 +-
 .../readwrite/model/ApduDataExtLinkRead.go         |   27 +-
 .../readwrite/model/ApduDataExtLinkResponse.go     |   27 +-
 .../readwrite/model/ApduDataExtLinkWrite.go        |   27 +-
 .../readwrite/model/ApduDataExtMemoryBitWrite.go   |   27 +-
 .../model/ApduDataExtNetworkParameterRead.go       |   27 +-
 .../model/ApduDataExtNetworkParameterResponse.go   |   27 +-
 .../model/ApduDataExtNetworkParameterWrite.go      |   27 +-
 .../model/ApduDataExtOpenRoutingTableRequest.go    |   27 +-
 .../model/ApduDataExtPropertyDescriptionRead.go    |   27 +-
 .../ApduDataExtPropertyDescriptionResponse.go      |   39 +-
 .../model/ApduDataExtPropertyValueRead.go          |   27 +-
 .../model/ApduDataExtPropertyValueResponse.go      |   27 +-
 .../model/ApduDataExtPropertyValueWrite.go         |   27 +-
 .../model/ApduDataExtReadRouterMemoryRequest.go    |   27 +-
 .../model/ApduDataExtReadRouterMemoryResponse.go   |   27 +-
 .../model/ApduDataExtReadRouterStatusRequest.go    |   27 +-
 .../model/ApduDataExtReadRouterStatusResponse.go   |   27 +-
 .../model/ApduDataExtReadRoutingTableRequest.go    |   27 +-
 .../model/ApduDataExtReadRoutingTableResponse.go   |   27 +-
 .../model/ApduDataExtWriteRouterMemoryRequest.go   |   27 +-
 .../model/ApduDataExtWriteRouterStatusRequest.go   |   27 +-
 .../model/ApduDataExtWriteRoutingTableRequest.go   |   27 +-
 .../readwrite/model/ApduDataGroupValueRead.go      |   27 +-
 .../readwrite/model/ApduDataGroupValueResponse.go  |   27 +-
 .../readwrite/model/ApduDataGroupValueWrite.go     |   27 +-
 .../model/ApduDataIndividualAddressRead.go         |   27 +-
 .../model/ApduDataIndividualAddressResponse.go     |   27 +-
 .../model/ApduDataIndividualAddressWrite.go        |   27 +-
 .../knxnetip/readwrite/model/ApduDataMemoryRead.go |   27 +-
 .../readwrite/model/ApduDataMemoryResponse.go      |   27 +-
 .../readwrite/model/ApduDataMemoryWrite.go         |   27 +-
 .../knxnetip/readwrite/model/ApduDataOther.go      |   33 +-
 .../knxnetip/readwrite/model/ApduDataRestart.go    |   27 +-
 .../readwrite/model/ApduDataUserMessage.go         |   27 +-
 plc4go/protocols/knxnetip/readwrite/model/CEMI.go  |   66 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |   24 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |   27 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |   33 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |   17 +-
 .../knxnetip/readwrite/model/ChannelInformation.go |   23 +-
 .../knxnetip/readwrite/model/ComObjectTable.go     |   26 +-
 .../readwrite/model/ComObjectTableAddresses.go     |   17 +-
 .../model/ComObjectTableRealisationType1.go        |   53 +-
 .../model/ComObjectTableRealisationType2.go        |   53 +-
 .../model/ComObjectTableRealisationType6.go        |   33 +-
 .../knxnetip/readwrite/model/ComObjectValueType.go |   17 +-
 .../knxnetip/readwrite/model/ConnectionRequest.go  |   45 +-
 .../model/ConnectionRequestInformation.go          |   26 +-
 ...ConnectionRequestInformationDeviceManagement.go |   27 +-
 ...ConnectionRequestInformationTunnelConnection.go |   31 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |   43 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |   26 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |   27 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |   33 +-
 .../readwrite/model/ConnectionStateRequest.go      |   33 +-
 .../readwrite/model/ConnectionStateResponse.go     |   31 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |   59 +-
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |   37 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |   33 +-
 .../readwrite/model/DescriptionResponse.go         |   39 +-
 .../readwrite/model/DeviceConfigurationAck.go      |   33 +-
 .../model/DeviceConfigurationAckDataBlock.go       |   29 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |   39 +-
 .../model/DeviceConfigurationRequestDataBlock.go   |   25 +-
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |   17 +-
 .../readwrite/model/DeviceDescriptorMediumType.go  |   17 +-
 .../readwrite/model/DeviceDescriptorType2.go       |   47 +-
 .../knxnetip/readwrite/model/DeviceStatus.go       |   23 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |   33 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |   31 +-
 .../knxnetip/readwrite/model/FirmwareType.go       |   17 +-
 .../model/GroupObjectDescriptorRealisationType1.go |   31 +-
 .../model/GroupObjectDescriptorRealisationType2.go |   31 +-
 .../model/GroupObjectDescriptorRealisationType6.go |   23 +-
 .../model/GroupObjectDescriptorRealisationType7.go |   31 +-
 .../model/GroupObjectDescriptorRealisationTypeB.go |   31 +-
 .../readwrite/model/HPAIControlEndpoint.go         |   35 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |   35 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |   35 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |   17 +-
 .../knxnetip/readwrite/model/IPAddress.go          |   23 +-
 .../knxnetip/readwrite/model/KnxAddress.go         |   23 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       |   11 +-
 .../readwrite/model/KnxDatapointMainType.go        |   17 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   |   17 +-
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |   26 +-
 .../readwrite/model/KnxGroupAddress2Level.go       |   27 +-
 .../readwrite/model/KnxGroupAddress3Level.go       |   27 +-
 .../readwrite/model/KnxGroupAddressFreeLevel.go    |   27 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |   17 +-
 .../readwrite/model/KnxInterfaceObjectType.go      |   17 +-
 .../protocols/knxnetip/readwrite/model/KnxLayer.go |   17 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    |   17 +-
 .../knxnetip/readwrite/model/KnxMedium.go          |   17 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   27 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   27 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |   54 +-
 .../knxnetip/readwrite/model/KnxNetIpRouting.go    |   27 +-
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   27 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   27 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   27 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   27 +-
 .../knxnetip/readwrite/model/KnxProperty.go        |   11 +-
 .../readwrite/model/KnxPropertyDataType.go         |   17 +-
 .../knxnetip/readwrite/model/LBusmonInd.go         |   45 +-
 .../protocols/knxnetip/readwrite/model/LDataCon.go |   45 +-
 .../knxnetip/readwrite/model/LDataExtended.go      |   41 +-
 .../knxnetip/readwrite/model/LDataFrame.go         |   30 +-
 .../knxnetip/readwrite/model/LDataFrameACK.go      |   27 +-
 .../protocols/knxnetip/readwrite/model/LDataInd.go |   45 +-
 .../protocols/knxnetip/readwrite/model/LDataReq.go |   45 +-
 .../knxnetip/readwrite/model/LPollData.go          |   33 +-
 .../knxnetip/readwrite/model/LPollDataCon.go       |   27 +-
 .../knxnetip/readwrite/model/LPollDataReq.go       |   27 +-
 .../protocols/knxnetip/readwrite/model/LRawCon.go  |   27 +-
 .../protocols/knxnetip/readwrite/model/LRawInd.go  |   27 +-
 .../protocols/knxnetip/readwrite/model/LRawReq.go  |   27 +-
 .../knxnetip/readwrite/model/MACAddress.go         |   23 +-
 .../readwrite/model/MFuncPropCommandReq.go         |   27 +-
 .../knxnetip/readwrite/model/MFuncPropCon.go       |   27 +-
 .../readwrite/model/MFuncPropStateReadReq.go       |   27 +-
 .../knxnetip/readwrite/model/MPropInfoInd.go       |   27 +-
 .../knxnetip/readwrite/model/MPropReadCon.go       |   27 +-
 .../knxnetip/readwrite/model/MPropReadReq.go       |   27 +-
 .../knxnetip/readwrite/model/MPropWriteCon.go      |   27 +-
 .../knxnetip/readwrite/model/MPropWriteReq.go      |   27 +-
 .../knxnetip/readwrite/model/MResetInd.go          |   27 +-
 .../knxnetip/readwrite/model/MResetReq.go          |   27 +-
 .../model/ProjectInstallationIdentifier.go         |   23 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   23 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   27 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |   33 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |   45 +-
 .../knxnetip/readwrite/model/ServiceId.go          |   34 +-
 .../protocols/knxnetip/readwrite/model/Status.go   |   17 +-
 .../readwrite/model/SupportedPhysicalMedia.go      |   17 +-
 .../knxnetip/readwrite/model/TDataConnectedInd.go  |   27 +-
 .../knxnetip/readwrite/model/TDataConnectedReq.go  |   27 +-
 .../knxnetip/readwrite/model/TDataIndividualInd.go |   27 +-
 .../knxnetip/readwrite/model/TDataIndividualReq.go |   27 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |   39 +-
 .../readwrite/model/TunnelingRequestDataBlock.go   |   25 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |   33 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |   29 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |   27 +-
 plc4go/protocols/modbus/readwrite/ParserHelper.go  |   20 +-
 .../protocols/modbus/readwrite/XmlParserHelper.go  |   24 +-
 .../protocols/modbus/readwrite/model/DataItem.go   |   11 +-
 .../protocols/modbus/readwrite/model/DriverType.go |   17 +-
 .../protocols/modbus/readwrite/model/ModbusADU.go  |   26 +-
 .../modbus/readwrite/model/ModbusAsciiADU.go       |   33 +-
 .../modbus/readwrite/model/ModbusConstants.go      |   23 +-
 .../modbus/readwrite/model/ModbusDataType.go       |   17 +-
 .../ModbusDeviceInformationConformityLevel.go      |   17 +-
 .../model/ModbusDeviceInformationLevel.go          |   17 +-
 .../model/ModbusDeviceInformationMoreFollows.go    |   17 +-
 .../model/ModbusDeviceInformationObject.go         |   23 +-
 .../modbus/readwrite/model/ModbusErrorCode.go      |   17 +-
 .../protocols/modbus/readwrite/model/ModbusPDU.go  |   98 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |   27 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |   27 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |   31 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |   27 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |   27 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |   27 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |   27 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |   27 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |   27 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |   27 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |   27 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   31 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   65 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |   27 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |   27 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   27 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |   27 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |   27 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |   39 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |   41 +-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |   23 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |   41 +-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |   23 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |   27 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |   27 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |   27 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |   27 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |   27 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |   27 +-
 .../model/ModbusPDUReportServerIdRequest.go        |   27 +-
 .../model/ModbusPDUReportServerIdResponse.go       |   27 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |   41 +-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |   23 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |   41 +-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |   23 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |   27 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |   27 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |   27 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |   27 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |   27 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |   27 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |   27 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |   27 +-
 .../modbus/readwrite/model/ModbusRtuADU.go         |   33 +-
 .../modbus/readwrite/model/ModbusTcpADU.go         |   35 +-
 plc4go/protocols/s7/readwrite/ParserHelper.go      |   58 +-
 plc4go/protocols/s7/readwrite/XmlParserHelper.go   |   62 +-
 .../model/AlarmMessageAckObjectPushType.go         |   39 +-
 .../s7/readwrite/model/AlarmMessageAckPushType.go  |   55 +-
 .../readwrite/model/AlarmMessageAckResponseType.go |   35 +-
 .../s7/readwrite/model/AlarmMessageAckType.go      |   49 +-
 .../readwrite/model/AlarmMessageObjectAckType.go   |   39 +-
 .../readwrite/model/AlarmMessageObjectPushType.go  |   77 +-
 .../readwrite/model/AlarmMessageObjectQueryType.go |   65 +-
 .../s7/readwrite/model/AlarmMessagePushType.go     |   55 +-
 .../s7/readwrite/model/AlarmMessageQueryType.go    |   57 +-
 .../protocols/s7/readwrite/model/AlarmStateType.go |   17 +-
 plc4go/protocols/s7/readwrite/model/AlarmType.go   |   17 +-
 .../s7/readwrite/model/AssociatedValueType.go      |   43 +-
 plc4go/protocols/s7/readwrite/model/COTPPacket.go  |   52 +-
 .../readwrite/model/COTPPacketConnectionRequest.go |   31 +-
 .../model/COTPPacketConnectionResponse.go          |   31 +-
 .../protocols/s7/readwrite/model/COTPPacketData.go |   27 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |   31 +-
 .../model/COTPPacketDisconnectResponse.go          |   27 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |   27 +-
 .../protocols/s7/readwrite/model/COTPParameter.go  |   32 +-
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   27 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   27 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   27 +-
 ...COTPParameterDisconnectAdditionalInformation.go |   27 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   31 +-
 .../s7/readwrite/model/COTPProtocolClass.go        |   17 +-
 .../protocols/s7/readwrite/model/COTPTpduSize.go   |   17 +-
 .../s7/readwrite/model/CpuSubscribeEvents.go       |   17 +-
 plc4go/protocols/s7/readwrite/model/DataItem.go    |   11 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |   17 +-
 .../s7/readwrite/model/DataTransportSize.go        |   17 +-
 plc4go/protocols/s7/readwrite/model/DateAndTime.go |   23 +-
 plc4go/protocols/s7/readwrite/model/DeviceGroup.go |   17 +-
 plc4go/protocols/s7/readwrite/model/EventType.go   |   17 +-
 plc4go/protocols/s7/readwrite/model/MemoryArea.go  |   17 +-
 .../s7/readwrite/model/ModeTransitionType.go       |   17 +-
 plc4go/protocols/s7/readwrite/model/QueryType.go   |   17 +-
 plc4go/protocols/s7/readwrite/model/S7Address.go   |   22 +-
 .../protocols/s7/readwrite/model/S7AddressAny.go   |   31 +-
 .../s7/readwrite/model/S7DataAlarmMessage.go       |   24 +-
 plc4go/protocols/s7/readwrite/model/S7Message.go   |   44 +-
 .../s7/readwrite/model/S7MessageObjectRequest.go   |   39 +-
 .../s7/readwrite/model/S7MessageObjectResponse.go  |   35 +-
 .../s7/readwrite/model/S7MessageRequest.go         |   27 +-
 .../s7/readwrite/model/S7MessageResponse.go        |   27 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |   27 +-
 .../s7/readwrite/model/S7MessageUserData.go        |   27 +-
 plc4go/protocols/s7/readwrite/model/S7Parameter.go |   34 +-
 .../readwrite/model/S7ParameterModeTransition.go   |   29 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |   53 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |   27 +-
 .../model/S7ParameterSetupCommunication.go         |   27 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |   53 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   22 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |   29 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |   53 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |   27 +-
 plc4go/protocols/s7/readwrite/model/S7Payload.go   |   28 +-
 .../s7/readwrite/model/S7PayloadAlarm8.go          |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmAckInd.go     |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmS.go          |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmSC.go         |   33 +-
 .../s7/readwrite/model/S7PayloadAlarmSQ.go         |   33 +-
 .../readwrite/model/S7PayloadDiagnosticMessage.go  |   33 +-
 .../s7/readwrite/model/S7PayloadNotify.go          |   33 +-
 .../s7/readwrite/model/S7PayloadNotify8.go         |   33 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |   53 +-
 .../s7/readwrite/model/S7PayloadUserData.go        |   53 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   66 +-
 .../S7PayloadUserDataItemCpuFunctionAlarmAck.go    |   53 +-
 ...yloadUserDataItemCpuFunctionAlarmAckResponse.go |   39 +-
 .../S7PayloadUserDataItemCpuFunctionAlarmQuery.go  |   39 +-
 ...oadUserDataItemCpuFunctionAlarmQueryResponse.go |   35 +-
 ...ayloadUserDataItemCpuFunctionMsgSubscription.go |   31 +-
 ...aItemCpuFunctionMsgSubscriptionAlarmResponse.go |   31 +-
 ...erDataItemCpuFunctionMsgSubscriptionResponse.go |   27 +-
 ...ataItemCpuFunctionMsgSubscriptionSysResponse.go |   27 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   33 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |   59 +-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |   53 +-
 .../readwrite/model/S7PayloadWriteVarResponse.go   |   53 +-
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |   38 +-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   27 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |   22 +-
 .../model/S7VarRequestParameterItemAddress.go      |   35 +-
 plc4go/protocols/s7/readwrite/model/State.go       |   23 +-
 .../protocols/s7/readwrite/model/SyntaxIdType.go   |   17 +-
 .../s7/readwrite/model/SzlDataTreeItem.go          |   23 +-
 plc4go/protocols/s7/readwrite/model/SzlId.go       |   31 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |   17 +-
 plc4go/protocols/s7/readwrite/model/SzlSublist.go  |   17 +-
 plc4go/protocols/s7/readwrite/model/TPKTPacket.go  |   31 +-
 .../protocols/s7/readwrite/model/TransportSize.go  |   17 +-
 .../protocols/simulated/readwrite/ParserHelper.go  |    6 +-
 .../simulated/readwrite/XmlParserHelper.go         |   10 +-
 .../simulated/readwrite/model/DataItem.go          |   11 +-
 .../protocols/simulated/readwrite/model/Dummy.go   |   23 +-
 .../readwrite/model/SimulatedDataTypeSizes.go      |   17 +-
 plc4go/spi/Message.go                              |   10 +-
 plc4go/spi/context/ArrayContext.go                 |   61 +
 plc4go/spi/model/DefaultPlcBrowseEvent_plc4xgen.go |   11 +-
 plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go  |   13 +-
 .../DefaultPlcBrowseRequestResult_plc4xgen.go      |   11 +-
 .../spi/model/DefaultPlcBrowseRequest_plc4xgen.go  |   13 +-
 plc4go/spi/model/DefaultPlcBrowseResponse.go       |   11 +-
 .../DefaultPlcConsumerRegistration_plc4xgen.go     |   11 +-
 .../model/DefaultPlcReadRequestBuilder_plc4xgen.go |   15 +-
 .../model/DefaultPlcReadRequestResult_plc4xgen.go  |   11 +-
 plc4go/spi/model/DefaultPlcReadRequest_plc4xgen.go |   13 +-
 .../spi/model/DefaultPlcReadResponse_plc4xgen.go   |   13 +-
 plc4go/spi/model/DefaultPlcRequest.go              |    7 +-
 .../model/DefaultPlcSubscriptionEvent_plc4xgen.go  |   15 +-
 .../model/DefaultPlcSubscriptionHandle_plc4xgen.go |    9 +-
 ...efaultPlcSubscriptionRequestBuilder_plc4xgen.go |   17 +-
 ...DefaultPlcSubscriptionRequestResult_plc4xgen.go |   11 +-
 .../DefaultPlcSubscriptionRequest_plc4xgen.go      |   13 +-
 .../DefaultPlcSubscriptionResponse_plc4xgen.go     |   13 +-
 plc4go/spi/model/DefaultPlcTagRequest_plc4xgen.go  |    9 +-
 ...faultPlcUnsubscriptionRequestResult_plc4xgen.go |   11 +-
 .../DefaultPlcWriteRequestBuilder_plc4xgen.go      |   17 +-
 .../model/DefaultPlcWriteRequestResult_plc4xgen.go |   11 +-
 .../spi/model/DefaultPlcWriteRequest_plc4xgen.go   |   15 +-
 .../spi/model/DefaultPlcWriteResponse_plc4xgen.go  |   11 +-
 plc4go/spi/model/DefaultResponse_plc4xgen.go       |    9 +-
 plc4go/spi/testutils/DriverTestRunner.go           |    9 +-
 plc4go/spi/testutils/ParserSerializerTestRunner.go |   14 +-
 plc4go/spi/utils/LengthAware.go                    |    6 +-
 plc4go/spi/utils/Serializable.go                   |    4 +-
 plc4go/spi/utils/WriteBuffer.go                    |    5 +-
 plc4go/spi/utils/WriteBufferBoxBased.go            |    9 +-
 plc4go/spi/utils/WriteBufferByteBased.go           |    7 +-
 plc4go/spi/utils/WriteBufferByteBased_test.go      |   10 +-
 plc4go/spi/utils/WriteBufferJsonBased.go           |   10 +-
 plc4go/spi/utils/WriteBufferXmlBased.go            |   13 +-
 plc4go/spi/values/PlcList.go                       |    7 +-
 plc4go/spi/values/PlcStruct.go                     |    7 +-
 plc4go/spi/values/WriteBufferPlcValueBased.go      |    7 +-
 plc4go/tests/drivers/tests/ads_driver_test.go      |    3 +-
 plc4go/tests/drivers/tests/eip_driver_test.go      |    6 +-
 plc4go/tests/drivers/tests/knxnetip_driver_test.go |    6 +-
 plc4go/tests/drivers/tests/manual_bacnet_test.go   |    3 +-
 plc4go/tests/drivers/tests/modbus_driver_test.go   |    6 +-
 plc4go/tests/drivers/tests/s7_driver_test.go       |    6 +-
 plc4go/tools/plc4xgenerator/gen.go                 |   13 +-
 .../internal/cbusanalyzer/analyzer.go              |    5 +-
 2401 files changed, 40641 insertions(+), 43344 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 b466000782..567ea8da90 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
@@ -747,6 +747,9 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         } else if ("_value".equals(variableLiteralName)) {
             return toValueVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
         }
+        if ("_lastItem".equals(variableLiteralName)) {
+            return toLastItemVariableExpression(typeReference, serialize, tracer);
+        }
         if ("length".equals(variableLiteral.getChild().map(VariableLiteral::getName).orElse(""))) {
             return toLengthVariableExpression(field, variableLiteral, serialize, tracer);
         }
@@ -1136,6 +1139,11 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             child.getChild().map(childChild -> "." + toVariableExpression(field, typeReference, childChild, parserArguments, serializerArguments, false, suppressPointerAccess, true)).orElse("");
     }
 
+    private String toLastItemVariableExpression(TypeReference typeReference, boolean serialize, Tracer tracer) {
+        tracer = tracer.dive("lastItem");
+        return tracer + "spiContext.GetLastItemFromContext(ctx)";
+    }
+
     private String toLengthVariableExpression(Field field, VariableLiteral variableLiteral, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("length");
         return tracer + (serialize ? ("len(m.Get" + capitalize(variableLiteral.getName()) + "())") : ("(" + variableLiteral.getName() + ")"));
@@ -1150,12 +1158,12 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
 
     private String toLengthInBitsVariableExpression(TypeReference typeReference, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("lengthInBits");
-        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m.Get" : "Get") + "LengthInBits" + (serialize ? "())" : "()");
+        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m.Get" : "Get") + "LengthInBits" + (serialize ? "(ctx))" : "(ctx)");
     }
 
     private String toLengthInBytesVariableExpression(TypeReference typeReference, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("lengthInBytes");
-        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m.Get" : "Get") + "LengthInBytes" + (serialize ? "())" : "()");
+        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m.Get" : "Get") + "LengthInBytes" + (serialize ? "(ctx))" : "(ctx)");
     }
 
     public String getSizeInBits(ComplexTypeDefinition complexTypeDefinition, List<Argument> parserArguments) {
@@ -1375,9 +1383,27 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         return "_";
     }
 
-    public boolean needsVariable(ArrayField field, String variableName, boolean serialization) {
+    public boolean needsVariable(Field field, String variableName, boolean serialization) {
         if (!serialization) {
-            if (field.getLoopExpression().contains(variableName)) {
+            if (field instanceof ArrayField) {
+                ArrayField arrayField = (ArrayField) field;
+                if (arrayField.getLoopExpression().contains(variableName)) {
+                    return true;
+                }
+            }
+        }
+        if (field instanceof VirtualField) {
+            VirtualField virtualField = (VirtualField) field;
+            if (virtualField.getValueExpression().contains(variableName)) {
+                return true;
+            }
+        }
+        if (field instanceof PaddingField) {
+            PaddingField paddingField = (PaddingField) field;
+            if (paddingField.getPaddingCondition().contains(variableName)) {
+                return true;
+            }
+            if (paddingField.getPaddingValue().contains(variableName)) {
                 return true;
             }
         }
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 db26498cc7..cba3415c0a 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
@@ -50,6 +50,7 @@ package model
 <#macro importSectionWithContentBelow>
 	<#local sectionContent><#nested></#local>
 import (
+	"context"
 	<#if helper.getRequiredImports()?has_content>
 	<#list helper.getRequiredImports() as import>
 	${import}
@@ -153,8 +154,7 @@ type _${type.name} struct {
 <#assign discriminatedParentType = type.asComplexTypeDefinition().orElseThrow()>
 type _${type.name}ChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
     <#list discriminatedParentType.getDiscriminatorNames() as discriminatorName>
     <#-- If the discriminator name matches that of another field, suppress the methods generation -->
         <#if !type.isNonDiscriminatorField(discriminatorName)>
@@ -212,7 +212,7 @@ func (m *_${type.name})  Get${discriminatorName?cap_first}() <#if typeRef.isNonS
 <#if type.isDiscriminatedParentTypeDefinition()>
 
 type ${type.name}Parent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child ${type.name}, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child ${type.name}, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -288,6 +288,9 @@ func (m *_${type.name}) Get${field.name?cap_first}() <#if helper.needsPointerAcc
 	<#list type.virtualFields as field>
 		<#assign typeRef=field.asTypedField().orElseThrow().type>
 func (m *_${type.name}) Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)} {
+	<#-- TODO: This should only be output, if ctx is needed -->
+	ctx := context.Background()
+	_ = ctx
   	  <#list type.propertyFields?filter(f->f.isOptionalField()) as field>
 	${field.name} := m.${field.name?cap_first}
 	_ = ${field.name}
@@ -393,20 +396,14 @@ func (m *_${type.name}) GetTypeName() string {
 }
 
 <#if !type.isDiscriminatedParentTypeDefinition()>
-func (m *_${type.name}) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-</#if>
-
-<#if !type.isDiscriminatedParentTypeDefinition()>
-<#-- TODO: use serializer args instead of a fixed bool for one case -->
-func (m *_${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_${type.name}) GetLengthInBits(ctx context.Context) uint16 {
 		<#if type.isDiscriminatedChildTypeDefinition()>
-	lengthInBits := uint16(m.GetParentLengthInBits())
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 		<#else>
 	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()>
@@ -422,12 +419,15 @@ func (m *_${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
 		lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
 				<#else>
 				<#if arrayField.isCountArrayField()>
-		for i, element := range m.${arrayField.name?cap_first} {
-			last := i == len(m.${arrayField.name?cap_first}) -1
-			lengthInBits += element.(interface{GetLengthInBitsConditional(bool) uint16}).GetLengthInBitsConditional(last)
+		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" />
+			<#-- TODO: find a way to do this nicer -->
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{GetLengthInBits(context.Context) uint16}).GetLengthInBits(arrayCtx)
 				<#else>
 		for _, element := range m.${arrayField.name?cap_first} {
-			lengthInBits += element.GetLengthInBits()
+			lengthInBits += element.GetLengthInBits(ctx)
 				</#if>
 		}
 				</#if>
@@ -506,9 +506,9 @@ func (m *_${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
 					<#elseif helper.isEnumField(optionalField)>
 		lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
                     <#elseif optionalField.type.isComplexTypeReference()>
-		lengthInBits += m.${optionalField.name?cap_first}.GetLengthInBits()
+		lengthInBits += m.${optionalField.name?cap_first}.GetLengthInBits(ctx)
 					<#else>
-		lengthInBits += (*m.${optionalField.name?cap_first}).GetLengthInBits()
+		lengthInBits += (*m.${optionalField.name?cap_first}).GetLengthInBits(ctx)
 					</#if>
 	}
 					<#break>
@@ -544,14 +544,14 @@ func (m *_${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
 					<#elseif helper.isEnumField(field)>
 	lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
 					<#else>
-	lengthInBits += m.${simpleField.name?cap_first}.GetLengthInBits()
+	lengthInBits += m.${simpleField.name?cap_first}.GetLengthInBits(ctx)
 					</#if>
 					<#break>
 				<#case "switch">
 					<#assign switchField = field.asSwitchField().orElseThrow()>
 
 	// Length of sub-type elements will be added by sub-type...
-	lengthInBits += m.GetLengthInBits()
+	lengthInBits += m.GetLengthInBits(ctx)
 					<#break>
 				<#case "unknown">
 					<#assign unknownField = field.asUnknownField().orElseThrow()>
@@ -574,7 +574,7 @@ func (m *_${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
 </#if>
 
 <#if type.isDiscriminatedParentTypeDefinition()>
-func (m *_${type.name}) GetParentLengthInBits() uint16 {
+func (m *_${type.name}) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 	<#list type.fields as field>
 		<#switch field.typeName>
@@ -592,12 +592,15 @@ func (m *_${type.name}) GetParentLengthInBits() uint16 {
 		lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
 				<#else>
 					<#if arrayField.isCountArrayField()>
-		for i, element := range m.${arrayField.name?cap_first} {
-			last := i >= len(m.${arrayField.name?cap_first}) -1
-			lengthInBits += element.(interface{GetLengthInBitsConditional(bool) uint16}).GetLengthInBitsConditional(last)
+		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" />
+            <#-- TODO: find a way to do this nicer -->
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{GetLengthInBits(context.Context) uint16}).GetLengthInBits(arrayCtx)
 					<#else>
 		for _, element := range m.${arrayField.name?cap_first} {
-			lengthInBits += element.GetLengthInBits()
+			lengthInBits += element.GetLengthInBits(ctx)
 					</#if>
 		}
 				</#if>
@@ -638,7 +641,7 @@ func (m *_${type.name}) GetParentLengthInBits() uint16 {
 				<#elseif helper.isEnumField(discriminatorField)>
 	lengthInBits += ${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits};
 				<#else>
-	lengthInBits += ${discriminatorField.name}.GetLengthInBits();
+	lengthInBits += ${discriminatorField.name}.GetLengthInBits(ctx);
 				</#if>
 				<#break>
 			<#case "enum">
@@ -678,9 +681,9 @@ func (m *_${type.name}) GetParentLengthInBits() uint16 {
 				<#elseif helper.isEnumField(field)>
 		lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
                 <#elseif optionalField.type.isComplexTypeReference()>
-		lengthInBits += m.${optionalField.name?cap_first}.GetLengthInBits()
+		lengthInBits += m.${optionalField.name?cap_first}.GetLengthInBits(ctx)
                 <#else>
-		lengthInBits += (*m.${optionalField.name?cap_first}).GetLengthInBits()
+		lengthInBits += (*m.${optionalField.name?cap_first}).GetLengthInBits(ctx)
 				</#if>
 	}
 				<#break>
@@ -716,7 +719,7 @@ func (m *_${type.name}) GetParentLengthInBits() uint16 {
 				<#elseif helper.isEnumField(field)>
 	lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
 				<#else>
-	lengthInBits += m.${simpleField.name?cap_first}.GetLengthInBits()
+	lengthInBits += m.${simpleField.name?cap_first}.GetLengthInBits(ctx)
 				</#if>
 				<#break>
 			<#case "unknown">
@@ -739,18 +742,18 @@ func (m *_${type.name}) GetParentLengthInBits() uint16 {
 }
 </#if>
 
-func (m *_${type.name}) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_${type.name}) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 <#assign hasParserArguments=parserArguments?has_content/>
 <#assign parserArgumentList><#if hasParserArguments><#list parserArguments as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if></#assign>
 <#assign parserArgumentNameList><#if hasParserArguments><#list parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if></#assign>
 func ${type.name}Parse(theBytes []byte<#if hasParserArguments>, ${parserArgumentList}</#if>) (${type.name}, error) {
-	return ${type.name}ParseWithBuffer(utils.NewReadBufferByteBased(theBytes${helper.getEndiannessOptions(true, true)})<#if hasParserArguments>, ${parserArgumentNameList}</#if>)
+	return ${type.name}ParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes${helper.getEndiannessOptions(true, true)})<#if hasParserArguments>, ${parserArgumentNameList}</#if>)
 }
 
-func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${parserArgumentList}</#if>) (${type.name}, error) {
+func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer<#if hasParserArguments>, ${parserArgumentList}</#if>) (${type.name}, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("${type.name}"); pullErr != nil {
@@ -805,10 +808,12 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 		${arrayField.name} = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(${helper.toIntegerParseExpression(arrayField, 16, arrayField.loopExpression, parserArguments)}); curItem++ {
-						<#if (!arrayElementType.isSimpleTypeReference()) && helper.requiresVariable(arrayField, "lastItem")>
-			lastItem := curItem == uint16(${helper.toParseExpression(arrayField, helper.intTypeReference, arrayField.loopExpression, parserArguments)} - 1)
-						</#if>
+		_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" />
+            <#-- TODO: find a way to do this nicer -->
+			_ = arrayCtx
+			_ = _curItem
                         <@compress single_line=true>
 			_item, _err :=
                             <#if arrayElementType.isSimpleTypeReference()>
@@ -833,7 +838,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
                                         </#list>
                                     </#if>
                                 </#assign>
-                                ${typeName}ParseWithBuffer(readBuffer${refParams})
+                                ${typeName}ParseWithBuffer(arrayCtx, readBuffer${refParams})
                             </#if>
                         </...@compress>
 
@@ -841,9 +846,9 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 				return nil, errors.Wrap(_err, "Error parsing '${arrayField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 			}
                         <#if arrayElementType.isSimpleTypeReference()>
-			${arrayField.name}[curItem] = _item
+			${arrayField.name}[_curItem] = _item
                         <#else>
-			${arrayField.name}[curItem] = _item.(${arrayElementType.asComplexTypeReference().orElseThrow().name})
+			${arrayField.name}[_curItem] = _item.(${arrayElementType.asComplexTypeReference().orElseThrow().name})
                         </#if>
 		}
 	}
@@ -878,7 +883,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
                                     </#list>
                                 </#if>
                             </#assign>
-                            ${typeName}ParseWithBuffer(readBuffer${refParams})
+                            ${typeName}ParseWithBuffer(ctx, readBuffer${refParams})
                         </#if>
                         </...@compress>
 
@@ -920,7 +925,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
                                         </#list>
                                     </#if>
                                 </#assign>
-                                ${typeName}ParseWithBuffer(readBuffer${refParams})
+                                ${typeName}ParseWithBuffer(ctx, readBuffer${refParams})
 							</#if>
 						</...@compress>
 
@@ -976,7 +981,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 		return nil, errors.Wrap(_${constField.name}Err, "Error serializing '${constField.name}' field")<@emitImport import="github.com/pkg/errors" />
 	}
                     <#else>
-	${constField.name}, _${constField.name}Err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(readBuffer)
+	${constField.name}, _${constField.name}Err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(ctx, readBuffer)
 	if _${constField.name}Err != nil {
 		return nil, errors.Wrap(_${constField.name}Err, "Error parsing '${constField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 	}
@@ -1000,7 +1005,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 	if pullErr := readBuffer.PullContext("${namedField.name}"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for ${namedField.name}")<@emitImport import="github.com/pkg/errors" />
 	}
-	${helper.getVariableName(field)}_temp, _${discriminatorField.name}Err := ${helper.getLanguageTypeNameForField(discriminatorField)}ParseWithBuffer(readBuffer)
+	${helper.getVariableName(field)}_temp, _${discriminatorField.name}Err := ${helper.getLanguageTypeNameForField(discriminatorField)}ParseWithBuffer(ctx, readBuffer)
 	var ${helper.getVariableName(field)} ${helper.getLanguageTypeNameForField(discriminatorField)} = ${helper.getVariableName(field)}_temp
 	if closeErr := readBuffer.CloseContext("${namedField.name}"); closeErr != nil {
 		return nil, errors.Wrap(closeErr, "Error closing for ${namedField.name}")<@emitImport import="github.com/pkg/errors" />
@@ -1138,7 +1143,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 		if pullErr := readBuffer.PullContext("${optionalField.name}"); pullErr != nil {
 			return nil, errors.Wrap(pullErr, "Error pulling for ${optionalField.name}")<@emitImport import="github.com/pkg/errors" />
 		}
-		_val, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(readBuffer)
+		_val, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(ctx, readBuffer)
 		if _err != nil {
 			return nil, errors.Wrap(_err, "Error parsing '${optionalField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 		}
@@ -1170,7 +1175,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 						</#list>
 					</#if>
 				</#assign>
-		_val, _err := ${typeName}ParseWithBuffer(readBuffer${refParams})
+		_val, _err := ${typeName}ParseWithBuffer(ctx, readBuffer${refParams})
                 </...@compress>
 
 		switch {
@@ -1198,7 +1203,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 		return nil, errors.Wrap(_err, "Error parsing '${assertField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 	}
 			<#elseif helper.isEnumField(field)>
-	${assertField.name}, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(readBuffer)
+	${assertField.name}, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(ctx, readBuffer)
 	if _err != nil {
 		return nil, errors.Wrap(_err, "Error parsing '${assertField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 	}
@@ -1215,7 +1220,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 				<#assign hasRefParams=complexTypeReference.params.isPresent() && typeDefinition.parserArguments.isPresent()>
 				<#assign refParams> <#if hasRefParams>, <#list complexTypeReference.params.orElseThrow() as typeParam>${helper.toTypedParseExpression(assertField, null, typeParam, null)}<#sep>, </#sep></#list> </#if> </#assign>
                 </...@compress>
-	_val, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(readBuffer${refParams})
+	_val, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(ctx, readBuffer${refParams})
 	if _err != nil {
 		return nil, errors.Wrap(_err, "Error parsing '${assertField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 	}
@@ -1304,7 +1309,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
                 </#list>
             </#if>
         </#assign>
-		${typeName}ParseWithBuffer(readBuffer${refParams})
+		${typeName}ParseWithBuffer(ctx, readBuffer${refParams})
 	</#if>
     </...@compress>
 
@@ -1375,7 +1380,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 						</#if>: // ${case.name}
                     </...@compress>
 
-		_childTemp, typeSwitchError = ${case.name}ParseWithBuffer(readBuffer<#if case.allParserArguments.isPresent()>, <#list case.allParserArguments.orElseThrow() as parserArgument><#if <#--TODO: here DF1ResponseMessage throws a payloadLength not present: meaning that some feature is not rightfully implemented as the result should be a error not a missing pointer-->type.getPropertyFieldFromThisOrParentByName(parserArgument.name).isPresent() && type.getPropertyFieldFromThisOrParentByName(parse [...]
+		_childTemp, typeSwitchError = ${case.name}ParseWithBuffer(ctx, readBuffer<#if case.allParserArguments.isPresent()>, <#list case.allParserArguments.orElseThrow() as parserArgument><#if <#--TODO: here DF1ResponseMessage throws a payloadLength not present: meaning that some feature is not rightfully implemented as the result should be a error not a missing pointer-->type.getPropertyFieldFromThisOrParentByName(parserArgument.name).isPresent() && type.getPropertyFieldFromThisOrParentByName( [...]
 				</#list>
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for<#if switchField.getDiscriminatorExpressions()?has_content> parameters [<#list switchField.getDiscriminatorExpressions() as discriminatorExpression>${discriminatorExpression.stringRepresentation()}=%v<#sep>, </#sep></#list>]</#if>"<#if switchField.getDiscriminatorExpressions()?has_content>, <#list switchField.getDiscriminatorExpressions() as discriminatorExpression>${helper.toParseExpression(null, null, discriminatorExpression, parserAr [...]
@@ -1433,7 +1438,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 				if pullErr := readBuffer.PullContext("${peekField.name}"); pullErr != nil {
 					return nil, errors.Wrap(pullErr, "Error pulling for ${peekField.name}")<@emitImport import="github.com/pkg/errors" />
 				}
-				${peekField.name}, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(readBuffer)
+				${peekField.name}, _err := ${helper.getLanguageTypeNameForField(field)}ParseWithBuffer(ctx, readBuffer)
 				if _err != nil {
 					return nil, errors.Wrap(_err, "Error parsing '${peekField.name}' field of ${type.name}")<@emitImport import="github.com/pkg/errors" />
 				}
@@ -1464,7 +1469,7 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
                                 </#list>
                             </#if>
                         </#assign>
-				${peekField.name}, _ := ${typeName}ParseWithBuffer(readBuffer${refParams})
+				${peekField.name}, _ := ${typeName}ParseWithBuffer(ctx, readBuffer${refParams})
                     </...@compress>
                 </#if>
 
@@ -1531,20 +1536,20 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if hasParserArgume
 }
 
 <#if type.isDiscriminatedParentTypeDefinition()>
-func (pm *_${type.name}) SerializeParent(writeBuffer utils.WriteBuffer, child ${type.name}, serializeChildFunction func() error) error {
+func (pm *_${type.name}) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child ${type.name}, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
 <#else>
 func (m *_${type.name}) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes()))${helper.getEndiannessOptions(false, true)})
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background())))${helper.getEndiannessOptions(false, true)})
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_${type.name}) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 </#if>
 	positionAware := writeBuffer
 	_ = positionAware
@@ -1563,7 +1568,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	${key}ArraySizeInBytes := func(items ${typeName}) uint32 {
 		var sizeInBytes uint32 = 0
 		for _, v := range items {
-			sizeInBytes += uint32(v.GetLengthInBytes())
+			sizeInBytes += uint32(v.GetLengthInBytes(ctx))
 		}
 		return sizeInBytes
 	}
@@ -1596,16 +1601,18 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	itemCount := uint16(len(m.Get${arrayField.name?cap_first}()))
 	var curItem uint16 = 0
 					</#if>
-	for _, _element := range m.Get${arrayField.name?cap_first}() {
+	for _curItem, _element := range m.Get${arrayField.name?cap_first}() {
+	                <#-- TODO: find a way to do this nicer -->
+		_ = _curItem
 						<#if arrayElementType.isSimpleTypeReference()>
 							<#assign simpleTypeReference = arrayElementType.asSimpleTypeReference().orElseThrow()>
 		_elementErr := ${helper.getWriteBufferWriteMethodCall("", simpleTypeReference, "_element", arrayField)}
 						<#else>
 						<#assign complexTypeReference = arrayElementType>
-						<#if helper.needsVariable(arrayField, "lastItem", true)>
-		var lastItem bool = curItem == (itemCount - 1)
-						</#if>
-		_elementErr := writeBuffer.WriteSerializable(_element)
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Get${arrayField.name?cap_first}()), _curItem)<@emitImportWithAlias alias="spiContext" import="github.com/apache/plc4x/plc4go/spi/context" />
+        <#-- TODO: find a way to do this nicer -->
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 					</#if>
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing '${arrayField.name}' field")<@emitImport import="github.com/pkg/errors" />
@@ -1650,7 +1657,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
                         <#else>
 	// Const field (${constField.name})
 	${constField.name} := Cast${helper.getLanguageTypeNameForField(field)}(${type.name}_${constField.name?upper_case})
-	_${constField.name}Err := writeBuffer.WriteSerializable(${constField.name})
+	_${constField.name}Err := writeBuffer.WriteSerializable(ctx, ${constField.name})
 	if _${constField.name}Err != nil {
 		return errors.Wrap(_${constField.name}Err, "Error serializing '${constField.name}' field")<@emitImport import="github.com/pkg/errors" />
 	}
@@ -1673,7 +1680,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	if pushErr := writeBuffer.PushContext("${namedField.name}"); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for ${namedField.name}")<@emitImport import="github.com/pkg/errors" />
 	}
-	_${discriminatorField.name}Err := writeBuffer.WriteSerializable(${discriminatorField.name})
+	_${discriminatorField.name}Err := writeBuffer.WriteSerializable(ctx, ${discriminatorField.name})
 	if popErr := writeBuffer.PopContext("${namedField.name}"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for ${namedField.name}")<@emitImport import="github.com/pkg/errors" />
 	}
@@ -1754,7 +1761,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 			return errors.Wrap(pushErr, "Error pushing for ${optionalField.name}")<@emitImport import="github.com/pkg/errors" />
 		}
 		${optionalField.name} = m.Get${optionalField.name?cap_first}()
-		_${optionalField.name}Err := writeBuffer.WriteSerializable(${optionalField.name})
+		_${optionalField.name}Err := writeBuffer.WriteSerializable(ctx, ${optionalField.name})
 		if popErr := writeBuffer.PopContext("${optionalField.name}"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for ${optionalField.name}")<@emitImport import="github.com/pkg/errors" />
 		}
@@ -1824,7 +1831,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	if pushErr := writeBuffer.PushContext("${simpleField.name}"); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for ${simpleField.name}")<@emitImport import="github.com/pkg/errors" />
 	}
-	_${simpleField.name}Err := writeBuffer.WriteSerializable(m.Get${simpleField.name?cap_first}())
+	_${simpleField.name}Err := writeBuffer.WriteSerializable(ctx, m.Get${simpleField.name?cap_first}())
 	if popErr := writeBuffer.PopContext("${simpleField.name}"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for ${simpleField.name}")<@emitImport import="github.com/pkg/errors" />
 	}
@@ -1846,7 +1853,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
                 	<#assign typedField = field.asTypedField().orElseThrow()>
                 	<#assign namedField = field.asNamedField().orElseThrow()>
 	// Virtual field
-	if _${namedField.name}Err := writeBuffer.WriteVirtual("${namedField.name}", m.Get${namedField.name?cap_first}()); _${namedField.name}Err != nil {
+	if _${namedField.name}Err := writeBuffer.WriteVirtual(ctx, "${namedField.name}", m.Get${namedField.name?cap_first}()); _${namedField.name}Err != nil {
 		return errors.Wrap(_${namedField.name}Err, "Error serializing '${namedField.name}' field")<@emitImport import="github.com/pkg/errors" />
 	}
 					<#break>
@@ -1859,7 +1866,7 @@ func (m *_${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 		<#else>
 	if popErr := writeBuffer.PopContext("${type.name}"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for ${type.name}")<@emitImport import="github.com/pkg/errors" />
@@ -1892,7 +1899,7 @@ func (m *_${type.name}) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh
index 006a075caa..a5843c33c8 100644
--- a/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh
@@ -50,6 +50,7 @@ package model
 <#macro importSectionWithContentBelow>
 	<#local sectionContent><#nested></#local>
 import (
+	"context"
 	<#if helper.getRequiredImportsForDataIo()?has_content>
 		<#list helper.getRequiredImportsForDataIo() as import>
 	${import}
@@ -68,11 +69,11 @@ import (
 	
 <#-- TODO: the code below implies that parserArguments will be null if not present... not pretty  -->
 <#if type.parserArguments.isPresent()><#assign parserArguments=type.parserArguments.orElseThrow()></#if>
-func ${type.name}Parse(theBytes []byte<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (api.PlcValue, error) {
-	return ${type.name}ParseWithBuffer(utils.NewReadBufferByteBased(theBytes${helper.getEndiannessOptions(true, true)})<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
+func ${type.name}Parse(ctx context.Context, theBytes []byte<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (api.PlcValue, error) {
+	return ${type.name}ParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes${helper.getEndiannessOptions(true, true)})<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
 }
 
-func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (api.PlcValue, error) {
+func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (api.PlcValue, error) {
 	readBuffer.PullContext("${type.name}")
 	switch {
 	<#list type.switchField.orElseThrow().cases as case>
@@ -238,13 +239,13 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer<#if parserArguments
 
 func ${type.name}Serialize(value api.PlcValue<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(${helper.getEndiannessOptions(false, false)})
-	if err := ${type.name}SerializeWithWriteBuffer(wb, value<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>); err != nil {
+	if err := ${type.name}SerializeWithWriteBuffer(context.Background(), wb, value<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func ${type.name}SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer, value api.PlcValue<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
+func ${type.name}SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer, value api.PlcValue<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if parserArgument.type.isNonSimpleTypeReference() && !parserArgument.type.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
 	<#if parserArguments?has_content>
 	m := struct {
     	<#list parserArguments as parserArgument>
diff --git a/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh
index 10114cdce1..c0f22ecbf3 100644
--- a/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh
@@ -49,6 +49,7 @@ ${helper.fileName(protocolName, languageName, outputFlavor)?replace(".", "/")}/m
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -165,23 +166,23 @@ func Cast${type.name}(structType interface{}) ${type.name} {
 	return castFunc(structType)
 }
 
-func (m ${type.name}) GetLengthInBits() uint16 {
+func (m ${type.name}) GetLengthInBits(ctx context.Context) uint16 {
 	<#assign simpleTypeReference = type.type.orElseThrow().asSimpleTypeReference().orElseThrow()>
 	return <#if type.type.orElseThrow().isStringTypeReference()>0<#else>${simpleTypeReference.sizeInBits}</#if>
 }
 
-func (m ${type.name}) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m ${type.name}) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 <#if type.type?has_content && type.type.orElseThrow().isSimpleTypeReference()>
 	<#assign simpleTypeReference = type.type.orElseThrow().asSimpleTypeReference().orElseThrow()>
 	<#if simpleTypeReference.getSizeInBits() != -1>
-func ${type.name}Parse(theBytes []byte) (${type.name}, error) {
-	return ${type.name}ParseWithBuffer(utils.NewReadBufferByteBased(theBytes${helper.getEndiannessOptions(true, true)}))
+func ${type.name}Parse(ctx context.Context, theBytes []byte) (${type.name}, error) {
+	return ${type.name}ParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes${helper.getEndiannessOptions(true, true)}))
 }
 
-func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer) (${type.name}, error) {
+func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (${type.name}, error) {
 	val, err := ${helper.getReadBufferReadMethodCall(type.name, type.type.orElseThrow(), null)}
 	if err != nil {
 		return <#if type.type.orElseThrow().isStringTypeReference() || type.type.orElseThrow().isVstringTypeReference()>""<#elseif baseType == "bool">false<#else>0</#if>, errors.Wrap(err, "error reading ${type.name}")
@@ -196,13 +197,13 @@ func ${type.name}ParseWithBuffer(readBuffer utils.ReadBuffer) (${type.name}, err
 
 func (e ${type.name}) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(${helper.getEndiannessOptions(false, false)})
-	if err := e.SerializeWithWriteBuffer(wb); err != nil {
+	if err := e.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (e ${type.name}) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (e ${type.name}) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	return ${helper.getWriteBufferWriteMethodCall(type.name, type.type.orElseThrow(), helper.getLanguageTypeNameForTypeReference(type.type.orElseThrow()) + "(e)", null, "utils.WithAdditionalStringRepresentation(e.PLC4XEnumName())")}
 }
 	</#if>
diff --git a/code-generation/language-go/src/main/resources/templates/go/parser-factory-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/parser-factory-template.go.ftlh
index 91870c8621..d3968bffa4 100644
--- a/code-generation/language-go/src/main/resources/templates/go/parser-factory-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/parser-factory-template.go.ftlh
@@ -48,6 +48,8 @@ ${helper.fileName(protocolName, languageName, outputFlavor)?replace(".", "/")}/P
 package ${outputFlavor?replace("-","")}
 
 import (
+	"context"
+
 	"github.com/apache/plc4x/plc4go/protocols/${helper.getSanitizedPackageName()}/${outputFlavor?replace("-","")}/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -76,7 +78,7 @@ func (m ${helper.getSanitizedProtocolName()?cap_first}ParserHelper) Parse(typeNa
 			</#if>
 		</#list>
 	</#if>
-		return model.${typeDefinition.name}ParseWithBuffer(io<#if typeDefinition.parserArguments.isPresent()>, <#list typeDefinition.parserArguments.orElseThrow() as parserArgument>${parserArgument.name}<#sep>, </#list></#if>)
+		return model.${typeDefinition.name}ParseWithBuffer(context.Background(), io<#if typeDefinition.parserArguments.isPresent()>, <#list typeDefinition.parserArguments.orElseThrow() as parserArgument>${parserArgument.name}<#sep>, </#list></#if>)
 </#list>
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
diff --git a/code-generation/language-go/src/main/resources/templates/go/xml-parser-factory-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/xml-parser-factory-template.go.ftlh
index 5808caf8ef..f909f2f771 100644
--- a/code-generation/language-go/src/main/resources/templates/go/xml-parser-factory-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/xml-parser-factory-template.go.ftlh
@@ -48,11 +48,13 @@ ${helper.fileName(protocolName, languageName, outputFlavor)?replace(".", "/")}/X
 package ${outputFlavor?replace("-","")}
 
 import (
+	"context"
+	"strings"
+	"strconv"
+
 	"github.com/apache/plc4x/plc4go/protocols/${helper.getSanitizedPackageName()}/${outputFlavor?replace("-","")}/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
-    "strings"
-    "strconv"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -117,9 +119,9 @@ func (m ${helper.getSanitizedProtocolName()?cap_first}XmlParserHelper) Parse(typ
                 </#if>
             </#list>
             <#assign parserArgumentList><#list typeDefinition.parserArguments.orElseThrow() as parserArgument>${parserArgument.name}<#sep>, </#sep> </#list> </#assign>
-            return model.${typeDefinition.name}ParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), ${parserArgumentList})
+            return model.${typeDefinition.name}ParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)), ${parserArgumentList})
         <#else>
-			return model.${typeDefinition.name}ParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+			return model.${typeDefinition.name}ParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
         </#if>
     </#list>
     }
diff --git a/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml b/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml
index 8433fae576..8d76a5ce14 100644
--- a/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml
+++ b/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml
@@ -501,7 +501,7 @@
         <TPKTPacket>
           <protocolId dataType="uint" bitLength="8">3</protocolId>
           <reserved dataType="uint" bitLength="8">0</reserved>
-          <len dataType="uint" bitLength="16">27</len>
+          <len dataType="uint" bitLength="16">26</len>
           <payload>
             <COTPPacket>
               <headerLength dataType="uint" bitLength="8">2</headerLength>
@@ -548,7 +548,6 @@
                             <dataLength dataType="uint" bitLength="16">1</dataLength>
                             <data dataType="byte" bitLength="8">0x01</data>
                             <padding isList="true">
-                              <value dataType="uint" bitLength="8">0</value>
                             </padding>
                           </S7VarPayloadDataItem>
                         </items>
diff --git a/plc4go/assets/testing/protocols/s7/ParserSerializerTestsuite.xml b/plc4go/assets/testing/protocols/s7/ParserSerializerTestsuite.xml
index 1e229d9834..4e0b3e5f93 100644
--- a/plc4go/assets/testing/protocols/s7/ParserSerializerTestsuite.xml
+++ b/plc4go/assets/testing/protocols/s7/ParserSerializerTestsuite.xml
@@ -580,13 +580,13 @@
 
   <testcase>
     <name>S7 Read Response</name>
-    <raw>0300002d02f08032030000000b0002001800000404ff0300010100ff0300010100ff0300010100ff0300010100</raw>
+    <raw>0300002c02f08032030000000b0002001700000404ff0300010100ff0300010100ff0300010100ff03000101</raw>
     <root-type>TPKTPacket</root-type>
     <xml>
       <TPKTPacket>
         <protocolId dataType="uint" bitLength="8">3</protocolId>
         <reserved dataType="uint" bitLength="8">0</reserved>
-        <len dataType="uint" bitLength="16">45</len>
+        <len dataType="uint" bitLength="16">44</len>
         <payload>
           <COTPPacket>
             <headerLength dataType="uint" bitLength="8">2</headerLength>
@@ -604,7 +604,7 @@
                 <reserved dataType="uint" bitLength="16">0</reserved>
                 <tpduReference dataType="uint" bitLength="16">11</tpduReference>
                 <parameterLength dataType="uint" bitLength="16">2</parameterLength>
-                <payloadLength dataType="uint" bitLength="16">24</payloadLength>
+                <payloadLength dataType="uint" bitLength="16">23</payloadLength>
                 <S7MessageResponseData>
                   <errorClass dataType="uint" bitLength="8">0</errorClass>
                   <errorCode dataType="uint" bitLength="8">0</errorCode>
@@ -670,7 +670,6 @@
                           <dataLength dataType="uint" bitLength="16">1</dataLength>
                           <data dataType="byte" bitLength="8">0x01</data>
                           <padding isList="true">
-                            <value dataType="uint" bitLength="8">0</value>
                           </padding>
                         </S7VarPayloadDataItem>
                       </items>
@@ -727,14 +726,14 @@
   <testcase>
     <name>S7 Write Request</name>
     <raw>
-      0300005b02f08e32010000000e003200180504120a10010001000082000000120a10010001000082000001120a10010001000082000002120a10010001000082000003ff0300010100ff0300010100ff0300010100ff0300010100
+      0300005a02f08e32010000000e003200170504120a10010001000082000000120a10010001000082000001120a10010001000082000002120a10010001000082000003ff0300010100ff0300010100ff0300010100ff03000101
     </raw>
     <root-type>TPKTPacket</root-type>
     <xml>
       <TPKTPacket>
         <protocolId dataType="uint" bitLength="8">3</protocolId>
         <reserved dataType="uint" bitLength="8">0</reserved>
-        <len dataType="uint" bitLength="16">91</len>
+        <len dataType="uint" bitLength="16">90</len>
         <payload>
           <COTPPacket>
             <headerLength dataType="uint" bitLength="8">2</headerLength>
@@ -752,7 +751,7 @@
                 <reserved dataType="uint" bitLength="16">0</reserved>
                 <tpduReference dataType="uint" bitLength="16">14</tpduReference>
                 <parameterLength dataType="uint" bitLength="16">50</parameterLength>
-                <payloadLength dataType="uint" bitLength="16">24</payloadLength>
+                <payloadLength dataType="uint" bitLength="16">23</payloadLength>
                 <S7MessageRequest>
                 </S7MessageRequest>
                 <parameter>
@@ -914,7 +913,6 @@
                           <dataLength dataType="uint" bitLength="16">1</dataLength>
                           <data dataType="byte" bitLength="8">0x01</data>
                           <padding isList="true">
-                            <value dataType="uint" bitLength="8">0</value>
                           </padding>
                         </S7VarPayloadDataItem>
                       </items>
diff --git a/plc4go/internal/ads/Connection.go b/plc4go/internal/ads/Connection.go
index df00559f2b..a1882eec0e 100644
--- a/plc4go/internal/ads/Connection.go
+++ b/plc4go/internal/ads/Connection.go
@@ -262,7 +262,7 @@ func (m *Connection) readDataTypeTable(ctx context.Context, dataTableSize uint32
 	readBuffer := utils.NewReadBufferByteBased(response.GetData(), utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
 	dataTypes := map[string]model.AdsDataTypeTableEntry{}
 	for i := uint32(0); i < numDataTypes; i++ {
-		dataType, err := model.AdsDataTypeTableEntryParseWithBuffer(readBuffer)
+		dataType, err := model.AdsDataTypeTableEntryParseWithBuffer(context.Background(), readBuffer)
 		if err != nil {
 			return nil, fmt.Errorf("error parsing table: %v", err)
 		}
@@ -281,7 +281,7 @@ func (m *Connection) readSymbolTable(ctx context.Context, symbolTableSize uint32
 	readBuffer := utils.NewReadBufferByteBased(response.GetData(), utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
 	symbols := map[string]model.AdsSymbolTableEntry{}
 	for i := uint32(0); i < numSymbols; i++ {
-		symbol, err := model.AdsSymbolTableEntryParseWithBuffer(readBuffer)
+		symbol, err := model.AdsSymbolTableEntryParseWithBuffer(context.Background(), readBuffer)
 		if err != nil {
 			return nil, fmt.Errorf("error parsing table")
 		}
diff --git a/plc4go/internal/ads/MessageCodec.go b/plc4go/internal/ads/MessageCodec.go
index 7ca2433010..85e2fd31d0 100644
--- a/plc4go/internal/ads/MessageCodec.go
+++ b/plc4go/internal/ads/MessageCodec.go
@@ -21,6 +21,7 @@ package ads
 
 import (
 	"bufio"
+	"context"
 	"encoding/binary"
 
 	"github.com/apache/plc4x/plc4go/protocols/ads/readwrite/model"
@@ -58,7 +59,7 @@ func (m *MessageCodec) Send(message spi.Message) error {
 	tcpPaket := message.(model.AmsTCPPacket)
 	// Serialize the request
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	err := tcpPaket.SerializeWithWriteBuffer(wb)
+	err := tcpPaket.SerializeWithWriteBuffer(context.Background(), wb)
 	if err != nil {
 		return errors.Wrap(err, "error serializing request")
 	}
@@ -114,7 +115,7 @@ func (m *MessageCodec) Receive() (spi.Message, error) {
 			return nil, nil
 		}
 		rb := utils.NewReadBufferByteBased(data, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
-		tcpPacket, err := model.AmsTCPPacketParseWithBuffer(rb)
+		tcpPacket, err := model.AmsTCPPacketParseWithBuffer(context.Background(), rb)
 		if err != nil {
 			log.Warn().Err(err).Msg("error parsing")
 			// TODO: Possibly clean up ...
diff --git a/plc4go/internal/ads/Reader.go b/plc4go/internal/ads/Reader.go
index 9b4f938fe4..aa5b45dd6b 100644
--- a/plc4go/internal/ads/Reader.go
+++ b/plc4go/internal/ads/Reader.go
@@ -311,6 +311,6 @@ func (m *Connection) parsePlcValue(dataType driverModel.AdsDataTypeTableEntry, a
 		if !ok {
 			return nil, errors.New(fmt.Sprintf("error converting plc4x plc-value type %s into ads plc-value type", valueType.String()))
 		}
-		return driverModel.DataItemParseWithBuffer(rb, adsValueType, stringLength)
+		return driverModel.DataItemParseWithBuffer(context.Background(), rb, adsValueType, stringLength)
 	}
 }
diff --git a/plc4go/internal/ads/Writer.go b/plc4go/internal/ads/Writer.go
index 43470ea3c9..7634c6d130 100644
--- a/plc4go/internal/ads/Writer.go
+++ b/plc4go/internal/ads/Writer.go
@@ -342,6 +342,6 @@ func (m *Connection) serializePlcValue(dataType driverModel.AdsDataTypeTableEntr
 		if !ok {
 			return errors.New(fmt.Sprintf("error converting plc4x plc-value type %s into ads plc-value type", valueType.String()))
 		}
-		return driverModel.DataItemSerializeWithWriteBuffer(wb, plcValue, adsValueType, stringLength)
+		return driverModel.DataItemSerializeWithWriteBuffer(context.Background(), wb, plcValue, adsValueType, stringLength)
 	}
 }
diff --git a/plc4go/internal/bacnetip/ApplicationLayer.go b/plc4go/internal/bacnetip/ApplicationLayer.go
index b568968390..a2f0d376c4 100644
--- a/plc4go/internal/bacnetip/ApplicationLayer.go
+++ b/plc4go/internal/bacnetip/ApplicationLayer.go
@@ -20,11 +20,12 @@
 package bacnetip
 
 import (
+	"time"
+
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog/log"
-	"time"
 )
 
 type SSMState uint8
@@ -269,7 +270,8 @@ func (s *SSM) setSegmentationContext(apdu readWriteModel.APDU) error {
 }
 
 // getSegment This function returns an APDU coorisponding to a particular segment of a confirmed request or complex ack.
-//         The segmentAPDU is the context
+//
+//	The segmentAPDU is the context
 func (s *SSM) getSegment(index uint8) (segmentAPDU _PDU, moreFollows bool, err error) {
 	log.Debug().Msgf("Get segment %d", index)
 	if s.segmentAPDU == nil {
@@ -333,7 +335,8 @@ func (s *SSM) getSegment(index uint8) (segmentAPDU _PDU, moreFollows bool, err e
 
 // TODO: check that function. looks a bit wonky to just append the payloads like that
 // appendSegment This function appends the apdu content to the end of the current APDU being built.  The segmentAPDU is
-//        the context
+//
+//	the context
 func (s *SSM) appendSegment(apdu _PDU) error {
 	log.Debug().Msgf("appendSegment\n%s", apdu)
 	switch apdu := apdu.GetMessage().(type) {
@@ -437,7 +440,8 @@ func (c *ClientSSM) Request(apdu _PDU) error {
 }
 
 // Indication This function is called after the device has bound a new transaction and wants to start the process
-//        rolling
+//
+//	rolling
 func (c *ClientSSM) Indication(apdu _PDU) error {
 	log.Debug().Msgf("indication\n%s", apdu)
 	// make sure we're getting confirmed requests
@@ -1011,7 +1015,8 @@ func (s *ServerSSM) Request(apdu _PDU) error {
 }
 
 // Indication This function is called for each downstream packet related to
-//        the transaction
+//
+//	the transaction
 func (s *ServerSSM) Indication(apdu _PDU) error { // TODO: maybe use another name for that
 	log.Debug().Msgf("indication\n%s", apdu)
 	// make sure we're getting confirmed requests
@@ -1042,7 +1047,8 @@ func (s *ServerSSM) Response(apdu _PDU) error {
 }
 
 // Confirmation This function is called when the application has provided a response and needs it to be sent to the
-//        client.
+//
+//	client.
 func (s *ServerSSM) Confirmation(apdu _PDU) error {
 	log.Debug().Msgf("confirmation\n%s", apdu)
 
@@ -1172,8 +1178,9 @@ func (s *ServerSSM) Confirmation(apdu _PDU) error {
 }
 
 // processTask This function is called when the client has failed to send all the segments of a segmented request,
-//        the application has taken too long to complete the request, or the client failed to ack the segments of a
-//        segmented response
+//
+//	the application has taken too long to complete the request, or the client failed to ack the segments of a
+//	segmented response
 func (s *ServerSSM) processTask() error {
 	log.Debug().Msg("processTask")
 	switch s.state {
@@ -1442,7 +1449,8 @@ func (s *ServerSSM) awaitResponse(apdu _PDU) error {
 }
 
 // awaitResponseTimeout This function is called when the application has taken too long to respond to a clients request.
-//         The client has probably long since given up
+//
+//	The client has probably long since given up
 func (s *ServerSSM) awaitResponseTimeout() error {
 	log.Debug().Msg("awaitResponseTimeout")
 
@@ -1859,7 +1867,8 @@ func (s *StateMachineAccessPoint) SapIndication(apdu _PDU) error {
 }
 
 // SapConfirmation This function is called when the application is responding to a request, the apdu may be a simple
-//        ack, complex ack, error, reject or abort
+//
+//	ack, complex ack, error, reject or abort
 func (s *StateMachineAccessPoint) SapConfirmation(apdu _PDU) error {
 	log.Debug().Msgf("sapConfirmation\n%s", apdu)
 	pduDestination := apdu.GetPDUDestination()
diff --git a/plc4go/internal/bacnetip/Discoverer.go b/plc4go/internal/bacnetip/Discoverer.go
index 0b2bde7988..46091a275c 100644
--- a/plc4go/internal/bacnetip/Discoverer.go
+++ b/plc4go/internal/bacnetip/Discoverer.go
@@ -22,17 +22,18 @@ package bacnetip
 import (
 	"context"
 	"fmt"
-	"github.com/IBM/netaddr"
-	internalModel "github.com/apache/plc4x/plc4go/spi/model"
-	"github.com/libp2p/go-reuseport"
-	"github.com/pkg/errors"
-	"github.com/rs/zerolog/log"
 	"net"
 	"net/url"
 	"strconv"
 	"strings"
 	"time"
 
+	"github.com/IBM/netaddr"
+	internalModel "github.com/apache/plc4x/plc4go/spi/model"
+	"github.com/libp2p/go-reuseport"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
+
 	apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
 	driverModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi"
diff --git a/plc4go/internal/bacnetip/MessageCodec.go b/plc4go/internal/bacnetip/MessageCodec.go
index 97b821c836..bbe1240af7 100644
--- a/plc4go/internal/bacnetip/MessageCodec.go
+++ b/plc4go/internal/bacnetip/MessageCodec.go
@@ -22,6 +22,10 @@ package bacnetip
 import (
 	"context"
 	"fmt"
+	"net"
+	"net/url"
+	"time"
+
 	"github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi"
 	"github.com/apache/plc4x/plc4go/spi/default"
@@ -29,9 +33,6 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/transports/udp"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog/log"
-	"net"
-	"net/url"
-	"time"
 )
 
 // ApplicationLayerMessageCodec is a wrapper for MessageCodec which takes care of segmentation, retries etc.
diff --git a/plc4go/internal/bacnetip/Reader.go b/plc4go/internal/bacnetip/Reader.go
index 20487490bd..f965017fd8 100644
--- a/plc4go/internal/bacnetip/Reader.go
+++ b/plc4go/internal/bacnetip/Reader.go
@@ -125,7 +125,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
 			serviceRequest,
 			nil,
 			nil,
-			serviceRequest.GetLengthInBytes(),
+			serviceRequest.GetLengthInBytes(context.Background()),
 		)
 
 		// Start a new request-transaction (Is ended in the response-handler)
diff --git a/plc4go/internal/bacnetip/UDPCommunicationsModule.go b/plc4go/internal/bacnetip/UDPCommunicationsModule.go
index 7e32e48d49..01a3de195d 100644
--- a/plc4go/internal/bacnetip/UDPCommunicationsModule.go
+++ b/plc4go/internal/bacnetip/UDPCommunicationsModule.go
@@ -21,12 +21,13 @@ package bacnetip
 
 import (
 	"fmt"
+	"net"
+	"time"
+
 	"github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/libp2p/go-reuseport"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog/log"
-	"net"
-	"time"
 )
 
 type UDPActor struct {
diff --git a/plc4go/internal/cbus/MessageCodec.go b/plc4go/internal/cbus/MessageCodec.go
index f001f61679..8fd7e10937 100644
--- a/plc4go/internal/cbus/MessageCodec.go
+++ b/plc4go/internal/cbus/MessageCodec.go
@@ -21,13 +21,14 @@ package cbus
 
 import (
 	"bufio"
+	"hash/crc32"
+
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/cbus/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi"
 	"github.com/apache/plc4x/plc4go/spi/default"
 	"github.com/apache/plc4x/plc4go/spi/transports"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog/log"
-	"hash/crc32"
 )
 
 type MessageCodec struct {
diff --git a/plc4go/internal/cbus/Query.go b/plc4go/internal/cbus/Query.go
index 518d391f23..6638aab3ea 100644
--- a/plc4go/internal/cbus/Query.go
+++ b/plc4go/internal/cbus/Query.go
@@ -20,8 +20,10 @@
 package cbus
 
 import (
+	"context"
 	"encoding/binary"
 	"fmt"
+
 	apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
 	"github.com/apache/plc4x/plc4go/pkg/api/values"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/cbus/readwrite/model"
@@ -95,25 +97,25 @@ func (u unitInfoQuery) GetAttribute() *readWriteModel.Attribute {
 
 func (u unitInfoQuery) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := u.SerializeWithWriteBuffer(wb); err != nil {
+	if err := u.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (u unitInfoQuery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (u unitInfoQuery) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(u.tagType.GetName()); err != nil {
 		return err
 	}
 
 	if unitAddress := u.unitAddress; unitAddress != nil {
-		if err := (*unitAddress).SerializeWithWriteBuffer(writeBuffer); err != nil {
+		if err := (*unitAddress).SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 			return err
 		}
 	}
 
 	if attribute := u.attribute; attribute != nil {
-		if err := (*attribute).SerializeWithWriteBuffer(writeBuffer); err != nil {
+		if err := (*attribute).SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 			return err
 		}
 	}
@@ -126,7 +128,7 @@ func (u unitInfoQuery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) e
 
 func (u unitInfoQuery) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(u); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), u); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/internal/cbus/Reader.go b/plc4go/internal/cbus/Reader.go
index ecdde3c913..de1be62cee 100644
--- a/plc4go/internal/cbus/Reader.go
+++ b/plc4go/internal/cbus/Reader.go
@@ -379,7 +379,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
 							}
 						default:
 							wbpcb := spiValues.NewWriteBufferPlcValueBased()
-							if err := calData.SerializeWithWriteBuffer(wbpcb); err != nil {
+							if err := calData.SerializeWithWriteBuffer(context.Background(), wbpcb); err != nil {
 								log.Warn().Err(err).Msgf("Unmapped cal data type %T. Returning raw to string", calData)
 								addPlcValue(tagNameCopy, spiValues.NewPlcSTRING(fmt.Sprintf("%s", calData)))
 							} else {
diff --git a/plc4go/internal/cbus/Subscriber.go b/plc4go/internal/cbus/Subscriber.go
index 54ab2fdedf..885ab1da65 100644
--- a/plc4go/internal/cbus/Subscriber.go
+++ b/plc4go/internal/cbus/Subscriber.go
@@ -346,7 +346,7 @@ func (m *Subscriber) handleMonitoredSal(sal readWriteModel.MonitoredSAL) bool {
 			address[tagName] = fmt.Sprintf("sal/%s/%s", applicationString, commandType)
 
 			rbvb := spiValues.NewWriteBufferPlcValueBased()
-			err := salData.SerializeWithWriteBuffer(rbvb)
+			err := salData.SerializeWithWriteBuffer(context.Background(), rbvb)
 			if err != nil {
 				log.Error().Err(err).Msg("Error serializing to plc value... just returning it as string")
 				plcValues[tagName] = spiValues.NewPlcSTRING(fmt.Sprintf("%s", salData))
diff --git a/plc4go/internal/cbus/Tag.go b/plc4go/internal/cbus/Tag.go
index f12eb8a214..31320e293d 100644
--- a/plc4go/internal/cbus/Tag.go
+++ b/plc4go/internal/cbus/Tag.go
@@ -20,6 +20,7 @@
 package cbus
 
 import (
+	"context"
 	"encoding/binary"
 	"fmt"
 
@@ -295,13 +296,13 @@ func (s statusTag) GetApplication() readWriteModel.ApplicationIdContainer {
 
 func (s statusTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := s.SerializeWithWriteBuffer(wb); err != nil {
+	if err := s.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (s statusTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (s statusTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(s.tagType.GetName()); err != nil {
 		return err
 	}
@@ -326,7 +327,7 @@ func (s statusTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error
 
 func (s statusTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(s); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), s); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -338,22 +339,22 @@ func (c calTag) GetUnitAddress() readWriteModel.UnitAddress {
 
 func (c calTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := c.SerializeWithWriteBuffer(wb); err != nil {
+	if err := c.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (c calTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (c calTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if unitAddress := c.unitAddress; unitAddress != nil {
-		return c.unitAddress.SerializeWithWriteBuffer(writeBuffer)
+		return c.unitAddress.SerializeWithWriteBuffer(ctx, writeBuffer)
 	}
 	return nil
 }
 
 func (c calTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(c); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), c); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -393,22 +394,22 @@ func (s calRecallTag) GetTagType() TagType {
 
 func (c calRecallTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := c.SerializeWithWriteBuffer(wb); err != nil {
+	if err := c.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (c calRecallTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (c calRecallTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(c.tagType.GetName()); err != nil {
 		return err
 	}
 
-	if err := c.calTag.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := c.calTag.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
-	if err := c.parameter.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := c.parameter.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
@@ -424,7 +425,7 @@ func (c calRecallTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) er
 
 func (c calRecallTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(c); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), c); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -460,22 +461,22 @@ func (s calIdentifyTag) GetTagType() TagType {
 
 func (c calIdentifyTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := c.SerializeWithWriteBuffer(wb); err != nil {
+	if err := c.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (c calIdentifyTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (c calIdentifyTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(c.tagType.GetName()); err != nil {
 		return err
 	}
 
-	if err := c.calTag.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := c.calTag.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
-	if err := c.attribute.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := c.attribute.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
@@ -487,7 +488,7 @@ func (c calIdentifyTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 
 func (c calIdentifyTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(c); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), c); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -527,22 +528,22 @@ func (s calGetstatusTag) GetTagType() TagType {
 
 func (c calGetstatusTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := c.SerializeWithWriteBuffer(wb); err != nil {
+	if err := c.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (c calGetstatusTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (c calGetstatusTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(c.tagType.GetName()); err != nil {
 		return err
 	}
 
-	if err := c.calTag.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := c.calTag.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
-	if err := c.parameter.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := c.parameter.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
@@ -558,7 +559,7 @@ func (c calGetstatusTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 
 func (c calGetstatusTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(c); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), c); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -598,18 +599,18 @@ func (s salTag) GetTagType() TagType {
 
 func (s salTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := s.SerializeWithWriteBuffer(wb); err != nil {
+	if err := s.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (s salTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (s salTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(s.tagType.GetName()); err != nil {
 		return err
 	}
 
-	if err := s.application.SerializeWithWriteBuffer(writeBuffer); err != nil {
+	if err := s.application.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 
@@ -625,7 +626,7 @@ func (s salTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
 
 func (s salTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(s); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), s); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -673,24 +674,24 @@ func (s salMonitorTag) GetApplication() *readWriteModel.ApplicationIdContainer {
 
 func (s salMonitorTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := s.SerializeWithWriteBuffer(wb); err != nil {
+	if err := s.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (s salMonitorTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (s salMonitorTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(s.tagType.GetName()); err != nil {
 		return err
 	}
 
 	if unitAddress := s.unitAddress; unitAddress != nil {
-		if err := (*unitAddress).SerializeWithWriteBuffer(writeBuffer); err != nil {
+		if err := (*unitAddress).SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 			return err
 		}
 	}
 	if application := s.application; application != nil {
-		if err := application.SerializeWithWriteBuffer(writeBuffer); err != nil {
+		if err := application.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 			return err
 		}
 	}
@@ -703,7 +704,7 @@ func (s salMonitorTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) e
 
 func (s salMonitorTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(s); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), s); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
@@ -751,24 +752,24 @@ func (m mmiMonitorTag) GetApplication() *readWriteModel.ApplicationIdContainer {
 
 func (m mmiMonitorTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m mmiMonitorTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m mmiMonitorTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext(m.tagType.GetName()); err != nil {
 		return err
 	}
 
 	if unitAddress := m.unitAddress; unitAddress != nil {
-		if err := (*unitAddress).SerializeWithWriteBuffer(writeBuffer); err != nil {
+		if err := (*unitAddress).SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 			return err
 		}
 	}
 	if application := m.application; application != nil {
-		if err := application.SerializeWithWriteBuffer(writeBuffer); err != nil {
+		if err := application.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 			return err
 		}
 	}
@@ -781,7 +782,7 @@ func (m mmiMonitorTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) e
 
 func (m mmiMonitorTag) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/internal/eip/MessageCodec.go b/plc4go/internal/eip/MessageCodec.go
index 477d61e74f..ea67673c46 100644
--- a/plc4go/internal/eip/MessageCodec.go
+++ b/plc4go/internal/eip/MessageCodec.go
@@ -20,7 +20,9 @@
 package eip
 
 import (
+	"context"
 	"encoding/binary"
+
 	"github.com/apache/plc4x/plc4go/protocols/eip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi"
 	"github.com/apache/plc4x/plc4go/spi/default"
@@ -85,7 +87,7 @@ func (m *MessageCodec) Receive() (spi.Message, error) {
 			return nil, nil
 		}
 		rb := utils.NewReadBufferByteBased(data, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
-		eipPacket, err := model.EipPacketParseWithBuffer(rb)
+		eipPacket, err := model.EipPacketParseWithBuffer(context.Background(), rb)
 		if err != nil {
 			log.Warn().Err(err).Msg("error parsing")
 			// TODO: Possibly clean up ...
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index 06cc43bcb2..f49707ff80 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -85,7 +85,7 @@ func (m *Reader) Read(ctx context.Context, readRequest model.PlcReadRequest) <-c
 			offset := 2 + nb*2
 			for i := uint16(0); i < nb; i++ {
 				offsets[i] = offset
-				offset += requestItems[i].GetLengthInBytes()
+				offset += requestItems[i].GetLengthInBytes(context.Background())
 			}
 
 			serviceArr := make([]readWriteModel.CipService, nb)
@@ -402,7 +402,7 @@ func (m *Reader) ToPlc4xReadResponse(response readWriteModel.CipService, readReq
 			}
 			serviceBuf := utils.NewReadBufferByteBased(read.GetBytes()[offset:offset+length], utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
 			var err error
-			arr[i], err = readWriteModel.CipServiceParseWithBuffer(serviceBuf, length)
+			arr[i], err = readWriteModel.CipServiceParseWithBuffer(context.Background(), serviceBuf, length)
 			if err != nil {
 				return nil, err
 			}
diff --git a/plc4go/internal/eip/Writer.go b/plc4go/internal/eip/Writer.go
index 11a6f480ae..9a36a2aa9d 100644
--- a/plc4go/internal/eip/Writer.go
+++ b/plc4go/internal/eip/Writer.go
@@ -183,7 +183,7 @@ func (m Writer) Write(ctx context.Context, writeRequest model.PlcWriteRequest) <
 			offset := 2 + nb*2
 			for i := uint16(0); i < nb; i++ {
 				offsets[i] = offset
-				offset += items[i].GetLengthInBytes()
+				offset += items[i].GetLengthInBytes(context.Background())
 			}
 
 			serviceArr := make([]readWriteModel.CipService, nb)
@@ -331,7 +331,7 @@ func (m Writer) ToPlc4xWriteResponse(response readWriteModel.CipService, writeRe
 			}
 			serviceBuf := utils.NewReadBufferByteBased(read.GetBytes()[offset:offset+length], utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
 			var err error
-			arr[i], err = readWriteModel.CipServiceParseWithBuffer(serviceBuf, length)
+			arr[i], err = readWriteModel.CipServiceParseWithBuffer(context.Background(), serviceBuf, length)
 			if err != nil {
 				return nil, err
 			}
diff --git a/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go b/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go
index 461fc1b62d..a854a0d30e 100644
--- a/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go
+++ b/plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go
@@ -87,7 +87,7 @@ func (m *Connection) ReadGroupAddress(ctx context.Context, groupAddress []byte,
 			datapointType = &defaultDatapointType
 		}
 		// Parse the value
-		plcValue, err := driverModel.KnxDatapointParseWithBuffer(rb, *datapointType)
+		plcValue, err := driverModel.KnxDatapointParseWithBuffer(context.Background(), rb, *datapointType)
 		if err != nil {
 			sendResponse(nil, 0, errors.Wrap(err, "error parsing group address response"))
 			return
@@ -169,7 +169,7 @@ func (m *Connection) DeviceConnect(ctx context.Context, targetAddress driverMode
 			if propertyValueResponse.GetCount() > 0 {
 				dataLength := uint8(len(propertyValueResponse.GetData()))
 				data := propertyValueResponse.GetData()
-				plcValue, err := driverModel.KnxPropertyParse(data,
+				plcValue, err := driverModel.KnxPropertyParse(context.Background(), data,
 					driverModel.KnxInterfaceObjectProperty_PID_DEVICE_MAX_APDULENGTH.PropertyDataType(), dataLength)
 
 				// Return the result
@@ -345,7 +345,7 @@ func (m *Connection) DeviceReadProperty(ctx context.Context, targetAddress drive
 
 		dataLength := uint8(len(propertyValueResponse.GetData()))
 		data := propertyValueResponse.GetData()
-		plcValue, err := driverModel.KnxPropertyParse(data, property.PropertyDataType(), dataLength)
+		plcValue, err := driverModel.KnxPropertyParse(context.Background(), data, property.PropertyDataType(), dataLength)
 		if err != nil {
 			sendResponse(nil, 0, err)
 		} else {
@@ -493,7 +493,7 @@ func (m *Connection) DeviceReadMemory(ctx context.Context, targetAddress driverM
 			// Parse the data according to the property type information
 			rb := utils.NewReadBufferByteBased(memoryReadResponse.GetData())
 			for rb.HasMore(datapointType.DatapointMainType().SizeInBits()) {
-				plcValue, err := driverModel.KnxDatapointParseWithBuffer(rb, *datapointType)
+				plcValue, err := driverModel.KnxDatapointParseWithBuffer(context.Background(), rb, *datapointType)
 				// Return the result
 				if err != nil {
 					sendResponse(nil, 0, err)
diff --git a/plc4go/internal/knxnetip/Reader.go b/plc4go/internal/knxnetip/Reader.go
index 329545448f..220a69728e 100644
--- a/plc4go/internal/knxnetip/Reader.go
+++ b/plc4go/internal/knxnetip/Reader.go
@@ -217,10 +217,10 @@ func (m Reader) readGroupAddress(ctx context.Context, tag GroupAddressTag) (apiM
 					return apiModel.PlcResponseCode_INVALID_DATATYPE, nil
 				}
 				// If the size of the tag is greater than 6, we have to skip the first byte
-				if tag.GetTagType().GetLengthInBits() > 6 {
+				if tag.GetTagType().GetLengthInBits(context.Background()) > 6 {
 					_, _ = rb.ReadUint8("tagType", 8)
 				}
-				plcValue, err := driverModel.KnxDatapointParseWithBuffer(rb, *tag.GetTagType())
+				plcValue, err := driverModel.KnxDatapointParseWithBuffer(context.Background(), rb, *tag.GetTagType())
 				// If any of the values doesn't decode correctly, we can't return any
 				if err != nil {
 					return apiModel.PlcResponseCode_INVALID_DATA, nil
@@ -231,7 +231,7 @@ func (m Reader) readGroupAddress(ctx context.Context, tag GroupAddressTag) (apiM
 	}
 
 	// If there is only one address to read, return this directly.
-	// Otherwise return a struct, with the keys being the string representations of the address.
+	// Otherwise, return a struct, with the keys being the string representations of the address.
 	if len(rawAddresses) == 1 {
 		stringAddress := NumericGroupAddressToString(rawAddresses[0], tag)
 		return apiModel.PlcResponseCode_OK, values[stringAddress]
diff --git a/plc4go/internal/knxnetip/Subscriber.go b/plc4go/internal/knxnetip/Subscriber.go
index afdf5e14c1..5cd4e15419 100644
--- a/plc4go/internal/knxnetip/Subscriber.go
+++ b/plc4go/internal/knxnetip/Subscriber.go
@@ -116,7 +116,7 @@ func (m *Subscriber) handleValueChange(destinationAddress []byte, payload []byte
 				continue
 			}
 			// If the size of the tag is greater than 6, we have to skip the first byte
-			if groupAddressTag.GetTagType().GetLengthInBits() > 6 {
+			if groupAddressTag.GetTagType().GetLengthInBits(context.Background()) > 6 {
 				_, _ = rb.ReadUint8("groupAddress", 8)
 			}
 			elementType := *groupAddressTag.GetTagType()
@@ -143,7 +143,7 @@ func (m *Subscriber) handleValueChange(destinationAddress []byte, payload []byte
 					plcValue := values2.NewPlcRawByteArray(rb.GetBytes())
 					plcValueList = append(plcValueList, plcValue)
 				} else {
-					plcValue, err2 := driverModel.KnxDatapointParseWithBuffer(rb, elementType)
+					plcValue, err2 := driverModel.KnxDatapointParseWithBuffer(context.Background(), rb, elementType)
 					if err2 == nil {
 						plcValueList = append(plcValueList, plcValue)
 					} else {
diff --git a/plc4go/internal/knxnetip/ValueDecoder.go b/plc4go/internal/knxnetip/ValueDecoder.go
index 332f9185bf..b560eba69e 100644
--- a/plc4go/internal/knxnetip/ValueDecoder.go
+++ b/plc4go/internal/knxnetip/ValueDecoder.go
@@ -20,6 +20,8 @@
 package knxnetip
 
 import (
+	"context"
+
 	api "github.com/apache/plc4x/plc4go/pkg/api/values"
 	driverModel "github.com/apache/plc4x/plc4go/protocols/knxnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
@@ -37,7 +39,7 @@ func NewValueDecoder(rb utils.ReadBuffer) ValueDecoder {
 
 func (m ValueDecoder) Decode(typeName string) api.PlcValue {
 	datatype, _ := driverModel.KnxDatapointTypeByName(typeName)
-	plcValue, err := driverModel.KnxDatapointParseWithBuffer(m.rb, datatype)
+	plcValue, err := driverModel.KnxDatapointParseWithBuffer(context.Background(), m.rb, datatype)
 	if err != nil {
 		return nil
 	}
diff --git a/plc4go/internal/modbus/Reader.go b/plc4go/internal/modbus/Reader.go
index 482cc30750..fea48227d6 100644
--- a/plc4go/internal/modbus/Reader.go
+++ b/plc4go/internal/modbus/Reader.go
@@ -190,7 +190,7 @@ func (m *Reader) ToPlc4xReadResponse(responseAdu readWriteModel.ModbusTcpADU, re
 
 	// Decode the data according to the information from the request
 	log.Trace().Msg("decode data")
-	value, err := readWriteModel.DataItemParse(data, tag.Datatype, tag.Quantity)
+	value, err := readWriteModel.DataItemParse(context.Background(), data, tag.Datatype, tag.Quantity)
 	if err != nil {
 		return nil, errors.Wrap(err, "Error parsing data item")
 	}
diff --git a/plc4go/internal/s7/Reader.go b/plc4go/internal/s7/Reader.go
index 85664a7125..a0c3aca945 100644
--- a/plc4go/internal/s7/Reader.go
+++ b/plc4go/internal/s7/Reader.go
@@ -216,7 +216,7 @@ func (m *Reader) ToPlc4xReadResponse(response readWriteModel.S7Message, readRequ
 		log.Trace().Msg("decode data")
 		responseCodes[tagName] = responseCode
 		if responseCode == model.PlcResponseCode_OK {
-			plcValue, err := readWriteModel.DataItemParse(payloadItem.GetData(), tag.GetDataType().DataProtocolId(), int32(tag.GetNumElements()))
+			plcValue, err := readWriteModel.DataItemParse(context.Background(), payloadItem.GetData(), tag.GetDataType().DataProtocolId(), int32(tag.GetNumElements()))
 			if err != nil {
 				return nil, errors.Wrap(err, "Error parsing data item")
 			}
diff --git a/plc4go/internal/s7/s7Io_test.go b/plc4go/internal/s7/s7Io_test.go
index 0da024f495..f2e4249488 100644
--- a/plc4go/internal/s7/s7Io_test.go
+++ b/plc4go/internal/s7/s7Io_test.go
@@ -20,13 +20,15 @@
 package s7
 
 import (
+	"context"
 	"fmt"
-	"github.com/apache/plc4x/plc4go/protocols/s7/readwrite/model"
-	"github.com/apache/plc4x/plc4go/spi/utils"
-	"github.com/stretchr/testify/assert"
 	"reflect"
 	"strings"
 	"testing"
+
+	"github.com/apache/plc4x/plc4go/protocols/s7/readwrite/model"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/stretchr/testify/assert"
 )
 
 func TestS7MessageBytes(t *testing.T) {
@@ -70,14 +72,14 @@ func TestS7MessageBytes(t *testing.T) {
 								model.NewS7ParameterReadVarResponse(1),
 							),
 						),
-						26,
+						25,
 					),
 				),
 			},
 			wantStringSerialized: `
 ╔═TPKTPacket═══════════════════════════════════════════════════════════════════════════════════════════════════════╗
 ║╔═protocolId╗╔═reserved╗╔═len═════╗                                                                               ║
-║║  0x03 3   ║║ 0x00 0  ║║0x001e 30║                                                                               ║
+║║  0x03 3   ║║ 0x00 0  ║║0x001d 29║                                                                               ║
 ║╚═══════════╝╚═════════╝╚═════════╝                                                                               ║
 ║╔═payload════════════════════════════════════════════════════════════════════════════════════════════════════════╗║
 ║║╔═COTPPacket═══════════════════════════════════════════════════════════════════════════════════════════════════╗║║
@@ -95,7 +97,7 @@ func TestS7MessageBytes(t *testing.T) {
 ║║║╔═payload══════════════════════════════════════════════════════════════════════════════════╗                  ║║║
 ║║║║╔═S7Message══════════════════════════════════════════════════════════════════════════════╗║                  ║║║
 ║║║║║╔═protocolId╗╔═messageType╗╔═reserved╗╔═tpduReference╗╔═parameterLength╗╔═payloadLength╗║║                  ║║║
-║║║║║║  0x32 50  ║║   0x03 3   ║║0x0000 0 ║║  0x000b 11   ║║    0x0002 2    ║║   0x0006 6   ║║║                  ║║║
+║║║║║║  0x32 50  ║║   0x03 3   ║║0x0000 0 ║║  0x000b 11   ║║    0x0002 2    ║║   0x0005 5   ║║║                  ║║║
 ║║║║║╚═══════════╝╚════════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝║║                  ║║║
 ║║║║║╔═S7MessageResponseData═══╗╔═parameter═════════════════════════════════════╗            ║║                  ║║║
 ║║║║║║╔═errorClass╗╔═errorCode╗║║╔═S7Parameter═════════════════════════════════╗║            ║║                  ║║║
@@ -117,10 +119,8 @@ func TestS7MessageBytes(t *testing.T) {
 ║║║║║║║║║║║╚═══════════════════════╝║║╚══════════════════╝║             ║║║║║                ║║                  ║║║
 ║║║║║║║║║║╚═════════════════════════╝╚════════════════════╝             ║║║║║                ║║                  ║║║
 ║║║║║║║║║║╔═data═══════════════════════════════════════╗╔═padding╗      ║║║║║                ║║                  ║║║
-║║║║║║║║║║║0|01                            '.         '║║╔══════╗║      ║║║║║                ║║                  ║║║
-║║║║║║║║║║╚════════════════════════════════════════════╝║║0x00 0║║      ║║║║║                ║║                  ║║║
-║║║║║║║║║║                                              ║╚══════╝║      ║║║║║                ║║                  ║║║
-║║║║║║║║║║                                              ╚════════╝      ║║║║║                ║║                  ║║║
+║║║║║║║║║║║0|01                            '.         '║║        ║      ║║║║║                ║║                  ║║║
+║║║║║║║║║║╚════════════════════════════════════════════╝╚════════╝      ║║║║║                ║║                  ║║║
 ║║║║║║║║║╚══════════════════════════════════════════════════════════════╝║║║║                ║║                  ║║║
 ║║║║║║║║╚════════════════════════════════════════════════════════════════╝║║║                ║║                  ║║║
 ║║║║║║║╚══════════════════════════════════════════════════════════════════╝║║                ║║                  ║║║
@@ -135,7 +135,7 @@ func TestS7MessageBytes(t *testing.T) {
 			wantStringSerializedCompact: `
 ╔═TPKTPacket═════════════════════════════════════════════════════════════════════════════════════╗
 ║╔═protocolId╗╔═reserved╗╔═len═════╗                                                             ║
-║║  0x03 3   ║║ 0x00 0  ║║0x001e 30║                                                             ║
+║║  0x03 3   ║║ 0x00 0  ║║0x001d 29║                                                             ║
 ║╚═══════════╝╚═════════╝╚═════════╝                                                             ║
 ║╔═payload/COTPPacket═══════════════════════════════════════════════════════════════════════════╗║
 ║║╔═headerLength╗╔═tpduCode╗╔═COTPPacketData═════╗                                              ║║
@@ -150,7 +150,7 @@ func TestS7MessageBytes(t *testing.T) {
 ║║╚═════════════════════════════════════════════════════════════════════════════════════╝       ║║
 ║║╔═payload/S7Message══════════════════════════════════════════════════════════════════════════╗║║
 ║║║╔═protocolId╗╔═messageType╗╔═reserved╗╔═tpduReference╗╔═parameterLength╗╔═payloadLength╗    ║║║
-║║║║  0x32 50  ║║   0x03 3   ║║0x0000 0 ║║  0x000b 11   ║║    0x0002 2    ║║   0x0006 6   ║    ║║║
+║║║║  0x32 50  ║║   0x03 3   ║║0x0000 0 ║║  0x000b 11   ║║    0x0002 2    ║║   0x0005 5   ║    ║║║
 ║║║╚═══════════╝╚════════════╝╚═════════╝╚══════════════╝╚════════════════╝╚══════════════╝    ║║║
 ║║║╔═S7MessageResponseData═══╗╔═parameter/S7Parameter═══════════════════════════════════╗      ║║║
 ║║║║╔═errorClass╗╔═errorCode╗║║╔═parameterType╗╔═S7ParameterReadVarResponse/numItems═══╗║      ║║║
@@ -161,9 +161,9 @@ func TestS7MessageBytes(t *testing.T) {
 ║║║║╔═returnCode/DataTransportErrorCode════════════╗╔═transportSize/DataTransportSize════════╗║║║║
 ║║║║║                 0xff 255 OK                  ║║               0x03 3 BIT               ║║║║║
 ║║║║╚══════════════════════════════════════════════╝╚════════════════════════════════════════╝║║║║
-║║║║╔═dataLength╗╔═data═══════════════════════════════════════╗╔═padding/╗                    ║║║║
-║║║║║ 0x0001 1  ║║0|01                            '.         '║║ 0x00 0  ║                    ║║║║
-║║║║╚═══════════╝╚════════════════════════════════════════════╝╚═════════╝                    ║║║║
+║║║║╔═dataLength╗╔═data═══════════════════════════════════════╗                               ║║║║
+║║║║║ 0x0001 1  ║║0|01                            '.         '║                               ║║║║
+║║║║╚═══════════╝╚════════════════════════════════════════════╝                               ║║║║
 ║║║╚══════════════════════════════════════════════════════════════════════════════════════════╝║║║
 ║║╚════════════════════════════════════════════════════════════════════════════════════════════╝║║
 ║╚══════════════════════════════════════════════════════════════════════════════════════════════╝║
@@ -173,7 +173,7 @@ func TestS7MessageBytes(t *testing.T) {
 <TPKTPacket>
   <protocolId dataType="uint" bitLength="8">3</protocolId>
   <reserved dataType="uint" bitLength="8">0</reserved>
-  <len dataType="uint" bitLength="16">30</len>
+  <len dataType="uint" bitLength="16">29</len>
   <payload>
     <COTPPacket>
       <headerLength dataType="uint" bitLength="8">5</headerLength>
@@ -200,7 +200,7 @@ func TestS7MessageBytes(t *testing.T) {
           <reserved dataType="uint" bitLength="16">0</reserved>
           <tpduReference dataType="uint" bitLength="16">11</tpduReference>
           <parameterLength dataType="uint" bitLength="16">2</parameterLength>
-          <payloadLength dataType="uint" bitLength="16">6</payloadLength>
+          <payloadLength dataType="uint" bitLength="16">5</payloadLength>
           <S7MessageResponseData>
             <errorClass dataType="uint" bitLength="8">0</errorClass>
             <errorCode dataType="uint" bitLength="8">0</errorCode>
@@ -226,9 +226,7 @@ func TestS7MessageBytes(t *testing.T) {
                     </transportSize>
                     <dataLength dataType="uint" bitLength="16">1</dataLength>
                     <data dataType="byte" bitLength="8">0x01</data>
-                    <padding isList="true">
-                      <value dataType="uint" bitLength="8">0</value>
-                    </padding>
+                    <padding isList="true"></padding>
                   </S7VarPayloadDataItem>
                 </items>
               </S7PayloadReadVarResponse>
@@ -243,7 +241,7 @@ func TestS7MessageBytes(t *testing.T) {
 			wantStringJson: `
 {
   "TPKTPacket": {
-    "len": 30,
+    "len": 29,
     "len__plc4x_bitLength": 16,
     "len__plc4x_dataType": "uint",
     "payload": {
@@ -319,13 +317,7 @@ func TestS7MessageBytes(t *testing.T) {
                         "dataLength__plc4x_dataType": "uint",
                         "data__plc4x_bitLength": 8,
                         "data__plc4x_dataType": "byte",
-                        "padding": [
-                          {
-                            "value": 0,
-                            "value__plc4x_bitLength": 8,
-                            "value__plc4x_dataType": "uint"
-                          }
-                        ],
+                        "padding": [],
                         "returnCode": {
                           "DataTransportErrorCode": 255,
                           "DataTransportErrorCode__plc4x_bitLength": 8,
@@ -344,7 +336,7 @@ func TestS7MessageBytes(t *testing.T) {
                 }
               }
             },
-            "payloadLength": 6,
+            "payloadLength": 5,
             "payloadLength__plc4x_bitLength": 16,
             "payloadLength__plc4x_dataType": "uint",
             "protocolId": 50,
@@ -373,9 +365,9 @@ func TestS7MessageBytes(t *testing.T) {
 }
 `,
 			wantDump: `
-00|03 00 00 1e 05 f0 0d c0 01 0c '..........'
-10|32 03 00 00 00 0b 00 02 00 06 '2.........'
-20|00 00 04 01 ff 03 00 01 01 00 '..........'
+00|03 00 00 1d 05 f0 0d c0 01 0c '..........'
+10|32 03 00 00 00 0b 00 02 00 05 '2.........'
+20|00 00 04 01 ff 03 00 01 01    '......... '
 `,
 		},
 		{
@@ -881,7 +873,7 @@ func TestS7MessageBytes(t *testing.T) {
 			})
 			t.Run("Simple 2 Box", func(t *testing.T) {
 				boxWriter := utils.NewWriteBufferBoxBased()
-				if err := tt.args.debuggable.SerializeWithWriteBuffer(boxWriter); err != nil {
+				if err := tt.args.debuggable.SerializeWithWriteBuffer(context.Background(), boxWriter); err != nil {
 					t.Error(err)
 				}
 				tt.wantStringSerialized = strings.Trim(tt.wantStringSerialized, "\n")
@@ -891,7 +883,7 @@ func TestS7MessageBytes(t *testing.T) {
 			})
 			t.Run("Simple 2 Compact Box", func(t *testing.T) {
 				boxWriter := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-				if err := tt.args.debuggable.SerializeWithWriteBuffer(boxWriter); err != nil {
+				if err := tt.args.debuggable.SerializeWithWriteBuffer(context.Background(), boxWriter); err != nil {
 					t.Error(err)
 				}
 				tt.wantStringSerializedCompact = strings.Trim(tt.wantStringSerializedCompact, "\n")
@@ -901,7 +893,7 @@ func TestS7MessageBytes(t *testing.T) {
 			})
 			t.Run("Simple 2 Xml", func(t *testing.T) {
 				xmlWriteBuffer := utils.NewXmlWriteBuffer()
-				if err := tt.args.debuggable.SerializeWithWriteBuffer(xmlWriteBuffer); err != nil {
+				if err := tt.args.debuggable.SerializeWithWriteBuffer(context.Background(), xmlWriteBuffer); err != nil {
 					t.Error(err)
 				}
 				tt.wantStringXml = strings.Trim(tt.wantStringXml, "\n")
@@ -911,7 +903,7 @@ func TestS7MessageBytes(t *testing.T) {
 			})
 			t.Run("Simple 2 Json", func(t *testing.T) {
 				jsonWriteBuffer := utils.NewJsonWriteBuffer()
-				if err := tt.args.debuggable.SerializeWithWriteBuffer(jsonWriteBuffer); err != nil {
+				if err := tt.args.debuggable.SerializeWithWriteBuffer(context.Background(), jsonWriteBuffer); err != nil {
 					t.Error(err)
 				}
 				tt.wantStringJson = strings.Trim(tt.wantStringJson, "\n")
@@ -925,7 +917,7 @@ func TestS7MessageBytes(t *testing.T) {
 			})
 			t.Run("Simple Binary Serialize", func(t *testing.T) {
 				buffer := utils.NewWriteBufferByteBased()
-				if err := tt.args.debuggable.SerializeWithWriteBuffer(buffer); err != nil {
+				if err := tt.args.debuggable.SerializeWithWriteBuffer(context.Background(), buffer); err != nil {
 					t.Error(err)
 				}
 				tt.wantDump = strings.Trim(tt.wantDump, "\n")
@@ -936,7 +928,7 @@ func TestS7MessageBytes(t *testing.T) {
 			t.Run("xml roundtrip", func(t *testing.T) {
 				reader := strings.NewReader(tt.wantStringXml)
 				readBuffer := utils.NewXmlReadBuffer(reader)
-				if got, err := model.TPKTPacketParseWithBuffer(readBuffer); err != nil {
+				if got, err := model.TPKTPacketParseWithBuffer(context.Background(), readBuffer); err != nil {
 					t.Error(err)
 				} else {
 					assert.Equal(t, tt.args.debuggable, got)
@@ -945,7 +937,7 @@ func TestS7MessageBytes(t *testing.T) {
 			t.Run("json roundtrip", func(t *testing.T) {
 				reader := strings.NewReader(tt.wantStringJson)
 				readBuffer := utils.NewJsonReadBuffer(reader)
-				if got, err := model.TPKTPacketParseWithBuffer(readBuffer); err != nil || !reflect.DeepEqual(got, tt.args.debuggable) {
+				if got, err := model.TPKTPacketParseWithBuffer(context.Background(), readBuffer); err != nil || !reflect.DeepEqual(got, tt.args.debuggable) {
 					if err != nil {
 						t.Error(err)
 					} else {
diff --git a/plc4go/internal/simulated/Device.go b/plc4go/internal/simulated/Device.go
index 15077b93ee..76d48bfa79 100644
--- a/plc4go/internal/simulated/Device.go
+++ b/plc4go/internal/simulated/Device.go
@@ -20,6 +20,7 @@
 package simulated
 
 import (
+	"context"
 	"math/rand"
 
 	"github.com/apache/plc4x/plc4go/pkg/api/values"
@@ -67,7 +68,7 @@ func (t *Device) getRandomValue(tag simulatedTag) *values.PlcValue {
 	size := tag.GetDataTypeSize().DataTypeSize()
 	data := make([]byte, uint16(size)*tag.Quantity)
 	rand.Read(data)
-	plcValue, err := model.DataItemParse(data, tag.DataTypeSize.String(), tag.Quantity)
+	plcValue, err := model.DataItemParse(context.Background(), data, tag.DataTypeSize.String(), tag.Quantity)
 	if err != nil {
 		panic("Unable to parse random bytes")
 	}
diff --git a/plc4go/protocols/abeth/readwrite/ParserHelper.go b/plc4go/protocols/abeth/readwrite/ParserHelper.go
index 9eb6deb4b4..0d7dbb0ad7 100644
--- a/plc4go/protocols/abeth/readwrite/ParserHelper.go
+++ b/plc4go/protocols/abeth/readwrite/ParserHelper.go
@@ -20,6 +20,8 @@
 package readwrite
 
 import (
+	"context"
+
 	"github.com/apache/plc4x/plc4go/protocols/abeth/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -33,17 +35,17 @@ type AbethParserHelper struct {
 func (m AbethParserHelper) Parse(typeName string, arguments []string, io utils.ReadBuffer) (interface{}, error) {
 	switch typeName {
 	case "DF1RequestCommand":
-		return model.DF1RequestCommandParseWithBuffer(io)
+		return model.DF1RequestCommandParseWithBuffer(context.Background(), io)
 	case "DF1RequestMessage":
-		return model.DF1RequestMessageParseWithBuffer(io)
+		return model.DF1RequestMessageParseWithBuffer(context.Background(), io)
 	case "DF1ResponseMessage":
 		payloadLength, err := utils.StrToUint16(arguments[0])
 		if err != nil {
 			return nil, errors.Wrap(err, "Error parsing")
 		}
-		return model.DF1ResponseMessageParseWithBuffer(io, payloadLength)
+		return model.DF1ResponseMessageParseWithBuffer(context.Background(), io, payloadLength)
 	case "CIPEncapsulationPacket":
-		return model.CIPEncapsulationPacketParseWithBuffer(io)
+		return model.CIPEncapsulationPacketParseWithBuffer(context.Background(), io)
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/protocols/abeth/readwrite/XmlParserHelper.go b/plc4go/protocols/abeth/readwrite/XmlParserHelper.go
index 50923103b5..1d32498b05 100644
--- a/plc4go/protocols/abeth/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/abeth/readwrite/XmlParserHelper.go
@@ -20,11 +20,13 @@
 package readwrite
 
 import (
+	"context"
+	"strconv"
+	"strings"
+
 	"github.com/apache/plc4x/plc4go/protocols/abeth/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
-	"strconv"
-	"strings"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -43,18 +45,18 @@ func init() {
 func (m AbethXmlParserHelper) Parse(typeName string, xmlString string, parserArguments ...string) (interface{}, error) {
 	switch typeName {
 	case "DF1RequestCommand":
-		return model.DF1RequestCommandParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.DF1RequestCommandParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "DF1RequestMessage":
-		return model.DF1RequestMessageParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.DF1RequestMessageParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "DF1ResponseMessage":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 16)
 		if err != nil {
 			return nil, err
 		}
 		payloadLength := uint16(parsedUint0)
-		return model.DF1ResponseMessageParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), payloadLength)
+		return model.DF1ResponseMessageParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)), payloadLength)
 	case "CIPEncapsulationPacket":
-		return model.CIPEncapsulationPacketParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.CIPEncapsulationPacketParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go
index 80c49d6b47..2e61b2bc66 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -95,25 +96,21 @@ func (m *_CIPEncapsulationConnectionRequest) GetTypeName() string {
 	return "CIPEncapsulationConnectionRequest"
 }
 
-func (m *_CIPEncapsulationConnectionRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_CIPEncapsulationConnectionRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_CIPEncapsulationConnectionRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_CIPEncapsulationConnectionRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_CIPEncapsulationConnectionRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func CIPEncapsulationConnectionRequestParse(theBytes []byte) (CIPEncapsulationConnectionRequest, error) {
-	return CIPEncapsulationConnectionRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
+	return CIPEncapsulationConnectionRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
 }
 
-func CIPEncapsulationConnectionRequestParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEncapsulationConnectionRequest, error) {
+func CIPEncapsulationConnectionRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (CIPEncapsulationConnectionRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("CIPEncapsulationConnectionRequest"); pullErr != nil {
@@ -135,14 +132,14 @@ func CIPEncapsulationConnectionRequestParseWithBuffer(readBuffer utils.ReadBuffe
 }
 
 func (m *_CIPEncapsulationConnectionRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_CIPEncapsulationConnectionRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_CIPEncapsulationConnectionRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -155,7 +152,7 @@ func (m *_CIPEncapsulationConnectionRequest) SerializeWithWriteBuffer(writeBuffe
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_CIPEncapsulationConnectionRequest) isCIPEncapsulationConnectionRequest() bool {
@@ -167,7 +164,7 @@ func (m *_CIPEncapsulationConnectionRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go
index 6bbfcbcc1b..05c73aa9e5 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -95,25 +96,21 @@ func (m *_CIPEncapsulationConnectionResponse) GetTypeName() string {
 	return "CIPEncapsulationConnectionResponse"
 }
 
-func (m *_CIPEncapsulationConnectionResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_CIPEncapsulationConnectionResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_CIPEncapsulationConnectionResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_CIPEncapsulationConnectionResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_CIPEncapsulationConnectionResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func CIPEncapsulationConnectionResponseParse(theBytes []byte) (CIPEncapsulationConnectionResponse, error) {
-	return CIPEncapsulationConnectionResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
+	return CIPEncapsulationConnectionResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
 }
 
-func CIPEncapsulationConnectionResponseParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEncapsulationConnectionResponse, error) {
+func CIPEncapsulationConnectionResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (CIPEncapsulationConnectionResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("CIPEncapsulationConnectionResponse"); pullErr != nil {
@@ -135,14 +132,14 @@ func CIPEncapsulationConnectionResponseParseWithBuffer(readBuffer utils.ReadBuff
 }
 
 func (m *_CIPEncapsulationConnectionResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_CIPEncapsulationConnectionResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_CIPEncapsulationConnectionResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -155,7 +152,7 @@ func (m *_CIPEncapsulationConnectionResponse) SerializeWithWriteBuffer(writeBuff
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_CIPEncapsulationConnectionResponse) isCIPEncapsulationConnectionResponse() bool {
@@ -167,7 +164,7 @@ func (m *_CIPEncapsulationConnectionResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
index eff93ac438..fae21298c7 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationPacket.go
@@ -20,7 +20,9 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -63,13 +65,12 @@ type _CIPEncapsulationPacket struct {
 
 type _CIPEncapsulationPacketChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
 	GetCommandType() uint16
 }
 
 type CIPEncapsulationPacketParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child CIPEncapsulationPacket, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child CIPEncapsulationPacket, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -128,7 +129,7 @@ func (m *_CIPEncapsulationPacket) GetTypeName() string {
 	return "CIPEncapsulationPacket"
 }
 
-func (m *_CIPEncapsulationPacket) GetParentLengthInBits() uint16 {
+func (m *_CIPEncapsulationPacket) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (commandType)
 	lengthInBits += 16
@@ -156,15 +157,15 @@ func (m *_CIPEncapsulationPacket) GetParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *_CIPEncapsulationPacket) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_CIPEncapsulationPacket) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func CIPEncapsulationPacketParse(theBytes []byte) (CIPEncapsulationPacket, error) {
-	return CIPEncapsulationPacketParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
+	return CIPEncapsulationPacketParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
 }
 
-func CIPEncapsulationPacketParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEncapsulationPacket, error) {
+func CIPEncapsulationPacketParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (CIPEncapsulationPacket, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("CIPEncapsulationPacket"); pullErr != nil {
@@ -211,12 +212,16 @@ func CIPEncapsulationPacketParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEnca
 		senderContext = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(uint16(8)); curItem++ {
+		_numItems := uint16(uint16(8))
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
 			_item, _err := readBuffer.ReadUint8("", 8)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'senderContext' field of CIPEncapsulationPacket")
 			}
-			senderContext[curItem] = _item
+			senderContext[_curItem] = _item
 		}
 	}
 	if closeErr := readBuffer.CloseContext("senderContext", utils.WithRenderAsList(true)); closeErr != nil {
@@ -258,13 +263,13 @@ func CIPEncapsulationPacketParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEnca
 	var typeSwitchError error
 	switch {
 	case commandType == 0x0101: // CIPEncapsulationConnectionRequest
-		_childTemp, typeSwitchError = CIPEncapsulationConnectionRequestParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = CIPEncapsulationConnectionRequestParseWithBuffer(ctx, readBuffer)
 	case commandType == 0x0201: // CIPEncapsulationConnectionResponse
-		_childTemp, typeSwitchError = CIPEncapsulationConnectionResponseParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = CIPEncapsulationConnectionResponseParseWithBuffer(ctx, readBuffer)
 	case commandType == 0x0107: // CIPEncapsulationReadRequest
-		_childTemp, typeSwitchError = CIPEncapsulationReadRequestParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = CIPEncapsulationReadRequestParseWithBuffer(ctx, readBuffer)
 	case commandType == 0x0207: // CIPEncapsulationReadResponse
-		_childTemp, typeSwitchError = CIPEncapsulationReadResponseParseWithBuffer(readBuffer, packetLen)
+		_childTemp, typeSwitchError = CIPEncapsulationReadResponseParseWithBuffer(ctx, readBuffer, packetLen)
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for parameters [commandType=%v]", commandType)
 	}
@@ -283,7 +288,7 @@ func CIPEncapsulationPacketParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEnca
 	return _child, nil
 }
 
-func (pm *_CIPEncapsulationPacket) SerializeParent(writeBuffer utils.WriteBuffer, child CIPEncapsulationPacket, serializeChildFunction func() error) error {
+func (pm *_CIPEncapsulationPacket) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child CIPEncapsulationPacket, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
@@ -302,7 +307,7 @@ func (pm *_CIPEncapsulationPacket) SerializeParent(writeBuffer utils.WriteBuffer
 	}
 
 	// Implicit Field (packetLen) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-	packetLen := uint16(uint16(uint16(m.GetLengthInBytes())) - uint16(uint16(28)))
+	packetLen := uint16(uint16(uint16(m.GetLengthInBytes(ctx))) - uint16(uint16(28)))
 	_packetLenErr := writeBuffer.WriteUint16("packetLen", 16, (packetLen))
 	if _packetLenErr != nil {
 		return errors.Wrap(_packetLenErr, "Error serializing 'packetLen' field")
@@ -326,7 +331,8 @@ func (pm *_CIPEncapsulationPacket) SerializeParent(writeBuffer utils.WriteBuffer
 	if pushErr := writeBuffer.PushContext("senderContext", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for senderContext")
 	}
-	for _, _element := range m.GetSenderContext() {
+	for _curItem, _element := range m.GetSenderContext() {
+		_ = _curItem
 		_elementErr := writeBuffer.WriteUint8("", 8, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'senderContext' field")
@@ -379,7 +385,7 @@ func (m *_CIPEncapsulationPacket) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadRequest.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadRequest.go
index 41e9b2d473..78f7c7dd6e 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadRequest.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -113,28 +114,24 @@ func (m *_CIPEncapsulationReadRequest) GetTypeName() string {
 	return "CIPEncapsulationReadRequest"
 }
 
-func (m *_CIPEncapsulationReadRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_CIPEncapsulationReadRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_CIPEncapsulationReadRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (request)
-	lengthInBits += m.Request.GetLengthInBits()
+	lengthInBits += m.Request.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_CIPEncapsulationReadRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_CIPEncapsulationReadRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func CIPEncapsulationReadRequestParse(theBytes []byte) (CIPEncapsulationReadRequest, error) {
-	return CIPEncapsulationReadRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
+	return CIPEncapsulationReadRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)))
 }
 
-func CIPEncapsulationReadRequestParseWithBuffer(readBuffer utils.ReadBuffer) (CIPEncapsulationReadRequest, error) {
+func CIPEncapsulationReadRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (CIPEncapsulationReadRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("CIPEncapsulationReadRequest"); pullErr != nil {
@@ -147,7 +144,7 @@ func CIPEncapsulationReadRequestParseWithBuffer(readBuffer utils.ReadBuffer) (CI
 	if pullErr := readBuffer.PullContext("request"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for request")
 	}
-	_request, _requestErr := DF1RequestMessageParseWithBuffer(readBuffer)
+	_request, _requestErr := DF1RequestMessageParseWithBuffer(ctx, readBuffer)
 	if _requestErr != nil {
 		return nil, errors.Wrap(_requestErr, "Error parsing 'request' field of CIPEncapsulationReadRequest")
 	}
@@ -170,14 +167,14 @@ func CIPEncapsulationReadRequestParseWithBuffer(readBuffer utils.ReadBuffer) (CI
 }
 
 func (m *_CIPEncapsulationReadRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_CIPEncapsulationReadRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_CIPEncapsulationReadRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -189,7 +186,7 @@ func (m *_CIPEncapsulationReadRequest) SerializeWithWriteBuffer(writeBuffer util
 		if pushErr := writeBuffer.PushContext("request"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for request")
 		}
-		_requestErr := writeBuffer.WriteSerializable(m.GetRequest())
+		_requestErr := writeBuffer.WriteSerializable(ctx, m.GetRequest())
 		if popErr := writeBuffer.PopContext("request"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for request")
 		}
@@ -202,7 +199,7 @@ func (m *_CIPEncapsulationReadRequest) SerializeWithWriteBuffer(writeBuffer util
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_CIPEncapsulationReadRequest) isCIPEncapsulationReadRequest() bool {
@@ -214,7 +211,7 @@ func (m *_CIPEncapsulationReadRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadResponse.go b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadResponse.go
index 9269bd1782..6a5a216964 100644
--- a/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadResponse.go
+++ b/plc4go/protocols/abeth/readwrite/model/CIPEncapsulationReadResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -116,28 +117,24 @@ func (m *_CIPEncapsulationReadResponse) GetTypeName() string {
 	return "CIPEncapsulationReadResponse"
 }
 
-func (m *_CIPEncapsulationReadResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_CIPEncapsulationReadResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_CIPEncapsulationReadResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (response)
-	lengthInBits += m.Response.GetLengthInBits()
+	lengthInBits += m.Response.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_CIPEncapsulationReadResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_CIPEncapsulationReadResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func CIPEncapsulationReadResponseParse(theBytes []byte, packetLen uint16) (CIPEncapsulationReadResponse, error) {
-	return CIPEncapsulationReadResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)), packetLen)
+	return CIPEncapsulationReadResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.BigEndian)), packetLen)
 }
 
-func CIPEncapsulationReadResponseParseWithBuffer(readBuffer utils.ReadBuffer, packetLen uint16) (CIPEncapsulationReadResponse, error) {
+func CIPEncapsulationReadResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, packetLen uint16) (CIPEncapsulationReadResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("CIPEncapsulationReadResponse"); pullErr != nil {
@@ -150,7 +147,7 @@ func CIPEncapsulationReadResponseParseWithBuffer(readBuffer utils.ReadBuffer, pa
 	if pullErr := readBuffer.PullContext("response"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for response")
 	}
-	_response, _responseErr := DF1ResponseMessageParseWithBuffer(readBuffer, uint16(packetLen))
+	_response, _responseErr := DF1ResponseMessageParseWithBuffer(ctx, readBuffer, uint16(packetLen))
 	if _responseErr != nil {
 		return nil, errors.Wrap(_responseErr, "Error parsing 'response' field of CIPEncapsulationReadResponse")
 	}
@@ -173,14 +170,14 @@ func CIPEncapsulationReadResponseParseWithBuffer(readBuffer utils.ReadBuffer, pa
 }
 
 func (m *_CIPEncapsulationReadResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_CIPEncapsulationReadResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_CIPEncapsulationReadResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -192,7 +189,7 @@ func (m *_CIPEncapsulationReadResponse) SerializeWithWriteBuffer(writeBuffer uti
 		if pushErr := writeBuffer.PushContext("response"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for response")
 		}
-		_responseErr := writeBuffer.WriteSerializable(m.GetResponse())
+		_responseErr := writeBuffer.WriteSerializable(ctx, m.GetResponse())
 		if popErr := writeBuffer.PopContext("response"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for response")
 		}
@@ -205,7 +202,7 @@ func (m *_CIPEncapsulationReadResponse) SerializeWithWriteBuffer(writeBuffer uti
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 ////
@@ -227,7 +224,7 @@ func (m *_CIPEncapsulationReadResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1CommandRequestMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1CommandRequestMessage.go
index cf830bd29d..f64b6c42d8 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1CommandRequestMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1CommandRequestMessage.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -112,28 +113,24 @@ func (m *_DF1CommandRequestMessage) GetTypeName() string {
 	return "DF1CommandRequestMessage"
 }
 
-func (m *_DF1CommandRequestMessage) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_DF1CommandRequestMessage) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_DF1CommandRequestMessage) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (command)
-	lengthInBits += m.Command.GetLengthInBits()
+	lengthInBits += m.Command.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_DF1CommandRequestMessage) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_DF1CommandRequestMessage) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func DF1CommandRequestMessageParse(theBytes []byte) (DF1CommandRequestMessage, error) {
-	return DF1CommandRequestMessageParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return DF1CommandRequestMessageParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func DF1CommandRequestMessageParseWithBuffer(readBuffer utils.ReadBuffer) (DF1CommandRequestMessage, error) {
+func DF1CommandRequestMessageParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (DF1CommandRequestMessage, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("DF1CommandRequestMessage"); pullErr != nil {
@@ -146,7 +143,7 @@ func DF1CommandRequestMessageParseWithBuffer(readBuffer utils.ReadBuffer) (DF1Co
 	if pullErr := readBuffer.PullContext("command"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for command")
 	}
-	_command, _commandErr := DF1RequestCommandParseWithBuffer(readBuffer)
+	_command, _commandErr := DF1RequestCommandParseWithBuffer(ctx, readBuffer)
 	if _commandErr != nil {
 		return nil, errors.Wrap(_commandErr, "Error parsing 'command' field of DF1CommandRequestMessage")
 	}
@@ -169,14 +166,14 @@ func DF1CommandRequestMessageParseWithBuffer(readBuffer utils.ReadBuffer) (DF1Co
 }
 
 func (m *_DF1CommandRequestMessage) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_DF1CommandRequestMessage) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_DF1CommandRequestMessage) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -188,7 +185,7 @@ func (m *_DF1CommandRequestMessage) SerializeWithWriteBuffer(writeBuffer utils.W
 		if pushErr := writeBuffer.PushContext("command"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for command")
 		}
-		_commandErr := writeBuffer.WriteSerializable(m.GetCommand())
+		_commandErr := writeBuffer.WriteSerializable(ctx, m.GetCommand())
 		if popErr := writeBuffer.PopContext("command"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for command")
 		}
@@ -201,7 +198,7 @@ func (m *_DF1CommandRequestMessage) SerializeWithWriteBuffer(writeBuffer utils.W
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_DF1CommandRequestMessage) isDF1CommandRequestMessage() bool {
@@ -213,7 +210,7 @@ func (m *_DF1CommandRequestMessage) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go b/plc4go/protocols/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go
index 9d3ee80f12..ddac0320f3 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -112,12 +113,8 @@ func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetTypeName() stri
 	return "DF1CommandResponseMessageProtectedTypedLogicalRead"
 }
 
-func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Array field
 	if len(m.Data) > 0 {
@@ -127,15 +124,15 @@ func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBitsCon
 	return lengthInBits
 }
 
-func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func DF1CommandResponseMessageProtectedTypedLogicalReadParse(theBytes []byte, payloadLength uint16) (DF1CommandResponseMessageProtectedTypedLogicalRead, error) {
-	return DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(utils.NewReadBufferByteBased(theBytes), payloadLength)
+	return DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), payloadLength)
 }
 
-func DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(readBuffer utils.ReadBuffer, payloadLength uint16) (DF1CommandResponseMessageProtectedTypedLogicalRead, error) {
+func DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, payloadLength uint16) (DF1CommandResponseMessageProtectedTypedLogicalRead, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("DF1CommandResponseMessageProtectedTypedLogicalRead"); pullErr != nil {
@@ -181,14 +178,14 @@ func DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(readBuffe
 }
 
 func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -200,7 +197,8 @@ func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) SerializeWithWrite
 		if pushErr := writeBuffer.PushContext("data", utils.WithRenderAsList(true)); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for data")
 		}
-		for _, _element := range m.GetData() {
+		for _curItem, _element := range m.GetData() {
+			_ = _curItem
 			_elementErr := writeBuffer.WriteUint8("", 8, _element)
 			if _elementErr != nil {
 				return errors.Wrap(_elementErr, "Error serializing 'data' field")
@@ -215,7 +213,7 @@ func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) SerializeWithWrite
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) isDF1CommandResponseMessageProtectedTypedLogicalRead() bool {
@@ -227,7 +225,7 @@ func (m *_DF1CommandResponseMessageProtectedTypedLogicalRead) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go b/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
index fa32d20c47..68254bddd7 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestCommand.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -48,13 +49,12 @@ type _DF1RequestCommand struct {
 
 type _DF1RequestCommandChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
 	GetFunctionCode() uint8
 }
 
 type DF1RequestCommandParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child DF1RequestCommand, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child DF1RequestCommand, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -87,7 +87,7 @@ func (m *_DF1RequestCommand) GetTypeName() string {
 	return "DF1RequestCommand"
 }
 
-func (m *_DF1RequestCommand) GetParentLengthInBits() uint16 {
+func (m *_DF1RequestCommand) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (functionCode)
 	lengthInBits += 8
@@ -95,15 +95,15 @@ func (m *_DF1RequestCommand) GetParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *_DF1RequestCommand) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_DF1RequestCommand) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func DF1RequestCommandParse(theBytes []byte) (DF1RequestCommand, error) {
-	return DF1RequestCommandParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return DF1RequestCommandParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func DF1RequestCommandParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestCommand, error) {
+func DF1RequestCommandParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (DF1RequestCommand, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("DF1RequestCommand"); pullErr != nil {
@@ -129,7 +129,7 @@ func DF1RequestCommandParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestCo
 	var typeSwitchError error
 	switch {
 	case functionCode == 0xA2: // DF1RequestProtectedTypedLogicalRead
-		_childTemp, typeSwitchError = DF1RequestProtectedTypedLogicalReadParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = DF1RequestProtectedTypedLogicalReadParseWithBuffer(ctx, readBuffer)
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for parameters [functionCode=%v]", functionCode)
 	}
@@ -147,7 +147,7 @@ func DF1RequestCommandParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestCo
 	return _child, nil
 }
 
-func (pm *_DF1RequestCommand) SerializeParent(writeBuffer utils.WriteBuffer, child DF1RequestCommand, serializeChildFunction func() error) error {
+func (pm *_DF1RequestCommand) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child DF1RequestCommand, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
@@ -185,7 +185,7 @@ func (m *_DF1RequestCommand) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
index 45c6a9a247..c80ad2bf47 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestMessage.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -62,13 +63,12 @@ type _DF1RequestMessage struct {
 
 type _DF1RequestMessageChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
 	GetCommandCode() uint8
 }
 
 type DF1RequestMessageParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child DF1RequestMessage, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child DF1RequestMessage, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -127,7 +127,7 @@ func (m *_DF1RequestMessage) GetTypeName() string {
 	return "DF1RequestMessage"
 }
 
-func (m *_DF1RequestMessage) GetParentLengthInBits() uint16 {
+func (m *_DF1RequestMessage) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (destinationAddress)
@@ -150,15 +150,15 @@ func (m *_DF1RequestMessage) GetParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *_DF1RequestMessage) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_DF1RequestMessage) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func DF1RequestMessageParse(theBytes []byte) (DF1RequestMessage, error) {
-	return DF1RequestMessageParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return DF1RequestMessageParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func DF1RequestMessageParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestMessage, error) {
+func DF1RequestMessageParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (DF1RequestMessage, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("DF1RequestMessage"); pullErr != nil {
@@ -229,7 +229,7 @@ func DF1RequestMessageParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestMe
 	var typeSwitchError error
 	switch {
 	case commandCode == 0x0F: // DF1CommandRequestMessage
-		_childTemp, typeSwitchError = DF1CommandRequestMessageParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = DF1CommandRequestMessageParseWithBuffer(ctx, readBuffer)
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for parameters [commandCode=%v]", commandCode)
 	}
@@ -248,7 +248,7 @@ func DF1RequestMessageParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestMe
 	return _child, nil
 }
 
-func (pm *_DF1RequestMessage) SerializeParent(writeBuffer utils.WriteBuffer, child DF1RequestMessage, serializeChildFunction func() error) error {
+func (pm *_DF1RequestMessage) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child DF1RequestMessage, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
@@ -330,7 +330,7 @@ func (m *_DF1RequestMessage) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go b/plc4go/protocols/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go
index 5384ab922b..b2a2c7ba8c 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -139,12 +140,8 @@ func (m *_DF1RequestProtectedTypedLogicalRead) GetTypeName() string {
 	return "DF1RequestProtectedTypedLogicalRead"
 }
 
-func (m *_DF1RequestProtectedTypedLogicalRead) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_DF1RequestProtectedTypedLogicalRead) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_DF1RequestProtectedTypedLogicalRead) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (byteSize)
 	lengthInBits += 8
@@ -164,15 +161,15 @@ func (m *_DF1RequestProtectedTypedLogicalRead) GetLengthInBitsConditional(lastIt
 	return lengthInBits
 }
 
-func (m *_DF1RequestProtectedTypedLogicalRead) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_DF1RequestProtectedTypedLogicalRead) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func DF1RequestProtectedTypedLogicalReadParse(theBytes []byte) (DF1RequestProtectedTypedLogicalRead, error) {
-	return DF1RequestProtectedTypedLogicalReadParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return DF1RequestProtectedTypedLogicalReadParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func DF1RequestProtectedTypedLogicalReadParseWithBuffer(readBuffer utils.ReadBuffer) (DF1RequestProtectedTypedLogicalRead, error) {
+func DF1RequestProtectedTypedLogicalReadParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (DF1RequestProtectedTypedLogicalRead, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("DF1RequestProtectedTypedLogicalRead"); pullErr != nil {
@@ -234,14 +231,14 @@ func DF1RequestProtectedTypedLogicalReadParseWithBuffer(readBuffer utils.ReadBuf
 }
 
 func (m *_DF1RequestProtectedTypedLogicalRead) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_DF1RequestProtectedTypedLogicalRead) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_DF1RequestProtectedTypedLogicalRead) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -289,7 +286,7 @@ func (m *_DF1RequestProtectedTypedLogicalRead) SerializeWithWriteBuffer(writeBuf
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_DF1RequestProtectedTypedLogicalRead) isDF1RequestProtectedTypedLogicalRead() bool {
@@ -301,7 +298,7 @@ func (m *_DF1RequestProtectedTypedLogicalRead) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
index cc2bb22835..c87ac8ceab 100644
--- a/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
+++ b/plc4go/protocols/abeth/readwrite/model/DF1ResponseMessage.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -66,13 +67,12 @@ type _DF1ResponseMessage struct {
 
 type _DF1ResponseMessageChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
 	GetCommandCode() uint8
 }
 
 type DF1ResponseMessageParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child DF1ResponseMessage, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child DF1ResponseMessage, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -131,7 +131,7 @@ func (m *_DF1ResponseMessage) GetTypeName() string {
 	return "DF1ResponseMessage"
 }
 
-func (m *_DF1ResponseMessage) GetParentLengthInBits() uint16 {
+func (m *_DF1ResponseMessage) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Reserved Field (reserved)
@@ -157,15 +157,15 @@ func (m *_DF1ResponseMessage) GetParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *_DF1ResponseMessage) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_DF1ResponseMessage) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func DF1ResponseMessageParse(theBytes []byte, payloadLength uint16) (DF1ResponseMessage, error) {
-	return DF1ResponseMessageParseWithBuffer(utils.NewReadBufferByteBased(theBytes), payloadLength)
+	return DF1ResponseMessageParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), payloadLength)
 }
 
-func DF1ResponseMessageParseWithBuffer(readBuffer utils.ReadBuffer, payloadLength uint16) (DF1ResponseMessage, error) {
+func DF1ResponseMessageParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, payloadLength uint16) (DF1ResponseMessage, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("DF1ResponseMessage"); pullErr != nil {
@@ -253,7 +253,7 @@ func DF1ResponseMessageParseWithBuffer(readBuffer utils.ReadBuffer, payloadLengt
 	var typeSwitchError error
 	switch {
 	case commandCode == 0x4F: // DF1CommandResponseMessageProtectedTypedLogicalRead
-		_childTemp, typeSwitchError = DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(readBuffer, payloadLength)
+		_childTemp, typeSwitchError = DF1CommandResponseMessageProtectedTypedLogicalReadParseWithBuffer(ctx, readBuffer, payloadLength)
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for parameters [commandCode=%v]", commandCode)
 	}
@@ -273,7 +273,7 @@ func DF1ResponseMessageParseWithBuffer(readBuffer utils.ReadBuffer, payloadLengt
 	return _child, nil
 }
 
-func (pm *_DF1ResponseMessage) SerializeParent(writeBuffer utils.WriteBuffer, child DF1ResponseMessage, serializeChildFunction func() error) error {
+func (pm *_DF1ResponseMessage) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child DF1ResponseMessage, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
@@ -381,7 +381,7 @@ func (m *_DF1ResponseMessage) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/ParserHelper.go b/plc4go/protocols/ads/discovery/readwrite/ParserHelper.go
index 8d793cd454..4069686ffd 100644
--- a/plc4go/protocols/ads/discovery/readwrite/ParserHelper.go
+++ b/plc4go/protocols/ads/discovery/readwrite/ParserHelper.go
@@ -20,6 +20,8 @@
 package readwrite
 
 import (
+	"context"
+
 	"github.com/apache/plc4x/plc4go/protocols/ads/discovery/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -33,15 +35,15 @@ type AdsDiscoveryParserHelper struct {
 func (m AdsDiscoveryParserHelper) Parse(typeName string, arguments []string, io utils.ReadBuffer) (interface{}, error) {
 	switch typeName {
 	case "AdsDiscovery":
-		return model.AdsDiscoveryParseWithBuffer(io)
+		return model.AdsDiscoveryParseWithBuffer(context.Background(), io)
 	case "AdsDiscoveryBlock":
-		return model.AdsDiscoveryBlockParseWithBuffer(io)
+		return model.AdsDiscoveryBlockParseWithBuffer(context.Background(), io)
 	case "AdsDiscoveryConstants":
-		return model.AdsDiscoveryConstantsParseWithBuffer(io)
+		return model.AdsDiscoveryConstantsParseWithBuffer(context.Background(), io)
 	case "AmsNetId":
-		return model.AmsNetIdParseWithBuffer(io)
+		return model.AmsNetIdParseWithBuffer(context.Background(), io)
 	case "AmsString":
-		return model.AmsStringParseWithBuffer(io)
+		return model.AmsStringParseWithBuffer(context.Background(), io)
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/protocols/ads/discovery/readwrite/XmlParserHelper.go b/plc4go/protocols/ads/discovery/readwrite/XmlParserHelper.go
index fee6703467..dbc2cbb1c1 100644
--- a/plc4go/protocols/ads/discovery/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/ads/discovery/readwrite/XmlParserHelper.go
@@ -20,11 +20,13 @@
 package readwrite
 
 import (
+	"context"
+	"strconv"
+	"strings"
+
 	"github.com/apache/plc4x/plc4go/protocols/ads/discovery/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
-	"strconv"
-	"strings"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -43,15 +45,15 @@ func init() {
 func (m AdsDiscoveryXmlParserHelper) Parse(typeName string, xmlString string, parserArguments ...string) (interface{}, error) {
 	switch typeName {
 	case "AdsDiscovery":
-		return model.AdsDiscoveryParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsDiscoveryParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsDiscoveryBlock":
-		return model.AdsDiscoveryBlockParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsDiscoveryBlockParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsDiscoveryConstants":
-		return model.AdsDiscoveryConstantsParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsDiscoveryConstantsParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AmsNetId":
-		return model.AmsNetIdParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsNetIdParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AmsString":
-		return model.AmsStringParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsStringParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go
index b6b96cd479..51acc0c4df 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscovery.go
@@ -20,8 +20,10 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"fmt"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -126,11 +128,7 @@ func (m *_AdsDiscovery) GetTypeName() string {
 	return "AdsDiscovery"
 }
 
-func (m *_AdsDiscovery) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscovery) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsDiscovery) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Const Field (header)
@@ -143,7 +141,7 @@ func (m *_AdsDiscovery) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits += 32
 
 	// Simple field (amsNetId)
-	lengthInBits += m.AmsNetId.GetLengthInBits()
+	lengthInBits += m.AmsNetId.GetLengthInBits(ctx)
 
 	// Simple field (portNumber)
 	lengthInBits += 16
@@ -153,24 +151,26 @@ func (m *_AdsDiscovery) GetLengthInBitsConditional(lastItem bool) uint16 {
 
 	// Array field
 	if len(m.Blocks) > 0 {
-		for i, element := range m.Blocks {
-			last := i == len(m.Blocks)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.Blocks {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Blocks), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m *_AdsDiscovery) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscovery) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryParse(theBytes []byte) (AdsDiscovery, error) {
-	return AdsDiscoveryParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
+	return AdsDiscoveryParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
 }
 
-func AdsDiscoveryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery, error) {
+func AdsDiscoveryParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscovery, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscovery"); pullErr != nil {
@@ -199,7 +199,7 @@ func AdsDiscoveryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery, err
 	if pullErr := readBuffer.PullContext("operation"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for operation")
 	}
-	_operation, _operationErr := OperationParseWithBuffer(readBuffer)
+	_operation, _operationErr := OperationParseWithBuffer(ctx, readBuffer)
 	if _operationErr != nil {
 		return nil, errors.Wrap(_operationErr, "Error parsing 'operation' field of AdsDiscovery")
 	}
@@ -212,7 +212,7 @@ func AdsDiscoveryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery, err
 	if pullErr := readBuffer.PullContext("amsNetId"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for amsNetId")
 	}
-	_amsNetId, _amsNetIdErr := AmsNetIdParseWithBuffer(readBuffer)
+	_amsNetId, _amsNetIdErr := AmsNetIdParseWithBuffer(ctx, readBuffer)
 	if _amsNetIdErr != nil {
 		return nil, errors.Wrap(_amsNetIdErr, "Error parsing 'amsNetId' field of AdsDiscovery")
 	}
@@ -225,7 +225,7 @@ func AdsDiscoveryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery, err
 	if pullErr := readBuffer.PullContext("portNumber"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for portNumber")
 	}
-	_portNumber, _portNumberErr := AdsPortNumbersParseWithBuffer(readBuffer)
+	_portNumber, _portNumberErr := AdsPortNumbersParseWithBuffer(ctx, readBuffer)
 	if _portNumberErr != nil {
 		return nil, errors.Wrap(_portNumberErr, "Error parsing 'portNumber' field of AdsDiscovery")
 	}
@@ -252,12 +252,16 @@ func AdsDiscoveryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery, err
 		blocks = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(numBlocks); curItem++ {
-			_item, _err := AdsDiscoveryBlockParseWithBuffer(readBuffer)
+		_numItems := uint16(numBlocks)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsDiscoveryBlockParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'blocks' field of AdsDiscovery")
 			}
-			blocks[curItem] = _item.(AdsDiscoveryBlock)
+			blocks[_curItem] = _item.(AdsDiscoveryBlock)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("blocks", utils.WithRenderAsList(true)); closeErr != nil {
@@ -279,14 +283,14 @@ func AdsDiscoveryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery, err
 }
 
 func (m *_AdsDiscovery) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscovery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscovery) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsDiscovery"); pushErr != nil {
@@ -310,7 +314,7 @@ func (m *_AdsDiscovery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	if pushErr := writeBuffer.PushContext("operation"); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for operation")
 	}
-	_operationErr := writeBuffer.WriteSerializable(m.GetOperation())
+	_operationErr := writeBuffer.WriteSerializable(ctx, m.GetOperation())
 	if popErr := writeBuffer.PopContext("operation"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for operation")
 	}
@@ -322,7 +326,7 @@ func (m *_AdsDiscovery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	if pushErr := writeBuffer.PushContext("amsNetId"); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for amsNetId")
 	}
-	_amsNetIdErr := writeBuffer.WriteSerializable(m.GetAmsNetId())
+	_amsNetIdErr := writeBuffer.WriteSerializable(ctx, m.GetAmsNetId())
 	if popErr := writeBuffer.PopContext("amsNetId"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for amsNetId")
 	}
@@ -334,7 +338,7 @@ func (m *_AdsDiscovery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	if pushErr := writeBuffer.PushContext("portNumber"); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for portNumber")
 	}
-	_portNumberErr := writeBuffer.WriteSerializable(m.GetPortNumber())
+	_portNumberErr := writeBuffer.WriteSerializable(ctx, m.GetPortNumber())
 	if popErr := writeBuffer.PopContext("portNumber"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for portNumber")
 	}
@@ -353,8 +357,11 @@ func (m *_AdsDiscovery) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer)
 	if pushErr := writeBuffer.PushContext("blocks", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for blocks")
 	}
-	for _, _element := range m.GetBlocks() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
+	for _curItem, _element := range m.GetBlocks() {
+		_ = _curItem
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetBlocks()), _curItem)
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'blocks' field")
 		}
@@ -378,7 +385,7 @@ func (m *_AdsDiscovery) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
index b4912d3a49..887d8997a1 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlock.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -48,13 +49,12 @@ type _AdsDiscoveryBlock struct {
 
 type _AdsDiscoveryBlockChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
 	GetBlockType() AdsDiscoveryBlockType
 }
 
 type AdsDiscoveryBlockParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child AdsDiscoveryBlock, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child AdsDiscoveryBlock, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -87,7 +87,7 @@ func (m *_AdsDiscoveryBlock) GetTypeName() string {
 	return "AdsDiscoveryBlock"
 }
 
-func (m *_AdsDiscoveryBlock) GetParentLengthInBits() uint16 {
+func (m *_AdsDiscoveryBlock) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (blockType)
 	lengthInBits += 16
@@ -95,15 +95,15 @@ func (m *_AdsDiscoveryBlock) GetParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlock) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlock) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockParse(theBytes []byte) (AdsDiscoveryBlock, error) {
-	return AdsDiscoveryBlockParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlock, error) {
+func AdsDiscoveryBlockParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlock, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlock"); pullErr != nil {
@@ -116,7 +116,7 @@ func AdsDiscoveryBlockParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery
 	if pullErr := readBuffer.PullContext("blockType"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for blockType")
 	}
-	blockType_temp, _blockTypeErr := AdsDiscoveryBlockTypeParseWithBuffer(readBuffer)
+	blockType_temp, _blockTypeErr := AdsDiscoveryBlockTypeParseWithBuffer(ctx, readBuffer)
 	var blockType AdsDiscoveryBlockType = blockType_temp
 	if closeErr := readBuffer.CloseContext("blockType"); closeErr != nil {
 		return nil, errors.Wrap(closeErr, "Error closing for blockType")
@@ -136,23 +136,23 @@ func AdsDiscoveryBlockParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery
 	var typeSwitchError error
 	switch {
 	case blockType == AdsDiscoveryBlockType_STATUS: // AdsDiscoveryBlockStatus
-		_childTemp, typeSwitchError = AdsDiscoveryBlockStatusParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockStatusParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_PASSWORD: // AdsDiscoveryBlockPassword
-		_childTemp, typeSwitchError = AdsDiscoveryBlockPasswordParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockPasswordParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_VERSION: // AdsDiscoveryBlockVersion
-		_childTemp, typeSwitchError = AdsDiscoveryBlockVersionParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockVersionParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_OS_DATA: // AdsDiscoveryBlockOsData
-		_childTemp, typeSwitchError = AdsDiscoveryBlockOsDataParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockOsDataParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_HOST_NAME: // AdsDiscoveryBlockHostName
-		_childTemp, typeSwitchError = AdsDiscoveryBlockHostNameParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockHostNameParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_AMS_NET_ID: // AdsDiscoveryBlockAmsNetId
-		_childTemp, typeSwitchError = AdsDiscoveryBlockAmsNetIdParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockAmsNetIdParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_ROUTE_NAME: // AdsDiscoveryBlockRouteName
-		_childTemp, typeSwitchError = AdsDiscoveryBlockRouteNameParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockRouteNameParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_USER_NAME: // AdsDiscoveryBlockUserName
-		_childTemp, typeSwitchError = AdsDiscoveryBlockUserNameParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockUserNameParseWithBuffer(ctx, readBuffer)
 	case blockType == AdsDiscoveryBlockType_FINGERPRINT: // AdsDiscoveryBlockFingerprint
-		_childTemp, typeSwitchError = AdsDiscoveryBlockFingerprintParseWithBuffer(readBuffer)
+		_childTemp, typeSwitchError = AdsDiscoveryBlockFingerprintParseWithBuffer(ctx, readBuffer)
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for parameters [blockType=%v]", blockType)
 	}
@@ -170,7 +170,7 @@ func AdsDiscoveryBlockParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscovery
 	return _child, nil
 }
 
-func (pm *_AdsDiscoveryBlock) SerializeParent(writeBuffer utils.WriteBuffer, child AdsDiscoveryBlock, serializeChildFunction func() error) error {
+func (pm *_AdsDiscoveryBlock) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child AdsDiscoveryBlock, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
@@ -185,7 +185,7 @@ func (pm *_AdsDiscoveryBlock) SerializeParent(writeBuffer utils.WriteBuffer, chi
 	if pushErr := writeBuffer.PushContext("blockType"); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for blockType")
 	}
-	_blockTypeErr := writeBuffer.WriteSerializable(blockType)
+	_blockTypeErr := writeBuffer.WriteSerializable(ctx, blockType)
 	if popErr := writeBuffer.PopContext("blockType"); popErr != nil {
 		return errors.Wrap(popErr, "Error popping for blockType")
 	}
@@ -214,7 +214,7 @@ func (m *_AdsDiscoveryBlock) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockAmsNetId.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockAmsNetId.go
index ee316b1635..8b24abaaf7 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockAmsNetId.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockAmsNetId.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -124,31 +125,27 @@ func (m *_AdsDiscoveryBlockAmsNetId) GetTypeName() string {
 	return "AdsDiscoveryBlockAmsNetId"
 }
 
-func (m *_AdsDiscoveryBlockAmsNetId) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockAmsNetId) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockAmsNetId) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Const Field (amsNetIdLength)
 	lengthInBits += 16
 
 	// Simple field (amsNetId)
-	lengthInBits += m.AmsNetId.GetLengthInBits()
+	lengthInBits += m.AmsNetId.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockAmsNetId) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockAmsNetId) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockAmsNetIdParse(theBytes []byte) (AdsDiscoveryBlockAmsNetId, error) {
-	return AdsDiscoveryBlockAmsNetIdParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockAmsNetIdParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockAmsNetIdParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockAmsNetId, error) {
+func AdsDiscoveryBlockAmsNetIdParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockAmsNetId, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockAmsNetId"); pullErr != nil {
@@ -170,7 +167,7 @@ func AdsDiscoveryBlockAmsNetIdParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 	if pullErr := readBuffer.PullContext("amsNetId"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for amsNetId")
 	}
-	_amsNetId, _amsNetIdErr := AmsNetIdParseWithBuffer(readBuffer)
+	_amsNetId, _amsNetIdErr := AmsNetIdParseWithBuffer(ctx, readBuffer)
 	if _amsNetIdErr != nil {
 		return nil, errors.Wrap(_amsNetIdErr, "Error parsing 'amsNetId' field of AdsDiscoveryBlockAmsNetId")
 	}
@@ -193,14 +190,14 @@ func AdsDiscoveryBlockAmsNetIdParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 }
 
 func (m *_AdsDiscoveryBlockAmsNetId) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockAmsNetId) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockAmsNetId) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -218,7 +215,7 @@ func (m *_AdsDiscoveryBlockAmsNetId) SerializeWithWriteBuffer(writeBuffer utils.
 		if pushErr := writeBuffer.PushContext("amsNetId"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for amsNetId")
 		}
-		_amsNetIdErr := writeBuffer.WriteSerializable(m.GetAmsNetId())
+		_amsNetIdErr := writeBuffer.WriteSerializable(ctx, m.GetAmsNetId())
 		if popErr := writeBuffer.PopContext("amsNetId"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for amsNetId")
 		}
@@ -231,7 +228,7 @@ func (m *_AdsDiscoveryBlockAmsNetId) SerializeWithWriteBuffer(writeBuffer utils.
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockAmsNetId) isAdsDiscoveryBlockAmsNetId() bool {
@@ -243,7 +240,7 @@ func (m *_AdsDiscoveryBlockAmsNetId) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockFingerprint.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockFingerprint.go
index a970a26b4d..59c2e2bf09 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockFingerprint.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockFingerprint.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,12 +108,8 @@ func (m *_AdsDiscoveryBlockFingerprint) GetTypeName() string {
 	return "AdsDiscoveryBlockFingerprint"
 }
 
-func (m *_AdsDiscoveryBlockFingerprint) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockFingerprint) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockFingerprint) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Implicit Field (dataLen)
 	lengthInBits += 16
@@ -125,15 +122,15 @@ func (m *_AdsDiscoveryBlockFingerprint) GetLengthInBitsConditional(lastItem bool
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockFingerprint) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockFingerprint) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockFingerprintParse(theBytes []byte) (AdsDiscoveryBlockFingerprint, error) {
-	return AdsDiscoveryBlockFingerprintParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockFingerprintParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockFingerprintParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockFingerprint, error) {
+func AdsDiscoveryBlockFingerprintParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockFingerprint, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockFingerprint"); pullErr != nil {
@@ -169,14 +166,14 @@ func AdsDiscoveryBlockFingerprintParseWithBuffer(readBuffer utils.ReadBuffer) (A
 }
 
 func (m *_AdsDiscoveryBlockFingerprint) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockFingerprint) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockFingerprint) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -202,7 +199,7 @@ func (m *_AdsDiscoveryBlockFingerprint) SerializeWithWriteBuffer(writeBuffer uti
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockFingerprint) isAdsDiscoveryBlockFingerprint() bool {
@@ -214,7 +211,7 @@ func (m *_AdsDiscoveryBlockFingerprint) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockHostName.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockHostName.go
index 5ddce28140..087da8eb52 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockHostName.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockHostName.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,28 +108,24 @@ func (m *_AdsDiscoveryBlockHostName) GetTypeName() string {
 	return "AdsDiscoveryBlockHostName"
 }
 
-func (m *_AdsDiscoveryBlockHostName) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockHostName) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockHostName) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (hostName)
-	lengthInBits += m.HostName.GetLengthInBits()
+	lengthInBits += m.HostName.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockHostName) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockHostName) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockHostNameParse(theBytes []byte) (AdsDiscoveryBlockHostName, error) {
-	return AdsDiscoveryBlockHostNameParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockHostNameParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockHostNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockHostName, error) {
+func AdsDiscoveryBlockHostNameParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockHostName, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockHostName"); pullErr != nil {
@@ -141,7 +138,7 @@ func AdsDiscoveryBlockHostNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 	if pullErr := readBuffer.PullContext("hostName"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for hostName")
 	}
-	_hostName, _hostNameErr := AmsStringParseWithBuffer(readBuffer)
+	_hostName, _hostNameErr := AmsStringParseWithBuffer(ctx, readBuffer)
 	if _hostNameErr != nil {
 		return nil, errors.Wrap(_hostNameErr, "Error parsing 'hostName' field of AdsDiscoveryBlockHostName")
 	}
@@ -164,14 +161,14 @@ func AdsDiscoveryBlockHostNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 }
 
 func (m *_AdsDiscoveryBlockHostName) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockHostName) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockHostName) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -183,7 +180,7 @@ func (m *_AdsDiscoveryBlockHostName) SerializeWithWriteBuffer(writeBuffer utils.
 		if pushErr := writeBuffer.PushContext("hostName"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for hostName")
 		}
-		_hostNameErr := writeBuffer.WriteSerializable(m.GetHostName())
+		_hostNameErr := writeBuffer.WriteSerializable(ctx, m.GetHostName())
 		if popErr := writeBuffer.PopContext("hostName"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for hostName")
 		}
@@ -196,7 +193,7 @@ func (m *_AdsDiscoveryBlockHostName) SerializeWithWriteBuffer(writeBuffer utils.
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockHostName) isAdsDiscoveryBlockHostName() bool {
@@ -208,7 +205,7 @@ func (m *_AdsDiscoveryBlockHostName) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockOsData.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockOsData.go
index 0ee53097e4..727ac65855 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockOsData.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockOsData.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,12 +108,8 @@ func (m *_AdsDiscoveryBlockOsData) GetTypeName() string {
 	return "AdsDiscoveryBlockOsData"
 }
 
-func (m *_AdsDiscoveryBlockOsData) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockOsData) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockOsData) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Implicit Field (osDataLen)
 	lengthInBits += 16
@@ -125,15 +122,15 @@ func (m *_AdsDiscoveryBlockOsData) GetLengthInBitsConditional(lastItem bool) uin
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockOsData) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockOsData) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockOsDataParse(theBytes []byte) (AdsDiscoveryBlockOsData, error) {
-	return AdsDiscoveryBlockOsDataParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockOsDataParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockOsDataParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockOsData, error) {
+func AdsDiscoveryBlockOsDataParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockOsData, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockOsData"); pullErr != nil {
@@ -169,14 +166,14 @@ func AdsDiscoveryBlockOsDataParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDis
 }
 
 func (m *_AdsDiscoveryBlockOsData) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockOsData) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockOsData) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -202,7 +199,7 @@ func (m *_AdsDiscoveryBlockOsData) SerializeWithWriteBuffer(writeBuffer utils.Wr
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockOsData) isAdsDiscoveryBlockOsData() bool {
@@ -214,7 +211,7 @@ func (m *_AdsDiscoveryBlockOsData) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockPassword.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockPassword.go
index d361b14ea0..889ef63712 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockPassword.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockPassword.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,28 +108,24 @@ func (m *_AdsDiscoveryBlockPassword) GetTypeName() string {
 	return "AdsDiscoveryBlockPassword"
 }
 
-func (m *_AdsDiscoveryBlockPassword) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockPassword) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockPassword) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (password)
-	lengthInBits += m.Password.GetLengthInBits()
+	lengthInBits += m.Password.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockPassword) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockPassword) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockPasswordParse(theBytes []byte) (AdsDiscoveryBlockPassword, error) {
-	return AdsDiscoveryBlockPasswordParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockPasswordParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockPasswordParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockPassword, error) {
+func AdsDiscoveryBlockPasswordParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockPassword, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockPassword"); pullErr != nil {
@@ -141,7 +138,7 @@ func AdsDiscoveryBlockPasswordParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 	if pullErr := readBuffer.PullContext("password"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for password")
 	}
-	_password, _passwordErr := AmsStringParseWithBuffer(readBuffer)
+	_password, _passwordErr := AmsStringParseWithBuffer(ctx, readBuffer)
 	if _passwordErr != nil {
 		return nil, errors.Wrap(_passwordErr, "Error parsing 'password' field of AdsDiscoveryBlockPassword")
 	}
@@ -164,14 +161,14 @@ func AdsDiscoveryBlockPasswordParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 }
 
 func (m *_AdsDiscoveryBlockPassword) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockPassword) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockPassword) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -183,7 +180,7 @@ func (m *_AdsDiscoveryBlockPassword) SerializeWithWriteBuffer(writeBuffer utils.
 		if pushErr := writeBuffer.PushContext("password"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for password")
 		}
-		_passwordErr := writeBuffer.WriteSerializable(m.GetPassword())
+		_passwordErr := writeBuffer.WriteSerializable(ctx, m.GetPassword())
 		if popErr := writeBuffer.PopContext("password"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for password")
 		}
@@ -196,7 +193,7 @@ func (m *_AdsDiscoveryBlockPassword) SerializeWithWriteBuffer(writeBuffer utils.
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockPassword) isAdsDiscoveryBlockPassword() bool {
@@ -208,7 +205,7 @@ func (m *_AdsDiscoveryBlockPassword) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockRouteName.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockRouteName.go
index c4128a6d5a..8825252657 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockRouteName.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockRouteName.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,28 +108,24 @@ func (m *_AdsDiscoveryBlockRouteName) GetTypeName() string {
 	return "AdsDiscoveryBlockRouteName"
 }
 
-func (m *_AdsDiscoveryBlockRouteName) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockRouteName) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockRouteName) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (routeName)
-	lengthInBits += m.RouteName.GetLengthInBits()
+	lengthInBits += m.RouteName.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockRouteName) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockRouteName) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockRouteNameParse(theBytes []byte) (AdsDiscoveryBlockRouteName, error) {
-	return AdsDiscoveryBlockRouteNameParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockRouteNameParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockRouteNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockRouteName, error) {
+func AdsDiscoveryBlockRouteNameParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockRouteName, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockRouteName"); pullErr != nil {
@@ -141,7 +138,7 @@ func AdsDiscoveryBlockRouteNameParseWithBuffer(readBuffer utils.ReadBuffer) (Ads
 	if pullErr := readBuffer.PullContext("routeName"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for routeName")
 	}
-	_routeName, _routeNameErr := AmsStringParseWithBuffer(readBuffer)
+	_routeName, _routeNameErr := AmsStringParseWithBuffer(ctx, readBuffer)
 	if _routeNameErr != nil {
 		return nil, errors.Wrap(_routeNameErr, "Error parsing 'routeName' field of AdsDiscoveryBlockRouteName")
 	}
@@ -164,14 +161,14 @@ func AdsDiscoveryBlockRouteNameParseWithBuffer(readBuffer utils.ReadBuffer) (Ads
 }
 
 func (m *_AdsDiscoveryBlockRouteName) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockRouteName) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockRouteName) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -183,7 +180,7 @@ func (m *_AdsDiscoveryBlockRouteName) SerializeWithWriteBuffer(writeBuffer utils
 		if pushErr := writeBuffer.PushContext("routeName"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for routeName")
 		}
-		_routeNameErr := writeBuffer.WriteSerializable(m.GetRouteName())
+		_routeNameErr := writeBuffer.WriteSerializable(ctx, m.GetRouteName())
 		if popErr := writeBuffer.PopContext("routeName"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for routeName")
 		}
@@ -196,7 +193,7 @@ func (m *_AdsDiscoveryBlockRouteName) SerializeWithWriteBuffer(writeBuffer utils
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockRouteName) isAdsDiscoveryBlockRouteName() bool {
@@ -208,7 +205,7 @@ func (m *_AdsDiscoveryBlockRouteName) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockStatus.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockStatus.go
index 32795a4f86..88e986de02 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockStatus.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockStatus.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -124,12 +125,8 @@ func (m *_AdsDiscoveryBlockStatus) GetTypeName() string {
 	return "AdsDiscoveryBlockStatus"
 }
 
-func (m *_AdsDiscoveryBlockStatus) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockStatus) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockStatus) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Const Field (statusLength)
 	lengthInBits += 16
@@ -140,15 +137,15 @@ func (m *_AdsDiscoveryBlockStatus) GetLengthInBitsConditional(lastItem bool) uin
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockStatus) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockStatus) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockStatusParse(theBytes []byte) (AdsDiscoveryBlockStatus, error) {
-	return AdsDiscoveryBlockStatusParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockStatusParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockStatusParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockStatus, error) {
+func AdsDiscoveryBlockStatusParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockStatus, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockStatus"); pullErr != nil {
@@ -170,7 +167,7 @@ func AdsDiscoveryBlockStatusParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDis
 	if pullErr := readBuffer.PullContext("status"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for status")
 	}
-	_status, _statusErr := StatusParseWithBuffer(readBuffer)
+	_status, _statusErr := StatusParseWithBuffer(ctx, readBuffer)
 	if _statusErr != nil {
 		return nil, errors.Wrap(_statusErr, "Error parsing 'status' field of AdsDiscoveryBlockStatus")
 	}
@@ -193,14 +190,14 @@ func AdsDiscoveryBlockStatusParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDis
 }
 
 func (m *_AdsDiscoveryBlockStatus) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockStatus) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockStatus) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -218,7 +215,7 @@ func (m *_AdsDiscoveryBlockStatus) SerializeWithWriteBuffer(writeBuffer utils.Wr
 		if pushErr := writeBuffer.PushContext("status"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for status")
 		}
-		_statusErr := writeBuffer.WriteSerializable(m.GetStatus())
+		_statusErr := writeBuffer.WriteSerializable(ctx, m.GetStatus())
 		if popErr := writeBuffer.PopContext("status"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for status")
 		}
@@ -231,7 +228,7 @@ func (m *_AdsDiscoveryBlockStatus) SerializeWithWriteBuffer(writeBuffer utils.Wr
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockStatus) isAdsDiscoveryBlockStatus() bool {
@@ -243,7 +240,7 @@ func (m *_AdsDiscoveryBlockStatus) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockType.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockType.go
index 6ab9d6a394..9e2dedc863 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockType.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockType.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -129,19 +130,19 @@ func CastAdsDiscoveryBlockType(structType interface{}) AdsDiscoveryBlockType {
 	return castFunc(structType)
 }
 
-func (m AdsDiscoveryBlockType) GetLengthInBits() uint16 {
+func (m AdsDiscoveryBlockType) GetLengthInBits(ctx context.Context) uint16 {
 	return 16
 }
 
-func (m AdsDiscoveryBlockType) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m AdsDiscoveryBlockType) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
-func AdsDiscoveryBlockTypeParse(theBytes []byte) (AdsDiscoveryBlockType, error) {
-	return AdsDiscoveryBlockTypeParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+func AdsDiscoveryBlockTypeParse(ctx context.Context, theBytes []byte) (AdsDiscoveryBlockType, error) {
+	return AdsDiscoveryBlockTypeParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockTypeParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockType, error) {
+func AdsDiscoveryBlockTypeParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockType, error) {
 	val, err := readBuffer.ReadUint16("AdsDiscoveryBlockType", 16)
 	if err != nil {
 		return 0, errors.Wrap(err, "error reading AdsDiscoveryBlockType")
@@ -156,13 +157,13 @@ func AdsDiscoveryBlockTypeParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDisco
 
 func (e AdsDiscoveryBlockType) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased()
-	if err := e.SerializeWithWriteBuffer(wb); err != nil {
+	if err := e.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (e AdsDiscoveryBlockType) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (e AdsDiscoveryBlockType) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	return writeBuffer.WriteUint16("AdsDiscoveryBlockType", 16, uint16(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
 }
 
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockUserName.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockUserName.go
index 265d5c96a0..7f6f953fe4 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockUserName.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockUserName.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,28 +108,24 @@ func (m *_AdsDiscoveryBlockUserName) GetTypeName() string {
 	return "AdsDiscoveryBlockUserName"
 }
 
-func (m *_AdsDiscoveryBlockUserName) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockUserName) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockUserName) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (userName)
-	lengthInBits += m.UserName.GetLengthInBits()
+	lengthInBits += m.UserName.GetLengthInBits(ctx)
 
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockUserName) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockUserName) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockUserNameParse(theBytes []byte) (AdsDiscoveryBlockUserName, error) {
-	return AdsDiscoveryBlockUserNameParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockUserNameParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockUserNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockUserName, error) {
+func AdsDiscoveryBlockUserNameParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockUserName, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockUserName"); pullErr != nil {
@@ -141,7 +138,7 @@ func AdsDiscoveryBlockUserNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 	if pullErr := readBuffer.PullContext("userName"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for userName")
 	}
-	_userName, _userNameErr := AmsStringParseWithBuffer(readBuffer)
+	_userName, _userNameErr := AmsStringParseWithBuffer(ctx, readBuffer)
 	if _userNameErr != nil {
 		return nil, errors.Wrap(_userNameErr, "Error parsing 'userName' field of AdsDiscoveryBlockUserName")
 	}
@@ -164,14 +161,14 @@ func AdsDiscoveryBlockUserNameParseWithBuffer(readBuffer utils.ReadBuffer) (AdsD
 }
 
 func (m *_AdsDiscoveryBlockUserName) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockUserName) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockUserName) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -183,7 +180,7 @@ func (m *_AdsDiscoveryBlockUserName) SerializeWithWriteBuffer(writeBuffer utils.
 		if pushErr := writeBuffer.PushContext("userName"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for userName")
 		}
-		_userNameErr := writeBuffer.WriteSerializable(m.GetUserName())
+		_userNameErr := writeBuffer.WriteSerializable(ctx, m.GetUserName())
 		if popErr := writeBuffer.PopContext("userName"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for userName")
 		}
@@ -196,7 +193,7 @@ func (m *_AdsDiscoveryBlockUserName) SerializeWithWriteBuffer(writeBuffer utils.
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockUserName) isAdsDiscoveryBlockUserName() bool {
@@ -208,7 +205,7 @@ func (m *_AdsDiscoveryBlockUserName) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockVersion.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockVersion.go
index edcf5b1847..6da172be9b 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockVersion.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryBlockVersion.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -107,12 +108,8 @@ func (m *_AdsDiscoveryBlockVersion) GetTypeName() string {
 	return "AdsDiscoveryBlockVersion"
 }
 
-func (m *_AdsDiscoveryBlockVersion) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryBlockVersion) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDiscoveryBlockVersion) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Implicit Field (versionDataLen)
 	lengthInBits += 16
@@ -125,15 +122,15 @@ func (m *_AdsDiscoveryBlockVersion) GetLengthInBitsConditional(lastItem bool) ui
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryBlockVersion) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryBlockVersion) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryBlockVersionParse(theBytes []byte) (AdsDiscoveryBlockVersion, error) {
-	return AdsDiscoveryBlockVersionParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryBlockVersionParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryBlockVersionParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryBlockVersion, error) {
+func AdsDiscoveryBlockVersionParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryBlockVersion, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryBlockVersion"); pullErr != nil {
@@ -169,14 +166,14 @@ func AdsDiscoveryBlockVersionParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDi
 }
 
 func (m *_AdsDiscoveryBlockVersion) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryBlockVersion) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryBlockVersion) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -202,7 +199,7 @@ func (m *_AdsDiscoveryBlockVersion) SerializeWithWriteBuffer(writeBuffer utils.W
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDiscoveryBlockVersion) isAdsDiscoveryBlockVersion() bool {
@@ -214,7 +211,7 @@ func (m *_AdsDiscoveryBlockVersion) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryConstants.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryConstants.go
index 531d451ee0..129ad04302 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryConstants.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsDiscoveryConstants.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -81,11 +82,7 @@ func (m *_AdsDiscoveryConstants) GetTypeName() string {
 	return "AdsDiscoveryConstants"
 }
 
-func (m *_AdsDiscoveryConstants) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDiscoveryConstants) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsDiscoveryConstants) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Const Field (adsDiscoveryUdpDefaultPort)
@@ -94,15 +91,15 @@ func (m *_AdsDiscoveryConstants) GetLengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
-func (m *_AdsDiscoveryConstants) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDiscoveryConstants) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDiscoveryConstantsParse(theBytes []byte) (AdsDiscoveryConstants, error) {
-	return AdsDiscoveryConstantsParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDiscoveryConstantsParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDiscoveryConstantsParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDiscoveryConstants, error) {
+func AdsDiscoveryConstantsParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDiscoveryConstants, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDiscoveryConstants"); pullErr != nil {
@@ -129,14 +126,14 @@ func AdsDiscoveryConstantsParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDisco
 }
 
 func (m *_AdsDiscoveryConstants) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDiscoveryConstants) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDiscoveryConstants) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsDiscoveryConstants"); pushErr != nil {
@@ -164,7 +161,7 @@ func (m *_AdsDiscoveryConstants) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AdsPortNumbers.go b/plc4go/protocols/ads/discovery/readwrite/model/AdsPortNumbers.go
index 00022eac86..1014429e9f 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AdsPortNumbers.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AdsPortNumbers.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -153,19 +154,19 @@ func CastAdsPortNumbers(structType interface{}) AdsPortNumbers {
 	return castFunc(structType)
 }
 
-func (m AdsPortNumbers) GetLengthInBits() uint16 {
+func (m AdsPortNumbers) GetLengthInBits(ctx context.Context) uint16 {
 	return 16
 }
 
-func (m AdsPortNumbers) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m AdsPortNumbers) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
-func AdsPortNumbersParse(theBytes []byte) (AdsPortNumbers, error) {
-	return AdsPortNumbersParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+func AdsPortNumbersParse(ctx context.Context, theBytes []byte) (AdsPortNumbers, error) {
+	return AdsPortNumbersParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsPortNumbersParseWithBuffer(readBuffer utils.ReadBuffer) (AdsPortNumbers, error) {
+func AdsPortNumbersParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsPortNumbers, error) {
 	val, err := readBuffer.ReadUint16("AdsPortNumbers", 16)
 	if err != nil {
 		return 0, errors.Wrap(err, "error reading AdsPortNumbers")
@@ -180,13 +181,13 @@ func AdsPortNumbersParseWithBuffer(readBuffer utils.ReadBuffer) (AdsPortNumbers,
 
 func (e AdsPortNumbers) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased()
-	if err := e.SerializeWithWriteBuffer(wb); err != nil {
+	if err := e.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (e AdsPortNumbers) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (e AdsPortNumbers) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	return writeBuffer.WriteUint16("AdsPortNumbers", 16, uint16(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
 }
 
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AmsNetId.go b/plc4go/protocols/ads/discovery/readwrite/model/AmsNetId.go
index 949d0dfb22..0a02614385 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AmsNetId.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AmsNetId.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -115,11 +116,7 @@ func (m *_AmsNetId) GetTypeName() string {
 	return "AmsNetId"
 }
 
-func (m *_AmsNetId) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AmsNetId) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AmsNetId) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (octet1)
@@ -143,15 +140,15 @@ func (m *_AmsNetId) GetLengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *_AmsNetId) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AmsNetId) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AmsNetIdParse(theBytes []byte) (AmsNetId, error) {
-	return AmsNetIdParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AmsNetIdParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AmsNetIdParseWithBuffer(readBuffer utils.ReadBuffer) (AmsNetId, error) {
+func AmsNetIdParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AmsNetId, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AmsNetId"); pullErr != nil {
@@ -218,14 +215,14 @@ func AmsNetIdParseWithBuffer(readBuffer utils.ReadBuffer) (AmsNetId, error) {
 }
 
 func (m *_AmsNetId) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AmsNetId) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AmsNetId) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AmsNetId"); pushErr != nil {
@@ -289,7 +286,7 @@ func (m *_AmsNetId) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go b/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go
index d4369feee8..3c8114194d 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/AmsString.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -82,11 +83,7 @@ func (m *_AmsString) GetTypeName() string {
 	return "AmsString"
 }
 
-func (m *_AmsString) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AmsString) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AmsString) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Implicit Field (strLen)
@@ -101,15 +98,15 @@ func (m *_AmsString) GetLengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *_AmsString) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AmsString) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AmsStringParse(theBytes []byte) (AmsString, error) {
-	return AmsStringParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AmsStringParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AmsStringParseWithBuffer(readBuffer utils.ReadBuffer) (AmsString, error) {
+func AmsStringParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AmsString, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AmsString"); pullErr != nil {
@@ -161,14 +158,14 @@ func AmsStringParseWithBuffer(readBuffer utils.ReadBuffer) (AmsString, error) {
 }
 
 func (m *_AmsString) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AmsString) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AmsString) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AmsString"); pushErr != nil {
@@ -220,7 +217,7 @@ func (m *_AmsString) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/Operation.go b/plc4go/protocols/ads/discovery/readwrite/model/Operation.go
index f8f54268de..1fdfe30bbf 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/Operation.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/Operation.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -123,19 +124,19 @@ func CastOperation(structType interface{}) Operation {
 	return castFunc(structType)
 }
 
-func (m Operation) GetLengthInBits() uint16 {
+func (m Operation) GetLengthInBits(ctx context.Context) uint16 {
 	return 32
 }
 
-func (m Operation) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m Operation) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
-func OperationParse(theBytes []byte) (Operation, error) {
-	return OperationParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+func OperationParse(ctx context.Context, theBytes []byte) (Operation, error) {
+	return OperationParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes))
 }
 
-func OperationParseWithBuffer(readBuffer utils.ReadBuffer) (Operation, error) {
+func OperationParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (Operation, error) {
 	val, err := readBuffer.ReadUint32("Operation", 32)
 	if err != nil {
 		return 0, errors.Wrap(err, "error reading Operation")
@@ -150,13 +151,13 @@ func OperationParseWithBuffer(readBuffer utils.ReadBuffer) (Operation, error) {
 
 func (e Operation) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased()
-	if err := e.SerializeWithWriteBuffer(wb); err != nil {
+	if err := e.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (e Operation) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (e Operation) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	return writeBuffer.WriteUint32("Operation", 32, uint32(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
 }
 
diff --git a/plc4go/protocols/ads/discovery/readwrite/model/Status.go b/plc4go/protocols/ads/discovery/readwrite/model/Status.go
index d3b762978b..8094ed3bb8 100644
--- a/plc4go/protocols/ads/discovery/readwrite/model/Status.go
+++ b/plc4go/protocols/ads/discovery/readwrite/model/Status.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -93,19 +94,19 @@ func CastStatus(structType interface{}) Status {
 	return castFunc(structType)
 }
 
-func (m Status) GetLengthInBits() uint16 {
+func (m Status) GetLengthInBits(ctx context.Context) uint16 {
 	return 32
 }
 
-func (m Status) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m Status) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
-func StatusParse(theBytes []byte) (Status, error) {
-	return StatusParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+func StatusParse(ctx context.Context, theBytes []byte) (Status, error) {
+	return StatusParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes))
 }
 
-func StatusParseWithBuffer(readBuffer utils.ReadBuffer) (Status, error) {
+func StatusParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (Status, error) {
 	val, err := readBuffer.ReadUint32("Status", 32)
 	if err != nil {
 		return 0, errors.Wrap(err, "error reading Status")
@@ -120,13 +121,13 @@ func StatusParseWithBuffer(readBuffer utils.ReadBuffer) (Status, error) {
 
 func (e Status) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased()
-	if err := e.SerializeWithWriteBuffer(wb); err != nil {
+	if err := e.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (e Status) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (e Status) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	return writeBuffer.WriteUint32("Status", 32, uint32(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
 }
 
diff --git a/plc4go/protocols/ads/readwrite/ParserHelper.go b/plc4go/protocols/ads/readwrite/ParserHelper.go
index 09b014f39b..cec94298e3 100644
--- a/plc4go/protocols/ads/readwrite/ParserHelper.go
+++ b/plc4go/protocols/ads/readwrite/ParserHelper.go
@@ -20,6 +20,8 @@
 package readwrite
 
 import (
+	"context"
+
 	"github.com/apache/plc4x/plc4go/protocols/ads/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -33,46 +35,46 @@ type AdsParserHelper struct {
 func (m AdsParserHelper) Parse(typeName string, arguments []string, io utils.ReadBuffer) (interface{}, error) {
 	switch typeName {
 	case "AmsSerialFrame":
-		return model.AmsSerialFrameParseWithBuffer(io)
+		return model.AmsSerialFrameParseWithBuffer(context.Background(), io)
 	case "DataItem":
 		plcValueType, _ := model.PlcValueTypeByName(arguments[0])
 		stringLength, err := utils.StrToInt32(arguments[1])
 		if err != nil {
 			return nil, errors.Wrap(err, "Error parsing")
 		}
-		return model.DataItemParseWithBuffer(io, plcValueType, stringLength)
+		return model.DataItemParseWithBuffer(context.Background(), io, plcValueType, stringLength)
 	case "AdsTableSizes":
-		return model.AdsTableSizesParseWithBuffer(io)
+		return model.AdsTableSizesParseWithBuffer(context.Background(), io)
 	case "AdsMultiRequestItem":
 		indexGroup, err := utils.StrToUint32(arguments[0])
 		if err != nil {
 			return nil, errors.Wrap(err, "Error parsing")
 		}
-		return model.AdsMultiRequestItemParseWithBuffer(io, indexGroup)
+		return model.AdsMultiRequestItemParseWithBuffer(context.Background(), io, indexGroup)
 	case "AmsSerialAcknowledgeFrame":
-		return model.AmsSerialAcknowledgeFrameParseWithBuffer(io)
+		return model.AmsSerialAcknowledgeFrameParseWithBuffer(context.Background(), io)
 	case "AdsDataTypeArrayInfo":
-		return model.AdsDataTypeArrayInfoParseWithBuffer(io)
+		return model.AdsDataTypeArrayInfoParseWithBuffer(context.Background(), io)
 	case "AdsDataTypeTableEntry":
-		return model.AdsDataTypeTableEntryParseWithBuffer(io)
+		return model.AdsDataTypeTableEntryParseWithBuffer(context.Background(), io)
 	case "AmsNetId":
-		return model.AmsNetIdParseWithBuffer(io)
+		return model.AmsNetIdParseWithBuffer(context.Background(), io)
 	case "AdsStampHeader":
-		return model.AdsStampHeaderParseWithBuffer(io)
+		return model.AdsStampHeaderParseWithBuffer(context.Background(), io)
 	case "AmsSerialResetFrame":
-		return model.AmsSerialResetFrameParseWithBuffer(io)
+		return model.AmsSerialResetFrameParseWithBuffer(context.Background(), io)
 	case "AdsDataTypeTableChildEntry":
-		return model.AdsDataTypeTableChildEntryParseWithBuffer(io)
+		return model.AdsDataTypeTableChildEntryParseWithBuffer(context.Background(), io)
 	case "AdsConstants":
-		return model.AdsConstantsParseWithBuffer(io)
+		return model.AdsConstantsParseWithBuffer(context.Background(), io)
 	case "AdsNotificationSample":
-		return model.AdsNotificationSampleParseWithBuffer(io)
+		return model.AdsNotificationSampleParseWithBuffer(context.Background(), io)
 	case "AdsSymbolTableEntry":
-		return model.AdsSymbolTableEntryParseWithBuffer(io)
+		return model.AdsSymbolTableEntryParseWithBuffer(context.Background(), io)
 	case "AmsTCPPacket":
-		return model.AmsTCPPacketParseWithBuffer(io)
+		return model.AmsTCPPacketParseWithBuffer(context.Background(), io)
 	case "AmsPacket":
-		return model.AmsPacketParseWithBuffer(io)
+		return model.AmsPacketParseWithBuffer(context.Background(), io)
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/protocols/ads/readwrite/XmlParserHelper.go b/plc4go/protocols/ads/readwrite/XmlParserHelper.go
index c3874ef5a4..286ba1c17e 100644
--- a/plc4go/protocols/ads/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/ads/readwrite/XmlParserHelper.go
@@ -20,11 +20,13 @@
 package readwrite
 
 import (
+	"context"
+	"strconv"
+	"strings"
+
 	"github.com/apache/plc4x/plc4go/protocols/ads/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
-	"strconv"
-	"strings"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -43,7 +45,7 @@ func init() {
 func (m AdsXmlParserHelper) Parse(typeName string, xmlString string, parserArguments ...string) (interface{}, error) {
 	switch typeName {
 	case "AmsSerialFrame":
-		return model.AmsSerialFrameParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsSerialFrameParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "DataItem":
 		plcValueType, _ := model.PlcValueTypeByName(parserArguments[0])
 		parsedInt1, err := strconv.ParseInt(parserArguments[1], 10, 32)
@@ -51,40 +53,40 @@ func (m AdsXmlParserHelper) Parse(typeName string, xmlString string, parserArgum
 			return nil, err
 		}
 		stringLength := int32(parsedInt1)
-		return model.DataItemParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), plcValueType, stringLength)
+		return model.DataItemParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)), plcValueType, stringLength)
 	case "AdsTableSizes":
-		return model.AdsTableSizesParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsTableSizesParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsMultiRequestItem":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 32)
 		if err != nil {
 			return nil, err
 		}
 		indexGroup := uint32(parsedUint0)
-		return model.AdsMultiRequestItemParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), indexGroup)
+		return model.AdsMultiRequestItemParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)), indexGroup)
 	case "AmsSerialAcknowledgeFrame":
-		return model.AmsSerialAcknowledgeFrameParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsSerialAcknowledgeFrameParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsDataTypeArrayInfo":
-		return model.AdsDataTypeArrayInfoParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsDataTypeArrayInfoParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsDataTypeTableEntry":
-		return model.AdsDataTypeTableEntryParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsDataTypeTableEntryParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AmsNetId":
-		return model.AmsNetIdParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsNetIdParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsStampHeader":
-		return model.AdsStampHeaderParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsStampHeaderParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AmsSerialResetFrame":
-		return model.AmsSerialResetFrameParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsSerialResetFrameParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsDataTypeTableChildEntry":
-		return model.AdsDataTypeTableChildEntryParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsDataTypeTableChildEntryParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsConstants":
-		return model.AdsConstantsParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsConstantsParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsNotificationSample":
-		return model.AdsNotificationSampleParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsNotificationSampleParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AdsSymbolTableEntry":
-		return model.AdsSymbolTableEntryParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AdsSymbolTableEntryParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AmsTCPPacket":
-		return model.AmsTCPPacketParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsTCPPacketParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AmsPacket":
-		return model.AmsPacketParseWithBuffer(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
+		return model.AmsPacketParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	}
 	return nil, errors.Errorf("Unsupported type %s", typeName)
 }
diff --git a/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go b/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
index f3a0796479..87afa57e06 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -161,12 +162,8 @@ func (m *_AdsAddDeviceNotificationRequest) GetTypeName() string {
 	return "AdsAddDeviceNotificationRequest"
 }
 
-func (m *_AdsAddDeviceNotificationRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsAddDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsAddDeviceNotificationRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -195,15 +192,15 @@ func (m *_AdsAddDeviceNotificationRequest) GetLengthInBitsConditional(lastItem b
 	return lengthInBits
 }
 
-func (m *_AdsAddDeviceNotificationRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsAddDeviceNotificationRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsAddDeviceNotificationRequestParse(theBytes []byte) (AdsAddDeviceNotificationRequest, error) {
-	return AdsAddDeviceNotificationRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsAddDeviceNotificationRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsAddDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsAddDeviceNotificationRequest, error) {
+func AdsAddDeviceNotificationRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsAddDeviceNotificationRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsAddDeviceNotificationRequest"); pullErr != nil {
@@ -237,7 +234,7 @@ func AdsAddDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer)
 	if pullErr := readBuffer.PullContext("transmissionMode"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for transmissionMode")
 	}
-	_transmissionMode, _transmissionModeErr := AdsTransModeParseWithBuffer(readBuffer)
+	_transmissionMode, _transmissionModeErr := AdsTransModeParseWithBuffer(ctx, readBuffer)
 	if _transmissionModeErr != nil {
 		return nil, errors.Wrap(_transmissionModeErr, "Error parsing 'transmissionMode' field of AdsAddDeviceNotificationRequest")
 	}
@@ -315,14 +312,14 @@ func AdsAddDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer)
 }
 
 func (m *_AdsAddDeviceNotificationRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsAddDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsAddDeviceNotificationRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -355,7 +352,7 @@ func (m *_AdsAddDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer
 		if pushErr := writeBuffer.PushContext("transmissionMode"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for transmissionMode")
 		}
-		_transmissionModeErr := writeBuffer.WriteSerializable(m.GetTransmissionMode())
+		_transmissionModeErr := writeBuffer.WriteSerializable(ctx, m.GetTransmissionMode())
 		if popErr := writeBuffer.PopContext("transmissionMode"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for transmissionMode")
 		}
@@ -414,7 +411,7 @@ func (m *_AdsAddDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsAddDeviceNotificationRequest) isAdsAddDeviceNotificationRequest() bool {
@@ -426,7 +423,7 @@ func (m *_AdsAddDeviceNotificationRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationResponse.go b/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
index 66879173f5..34bdf7c721 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -126,12 +127,8 @@ func (m *_AdsAddDeviceNotificationResponse) GetTypeName() string {
 	return "AdsAddDeviceNotificationResponse"
 }
 
-func (m *_AdsAddDeviceNotificationResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsAddDeviceNotificationResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsAddDeviceNotificationResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -142,15 +139,15 @@ func (m *_AdsAddDeviceNotificationResponse) GetLengthInBitsConditional(lastItem
 	return lengthInBits
 }
 
-func (m *_AdsAddDeviceNotificationResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsAddDeviceNotificationResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsAddDeviceNotificationResponseParse(theBytes []byte) (AdsAddDeviceNotificationResponse, error) {
-	return AdsAddDeviceNotificationResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsAddDeviceNotificationResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsAddDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsAddDeviceNotificationResponse, error) {
+func AdsAddDeviceNotificationResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsAddDeviceNotificationResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsAddDeviceNotificationResponse"); pullErr != nil {
@@ -163,7 +160,7 @@ func AdsAddDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuffer
 	if pullErr := readBuffer.PullContext("result"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for result")
 	}
-	_result, _resultErr := ReturnCodeParseWithBuffer(readBuffer)
+	_result, _resultErr := ReturnCodeParseWithBuffer(ctx, readBuffer)
 	if _resultErr != nil {
 		return nil, errors.Wrap(_resultErr, "Error parsing 'result' field of AdsAddDeviceNotificationResponse")
 	}
@@ -194,14 +191,14 @@ func AdsAddDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuffer
 }
 
 func (m *_AdsAddDeviceNotificationResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsAddDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsAddDeviceNotificationResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -213,7 +210,7 @@ func (m *_AdsAddDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuffer
 		if pushErr := writeBuffer.PushContext("result"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for result")
 		}
-		_resultErr := writeBuffer.WriteSerializable(m.GetResult())
+		_resultErr := writeBuffer.WriteSerializable(ctx, m.GetResult())
 		if popErr := writeBuffer.PopContext("result"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for result")
 		}
@@ -233,7 +230,7 @@ func (m *_AdsAddDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuffer
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsAddDeviceNotificationResponse) isAdsAddDeviceNotificationResponse() bool {
@@ -245,7 +242,7 @@ func (m *_AdsAddDeviceNotificationResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsConstants.go b/plc4go/protocols/ads/readwrite/model/AdsConstants.go
index 923e0efb62..8cc77a6369 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsConstants.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsConstants.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -81,11 +82,7 @@ func (m *_AdsConstants) GetTypeName() string {
 	return "AdsConstants"
 }
 
-func (m *_AdsConstants) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsConstants) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsConstants) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Const Field (adsTcpDefaultPort)
@@ -94,15 +91,15 @@ func (m *_AdsConstants) GetLengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *_AdsConstants) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsConstants) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsConstantsParse(theBytes []byte) (AdsConstants, error) {
-	return AdsConstantsParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsConstantsParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsConstantsParseWithBuffer(readBuffer utils.ReadBuffer) (AdsConstants, error) {
+func AdsConstantsParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsConstants, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsConstants"); pullErr != nil {
@@ -129,14 +126,14 @@ func AdsConstantsParseWithBuffer(readBuffer utils.ReadBuffer) (AdsConstants, err
 }
 
 func (m *_AdsConstants) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsConstants) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsConstants) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsConstants"); pushErr != nil {
@@ -164,7 +161,7 @@ func (m *_AdsConstants) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataType.go b/plc4go/protocols/ads/readwrite/model/AdsDataType.go
index 468b527558..ff367111e8 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataType.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataType.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -672,19 +673,19 @@ func CastAdsDataType(structType interface{}) AdsDataType {
 	return castFunc(structType)
 }
 
-func (m AdsDataType) GetLengthInBits() uint16 {
+func (m AdsDataType) GetLengthInBits(ctx context.Context) uint16 {
 	return 8
 }
 
-func (m AdsDataType) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m AdsDataType) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
-func AdsDataTypeParse(theBytes []byte) (AdsDataType, error) {
-	return AdsDataTypeParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+func AdsDataTypeParse(ctx context.Context, theBytes []byte) (AdsDataType, error) {
+	return AdsDataTypeParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDataTypeParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataType, error) {
+func AdsDataTypeParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDataType, error) {
 	val, err := readBuffer.ReadInt8("AdsDataType", 8)
 	if err != nil {
 		return 0, errors.Wrap(err, "error reading AdsDataType")
@@ -699,13 +700,13 @@ func AdsDataTypeParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataType, error
 
 func (e AdsDataType) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased()
-	if err := e.SerializeWithWriteBuffer(wb); err != nil {
+	if err := e.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (e AdsDataType) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (e AdsDataType) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	return writeBuffer.WriteInt8("AdsDataType", 8, int8(e), utils.WithAdditionalStringRepresentation(e.PLC4XEnumName()))
 }
 
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataTypeArrayInfo.go b/plc4go/protocols/ads/readwrite/model/AdsDataTypeArrayInfo.go
index eb5ef999f9..1ba22b5563 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataTypeArrayInfo.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataTypeArrayInfo.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -75,6 +76,8 @@ func (m *_AdsDataTypeArrayInfo) GetNumElements() uint32 {
 ///////////////////////
 
 func (m *_AdsDataTypeArrayInfo) GetUpperBound() uint32 {
+	ctx := context.Background()
+	_ = ctx
 	return uint32(uint32(m.GetLowerBound()) + uint32(m.GetNumElements()))
 }
 
@@ -103,11 +106,7 @@ func (m *_AdsDataTypeArrayInfo) GetTypeName() string {
 	return "AdsDataTypeArrayInfo"
 }
 
-func (m *_AdsDataTypeArrayInfo) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDataTypeArrayInfo) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsDataTypeArrayInfo) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (lowerBound)
@@ -121,15 +120,15 @@ func (m *_AdsDataTypeArrayInfo) GetLengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *_AdsDataTypeArrayInfo) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDataTypeArrayInfo) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDataTypeArrayInfoParse(theBytes []byte) (AdsDataTypeArrayInfo, error) {
-	return AdsDataTypeArrayInfoParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
+	return AdsDataTypeArrayInfoParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
 }
 
-func AdsDataTypeArrayInfoParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataTypeArrayInfo, error) {
+func AdsDataTypeArrayInfoParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDataTypeArrayInfo, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDataTypeArrayInfo"); pullErr != nil {
@@ -169,14 +168,14 @@ func AdsDataTypeArrayInfoParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataTy
 }
 
 func (m *_AdsDataTypeArrayInfo) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDataTypeArrayInfo) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDataTypeArrayInfo) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsDataTypeArrayInfo"); pushErr != nil {
@@ -197,7 +196,7 @@ func (m *_AdsDataTypeArrayInfo) SerializeWithWriteBuffer(writeBuffer utils.Write
 		return errors.Wrap(_numElementsErr, "Error serializing 'numElements' field")
 	}
 	// Virtual field
-	if _upperBoundErr := writeBuffer.WriteVirtual("upperBound", m.GetUpperBound()); _upperBoundErr != nil {
+	if _upperBoundErr := writeBuffer.WriteVirtual(ctx, "upperBound", m.GetUpperBound()); _upperBoundErr != nil {
 		return errors.Wrap(_upperBoundErr, "Error serializing 'upperBound' field")
 	}
 
@@ -216,7 +215,7 @@ func (m *_AdsDataTypeArrayInfo) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go
index 03e9a2ae99..3ef3569736 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go
@@ -20,8 +20,10 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"fmt"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -213,11 +215,7 @@ func (m *_AdsDataTypeTableChildEntry) GetTypeName() string {
 	return "AdsDataTypeTableChildEntry"
 }
 
-func (m *_AdsDataTypeTableChildEntry) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDataTypeTableChildEntry) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsDataTypeTableChildEntry) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (entryLength)
@@ -279,17 +277,21 @@ func (m *_AdsDataTypeTableChildEntry) GetLengthInBitsConditional(lastItem bool)
 
 	// Array field
 	if len(m.ArrayInfo) > 0 {
-		for i, element := range m.ArrayInfo {
-			last := i == len(m.ArrayInfo)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.ArrayInfo {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ArrayInfo), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
 	// Array field
 	if len(m.Children) > 0 {
-		for i, element := range m.Children {
-			last := i == len(m.Children)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.Children {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Children), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
@@ -301,15 +303,15 @@ func (m *_AdsDataTypeTableChildEntry) GetLengthInBitsConditional(lastItem bool)
 	return lengthInBits
 }
 
-func (m *_AdsDataTypeTableChildEntry) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDataTypeTableChildEntry) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDataTypeTableChildEntryParse(theBytes []byte) (AdsDataTypeTableChildEntry, error) {
-	return AdsDataTypeTableChildEntryParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
+	return AdsDataTypeTableChildEntryParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
 }
 
-func AdsDataTypeTableChildEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataTypeTableChildEntry, error) {
+func AdsDataTypeTableChildEntryParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDataTypeTableChildEntry, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDataTypeTableChildEntry"); pullErr != nil {
@@ -470,12 +472,16 @@ func AdsDataTypeTableChildEntryParseWithBuffer(readBuffer utils.ReadBuffer) (Ads
 		arrayInfo = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(arrayDimensions); curItem++ {
-			_item, _err := AdsDataTypeArrayInfoParseWithBuffer(readBuffer)
+		_numItems := uint16(arrayDimensions)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsDataTypeArrayInfoParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'arrayInfo' field of AdsDataTypeTableChildEntry")
 			}
-			arrayInfo[curItem] = _item.(AdsDataTypeArrayInfo)
+			arrayInfo[_curItem] = _item.(AdsDataTypeArrayInfo)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("arrayInfo", utils.WithRenderAsList(true)); closeErr != nil {
@@ -493,12 +499,16 @@ func AdsDataTypeTableChildEntryParseWithBuffer(readBuffer utils.ReadBuffer) (Ads
 		children = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(numChildren); curItem++ {
-			_item, _err := AdsDataTypeTableEntryParseWithBuffer(readBuffer)
+		_numItems := uint16(numChildren)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsDataTypeTableEntryParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'children' field of AdsDataTypeTableChildEntry")
 			}
-			children[curItem] = _item.(AdsDataTypeTableEntry)
+			children[_curItem] = _item.(AdsDataTypeTableEntry)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("children", utils.WithRenderAsList(true)); closeErr != nil {
@@ -537,14 +547,14 @@ func AdsDataTypeTableChildEntryParseWithBuffer(readBuffer utils.ReadBuffer) (Ads
 }
 
 func (m *_AdsDataTypeTableChildEntry) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDataTypeTableChildEntry) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDataTypeTableChildEntry) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsDataTypeTableChildEntry"); pushErr != nil {
@@ -685,8 +695,11 @@ func (m *_AdsDataTypeTableChildEntry) SerializeWithWriteBuffer(writeBuffer utils
 	if pushErr := writeBuffer.PushContext("arrayInfo", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for arrayInfo")
 	}
-	for _, _element := range m.GetArrayInfo() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
+	for _curItem, _element := range m.GetArrayInfo() {
+		_ = _curItem
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetArrayInfo()), _curItem)
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'arrayInfo' field")
 		}
@@ -699,8 +712,11 @@ func (m *_AdsDataTypeTableChildEntry) SerializeWithWriteBuffer(writeBuffer utils
 	if pushErr := writeBuffer.PushContext("children", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for children")
 	}
-	for _, _element := range m.GetChildren() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
+	for _curItem, _element := range m.GetChildren() {
+		_ = _curItem
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetChildren()), _curItem)
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'children' field")
 		}
@@ -730,7 +746,7 @@ func (m *_AdsDataTypeTableChildEntry) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go
index 263f97f5df..8fe01dc3ee 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go
@@ -20,8 +20,10 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"fmt"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -213,11 +215,7 @@ func (m *_AdsDataTypeTableEntry) GetTypeName() string {
 	return "AdsDataTypeTableEntry"
 }
 
-func (m *_AdsDataTypeTableEntry) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDataTypeTableEntry) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsDataTypeTableEntry) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (entryLength)
@@ -279,17 +277,21 @@ func (m *_AdsDataTypeTableEntry) GetLengthInBitsConditional(lastItem bool) uint1
 
 	// Array field
 	if len(m.ArrayInfo) > 0 {
-		for i, element := range m.ArrayInfo {
-			last := i == len(m.ArrayInfo)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.ArrayInfo {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.ArrayInfo), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
 	// Array field
 	if len(m.Children) > 0 {
-		for i, element := range m.Children {
-			last := i == len(m.Children)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.Children {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Children), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
@@ -301,15 +303,15 @@ func (m *_AdsDataTypeTableEntry) GetLengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
-func (m *_AdsDataTypeTableEntry) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDataTypeTableEntry) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDataTypeTableEntryParse(theBytes []byte) (AdsDataTypeTableEntry, error) {
-	return AdsDataTypeTableEntryParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
+	return AdsDataTypeTableEntryParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
 }
 
-func AdsDataTypeTableEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataTypeTableEntry, error) {
+func AdsDataTypeTableEntryParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDataTypeTableEntry, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDataTypeTableEntry"); pullErr != nil {
@@ -470,12 +472,16 @@ func AdsDataTypeTableEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataT
 		arrayInfo = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(arrayDimensions); curItem++ {
-			_item, _err := AdsDataTypeArrayInfoParseWithBuffer(readBuffer)
+		_numItems := uint16(arrayDimensions)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsDataTypeArrayInfoParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'arrayInfo' field of AdsDataTypeTableEntry")
 			}
-			arrayInfo[curItem] = _item.(AdsDataTypeArrayInfo)
+			arrayInfo[_curItem] = _item.(AdsDataTypeArrayInfo)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("arrayInfo", utils.WithRenderAsList(true)); closeErr != nil {
@@ -493,12 +499,16 @@ func AdsDataTypeTableEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataT
 		children = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(numChildren); curItem++ {
-			_item, _err := AdsDataTypeTableChildEntryParseWithBuffer(readBuffer)
+		_numItems := uint16(numChildren)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsDataTypeTableChildEntryParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'children' field of AdsDataTypeTableEntry")
 			}
-			children[curItem] = _item.(AdsDataTypeTableChildEntry)
+			children[_curItem] = _item.(AdsDataTypeTableChildEntry)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("children", utils.WithRenderAsList(true)); closeErr != nil {
@@ -537,14 +547,14 @@ func AdsDataTypeTableEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDataT
 }
 
 func (m *_AdsDataTypeTableEntry) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDataTypeTableEntry) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDataTypeTableEntry) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsDataTypeTableEntry"); pushErr != nil {
@@ -685,8 +695,11 @@ func (m *_AdsDataTypeTableEntry) SerializeWithWriteBuffer(writeBuffer utils.Writ
 	if pushErr := writeBuffer.PushContext("arrayInfo", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for arrayInfo")
 	}
-	for _, _element := range m.GetArrayInfo() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
+	for _curItem, _element := range m.GetArrayInfo() {
+		_ = _curItem
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetArrayInfo()), _curItem)
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'arrayInfo' field")
 		}
@@ -699,8 +712,11 @@ func (m *_AdsDataTypeTableEntry) SerializeWithWriteBuffer(writeBuffer utils.Writ
 	if pushErr := writeBuffer.PushContext("children", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for children")
 	}
-	for _, _element := range m.GetChildren() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
+	for _curItem, _element := range m.GetChildren() {
+		_ = _curItem
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetChildren()), _curItem)
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'children' field")
 		}
@@ -730,7 +746,7 @@ func (m *_AdsDataTypeTableEntry) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go b/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
index e6c0b3094f..a3d9588a4a 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -118,12 +119,8 @@ func (m *_AdsDeleteDeviceNotificationRequest) GetTypeName() string {
 	return "AdsDeleteDeviceNotificationRequest"
 }
 
-func (m *_AdsDeleteDeviceNotificationRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDeleteDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDeleteDeviceNotificationRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (notificationHandle)
 	lengthInBits += 32
@@ -131,15 +128,15 @@ func (m *_AdsDeleteDeviceNotificationRequest) GetLengthInBitsConditional(lastIte
 	return lengthInBits
 }
 
-func (m *_AdsDeleteDeviceNotificationRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDeleteDeviceNotificationRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDeleteDeviceNotificationRequestParse(theBytes []byte) (AdsDeleteDeviceNotificationRequest, error) {
-	return AdsDeleteDeviceNotificationRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDeleteDeviceNotificationRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDeleteDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDeleteDeviceNotificationRequest, error) {
+func AdsDeleteDeviceNotificationRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDeleteDeviceNotificationRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDeleteDeviceNotificationRequest"); pullErr != nil {
@@ -169,14 +166,14 @@ func AdsDeleteDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuff
 }
 
 func (m *_AdsDeleteDeviceNotificationRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDeleteDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDeleteDeviceNotificationRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -196,7 +193,7 @@ func (m *_AdsDeleteDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuff
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDeleteDeviceNotificationRequest) isAdsDeleteDeviceNotificationRequest() bool {
@@ -208,7 +205,7 @@ func (m *_AdsDeleteDeviceNotificationRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go b/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
index 887cfba5ac..bec09b916c 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -118,12 +119,8 @@ func (m *_AdsDeleteDeviceNotificationResponse) GetTypeName() string {
 	return "AdsDeleteDeviceNotificationResponse"
 }
 
-func (m *_AdsDeleteDeviceNotificationResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDeleteDeviceNotificationResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDeleteDeviceNotificationResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -131,15 +128,15 @@ func (m *_AdsDeleteDeviceNotificationResponse) GetLengthInBitsConditional(lastIt
 	return lengthInBits
 }
 
-func (m *_AdsDeleteDeviceNotificationResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDeleteDeviceNotificationResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDeleteDeviceNotificationResponseParse(theBytes []byte) (AdsDeleteDeviceNotificationResponse, error) {
-	return AdsDeleteDeviceNotificationResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDeleteDeviceNotificationResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDeleteDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDeleteDeviceNotificationResponse, error) {
+func AdsDeleteDeviceNotificationResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDeleteDeviceNotificationResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDeleteDeviceNotificationResponse"); pullErr != nil {
@@ -152,7 +149,7 @@ func AdsDeleteDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuf
 	if pullErr := readBuffer.PullContext("result"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for result")
 	}
-	_result, _resultErr := ReturnCodeParseWithBuffer(readBuffer)
+	_result, _resultErr := ReturnCodeParseWithBuffer(ctx, readBuffer)
 	if _resultErr != nil {
 		return nil, errors.Wrap(_resultErr, "Error parsing 'result' field of AdsDeleteDeviceNotificationResponse")
 	}
@@ -175,14 +172,14 @@ func AdsDeleteDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuf
 }
 
 func (m *_AdsDeleteDeviceNotificationResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDeleteDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDeleteDeviceNotificationResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -194,7 +191,7 @@ func (m *_AdsDeleteDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuf
 		if pushErr := writeBuffer.PushContext("result"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for result")
 		}
-		_resultErr := writeBuffer.WriteSerializable(m.GetResult())
+		_resultErr := writeBuffer.WriteSerializable(ctx, m.GetResult())
 		if popErr := writeBuffer.PopContext("result"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for result")
 		}
@@ -207,7 +204,7 @@ func (m *_AdsDeleteDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuf
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDeleteDeviceNotificationResponse) isAdsDeleteDeviceNotificationResponse() bool {
@@ -219,7 +216,7 @@ func (m *_AdsDeleteDeviceNotificationResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go b/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go
index 226d4dc631..188a09d0ec 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go
@@ -20,6 +20,8 @@
 package model
 
 import (
+	"context"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -134,12 +136,8 @@ func (m *_AdsDeviceNotificationRequest) GetTypeName() string {
 	return "AdsDeviceNotificationRequest"
 }
 
-func (m *_AdsDeviceNotificationRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDeviceNotificationRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (length)
 	lengthInBits += 32
@@ -149,24 +147,26 @@ func (m *_AdsDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool
 
 	// Array field
 	if len(m.AdsStampHeaders) > 0 {
-		for i, element := range m.AdsStampHeaders {
-			last := i == len(m.AdsStampHeaders)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.AdsStampHeaders {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.AdsStampHeaders), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m *_AdsDeviceNotificationRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDeviceNotificationRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDeviceNotificationRequestParse(theBytes []byte) (AdsDeviceNotificationRequest, error) {
-	return AdsDeviceNotificationRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDeviceNotificationRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDeviceNotificationRequest, error) {
+func AdsDeviceNotificationRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDeviceNotificationRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDeviceNotificationRequest"); pullErr != nil {
@@ -200,12 +200,16 @@ func AdsDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer) (A
 		adsStampHeaders = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(stamps); curItem++ {
-			_item, _err := AdsStampHeaderParseWithBuffer(readBuffer)
+		_numItems := uint16(stamps)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsStampHeaderParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'adsStampHeaders' field of AdsDeviceNotificationRequest")
 			}
-			adsStampHeaders[curItem] = _item.(AdsStampHeader)
+			adsStampHeaders[_curItem] = _item.(AdsStampHeader)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("adsStampHeaders", utils.WithRenderAsList(true)); closeErr != nil {
@@ -228,14 +232,14 @@ func AdsDeviceNotificationRequestParseWithBuffer(readBuffer utils.ReadBuffer) (A
 }
 
 func (m *_AdsDeviceNotificationRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDeviceNotificationRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -261,8 +265,11 @@ func (m *_AdsDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer uti
 		if pushErr := writeBuffer.PushContext("adsStampHeaders", utils.WithRenderAsList(true)); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for adsStampHeaders")
 		}
-		for _, _element := range m.GetAdsStampHeaders() {
-			_elementErr := writeBuffer.WriteSerializable(_element)
+		for _curItem, _element := range m.GetAdsStampHeaders() {
+			_ = _curItem
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdsStampHeaders()), _curItem)
+			_ = arrayCtx
+			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
 				return errors.Wrap(_elementErr, "Error serializing 'adsStampHeaders' field")
 			}
@@ -276,7 +283,7 @@ func (m *_AdsDeviceNotificationRequest) SerializeWithWriteBuffer(writeBuffer uti
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDeviceNotificationRequest) isAdsDeviceNotificationRequest() bool {
@@ -288,7 +295,7 @@ func (m *_AdsDeviceNotificationRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationResponse.go b/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationResponse.go
index b962d3e282..54f8c68104 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -100,25 +101,21 @@ func (m *_AdsDeviceNotificationResponse) GetTypeName() string {
 	return "AdsDeviceNotificationResponse"
 }
 
-func (m *_AdsDeviceNotificationResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsDeviceNotificationResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsDeviceNotificationResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_AdsDeviceNotificationResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsDeviceNotificationResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsDeviceNotificationResponseParse(theBytes []byte) (AdsDeviceNotificationResponse, error) {
-	return AdsDeviceNotificationResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsDeviceNotificationResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsDeviceNotificationResponse, error) {
+func AdsDeviceNotificationResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsDeviceNotificationResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsDeviceNotificationResponse"); pullErr != nil {
@@ -140,14 +137,14 @@ func AdsDeviceNotificationResponseParseWithBuffer(readBuffer utils.ReadBuffer) (
 }
 
 func (m *_AdsDeviceNotificationResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsDeviceNotificationResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -160,7 +157,7 @@ func (m *_AdsDeviceNotificationResponse) SerializeWithWriteBuffer(writeBuffer ut
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsDeviceNotificationResponse) isAdsDeviceNotificationResponse() bool {
@@ -172,7 +169,7 @@ func (m *_AdsDeviceNotificationResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsInvalidRequest.go b/plc4go/protocols/ads/readwrite/model/AdsInvalidRequest.go
index 2b4540bfea..187fa74c85 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsInvalidRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsInvalidRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -100,25 +101,21 @@ func (m *_AdsInvalidRequest) GetTypeName() string {
 	return "AdsInvalidRequest"
 }
 
-func (m *_AdsInvalidRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsInvalidRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsInvalidRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_AdsInvalidRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsInvalidRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsInvalidRequestParse(theBytes []byte) (AdsInvalidRequest, error) {
-	return AdsInvalidRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsInvalidRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsInvalidRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsInvalidRequest, error) {
+func AdsInvalidRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsInvalidRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsInvalidRequest"); pullErr != nil {
@@ -140,14 +137,14 @@ func AdsInvalidRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsInvalidRe
 }
 
 func (m *_AdsInvalidRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsInvalidRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsInvalidRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -160,7 +157,7 @@ func (m *_AdsInvalidRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuf
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsInvalidRequest) isAdsInvalidRequest() bool {
@@ -172,7 +169,7 @@ func (m *_AdsInvalidRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsInvalidResponse.go b/plc4go/protocols/ads/readwrite/model/AdsInvalidResponse.go
index 4c59db6370..7ce244bf07 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsInvalidResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsInvalidResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -100,25 +101,21 @@ func (m *_AdsInvalidResponse) GetTypeName() string {
 	return "AdsInvalidResponse"
 }
 
-func (m *_AdsInvalidResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsInvalidResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsInvalidResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_AdsInvalidResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsInvalidResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsInvalidResponseParse(theBytes []byte) (AdsInvalidResponse, error) {
-	return AdsInvalidResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsInvalidResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsInvalidResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsInvalidResponse, error) {
+func AdsInvalidResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsInvalidResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsInvalidResponse"); pullErr != nil {
@@ -140,14 +137,14 @@ func AdsInvalidResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsInvalidR
 }
 
 func (m *_AdsInvalidResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsInvalidResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsInvalidResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -160,7 +157,7 @@ func (m *_AdsInvalidResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBu
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsInvalidResponse) isAdsInvalidResponse() bool {
@@ -172,7 +169,7 @@ func (m *_AdsInvalidResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
index af8a5de182..5a518f810d 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItem.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -48,13 +49,12 @@ type _AdsMultiRequestItem struct {
 
 type _AdsMultiRequestItemChildRequirements interface {
 	utils.Serializable
-	GetLengthInBits() uint16
-	GetLengthInBitsConditional(lastItem bool) uint16
+	GetLengthInBits(ctx context.Context) uint16
 	GetIndexGroup() uint32
 }
 
 type AdsMultiRequestItemParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child AdsMultiRequestItem, serializeChildFunction func() error) error
+	SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child AdsMultiRequestItem, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
@@ -87,21 +87,21 @@ func (m *_AdsMultiRequestItem) GetTypeName() string {
 	return "AdsMultiRequestItem"
 }
 
-func (m *_AdsMultiRequestItem) GetParentLengthInBits() uint16 {
+func (m *_AdsMultiRequestItem) GetParentLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	return lengthInBits
 }
 
-func (m *_AdsMultiRequestItem) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsMultiRequestItem) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsMultiRequestItemParse(theBytes []byte, indexGroup uint32) (AdsMultiRequestItem, error) {
-	return AdsMultiRequestItemParseWithBuffer(utils.NewReadBufferByteBased(theBytes), indexGroup)
+	return AdsMultiRequestItemParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), indexGroup)
 }
 
-func AdsMultiRequestItemParseWithBuffer(readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItem, error) {
+func AdsMultiRequestItemParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItem, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsMultiRequestItem"); pullErr != nil {
@@ -121,11 +121,11 @@ func AdsMultiRequestItemParseWithBuffer(readBuffer utils.ReadBuffer, indexGroup
 	var typeSwitchError error
 	switch {
 	case indexGroup == uint32(61568): // AdsMultiRequestItemRead
-		_childTemp, typeSwitchError = AdsMultiRequestItemReadParseWithBuffer(readBuffer, indexGroup)
+		_childTemp, typeSwitchError = AdsMultiRequestItemReadParseWithBuffer(ctx, readBuffer, indexGroup)
 	case indexGroup == uint32(61569): // AdsMultiRequestItemWrite
-		_childTemp, typeSwitchError = AdsMultiRequestItemWriteParseWithBuffer(readBuffer, indexGroup)
+		_childTemp, typeSwitchError = AdsMultiRequestItemWriteParseWithBuffer(ctx, readBuffer, indexGroup)
 	case indexGroup == uint32(61570): // AdsMultiRequestItemReadWrite
-		_childTemp, typeSwitchError = AdsMultiRequestItemReadWriteParseWithBuffer(readBuffer, indexGroup)
+		_childTemp, typeSwitchError = AdsMultiRequestItemReadWriteParseWithBuffer(ctx, readBuffer, indexGroup)
 	default:
 		typeSwitchError = errors.Errorf("Unmapped type for parameters [indexGroup=%v]", indexGroup)
 	}
@@ -143,7 +143,7 @@ func AdsMultiRequestItemParseWithBuffer(readBuffer utils.ReadBuffer, indexGroup
 	return _child, nil
 }
 
-func (pm *_AdsMultiRequestItem) SerializeParent(writeBuffer utils.WriteBuffer, child AdsMultiRequestItem, serializeChildFunction func() error) error {
+func (pm *_AdsMultiRequestItem) SerializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child AdsMultiRequestItem, serializeChildFunction func() error) error {
 	// We redirect all calls through client as some methods are only implemented there
 	m := child
 	_ = m
@@ -173,7 +173,7 @@ func (m *_AdsMultiRequestItem) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemRead.go b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemRead.go
index d86ea63580..bc5d9eafc4 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemRead.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemRead.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -123,12 +124,8 @@ func (m *_AdsMultiRequestItemRead) GetTypeName() string {
 	return "AdsMultiRequestItemRead"
 }
 
-func (m *_AdsMultiRequestItemRead) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsMultiRequestItemRead) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsMultiRequestItemRead) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (itemIndexGroup)
 	lengthInBits += 32
@@ -142,15 +139,15 @@ func (m *_AdsMultiRequestItemRead) GetLengthInBitsConditional(lastItem bool) uin
 	return lengthInBits
 }
 
-func (m *_AdsMultiRequestItemRead) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsMultiRequestItemRead) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsMultiRequestItemReadParse(theBytes []byte, indexGroup uint32) (AdsMultiRequestItemRead, error) {
-	return AdsMultiRequestItemReadParseWithBuffer(utils.NewReadBufferByteBased(theBytes), indexGroup)
+	return AdsMultiRequestItemReadParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), indexGroup)
 }
 
-func AdsMultiRequestItemReadParseWithBuffer(readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItemRead, error) {
+func AdsMultiRequestItemReadParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItemRead, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsMultiRequestItemRead"); pullErr != nil {
@@ -196,14 +193,14 @@ func AdsMultiRequestItemReadParseWithBuffer(readBuffer utils.ReadBuffer, indexGr
 }
 
 func (m *_AdsMultiRequestItemRead) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsMultiRequestItemRead) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsMultiRequestItemRead) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -237,7 +234,7 @@ func (m *_AdsMultiRequestItemRead) SerializeWithWriteBuffer(writeBuffer utils.Wr
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsMultiRequestItemRead) isAdsMultiRequestItemRead() bool {
@@ -249,7 +246,7 @@ func (m *_AdsMultiRequestItemRead) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemReadWrite.go b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
index 8512233464..46a6c2dbc4 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -131,12 +132,8 @@ func (m *_AdsMultiRequestItemReadWrite) GetTypeName() string {
 	return "AdsMultiRequestItemReadWrite"
 }
 
-func (m *_AdsMultiRequestItemReadWrite) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsMultiRequestItemReadWrite) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsMultiRequestItemReadWrite) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (itemIndexGroup)
 	lengthInBits += 32
@@ -153,15 +150,15 @@ func (m *_AdsMultiRequestItemReadWrite) GetLengthInBitsConditional(lastItem bool
 	return lengthInBits
 }
 
-func (m *_AdsMultiRequestItemReadWrite) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsMultiRequestItemReadWrite) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsMultiRequestItemReadWriteParse(theBytes []byte, indexGroup uint32) (AdsMultiRequestItemReadWrite, error) {
-	return AdsMultiRequestItemReadWriteParseWithBuffer(utils.NewReadBufferByteBased(theBytes), indexGroup)
+	return AdsMultiRequestItemReadWriteParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), indexGroup)
 }
 
-func AdsMultiRequestItemReadWriteParseWithBuffer(readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItemReadWrite, error) {
+func AdsMultiRequestItemReadWriteParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItemReadWrite, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsMultiRequestItemReadWrite"); pullErr != nil {
@@ -215,14 +212,14 @@ func AdsMultiRequestItemReadWriteParseWithBuffer(readBuffer utils.ReadBuffer, in
 }
 
 func (m *_AdsMultiRequestItemReadWrite) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsMultiRequestItemReadWrite) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsMultiRequestItemReadWrite) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -263,7 +260,7 @@ func (m *_AdsMultiRequestItemReadWrite) SerializeWithWriteBuffer(writeBuffer uti
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsMultiRequestItemReadWrite) isAdsMultiRequestItemReadWrite() bool {
@@ -275,7 +272,7 @@ func (m *_AdsMultiRequestItemReadWrite) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemWrite.go b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemWrite.go
index e4dfc6352c..c67cb37ec3 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemWrite.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsMultiRequestItemWrite.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -123,12 +124,8 @@ func (m *_AdsMultiRequestItemWrite) GetTypeName() string {
 	return "AdsMultiRequestItemWrite"
 }
 
-func (m *_AdsMultiRequestItemWrite) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsMultiRequestItemWrite) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsMultiRequestItemWrite) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (itemIndexGroup)
 	lengthInBits += 32
@@ -142,15 +139,15 @@ func (m *_AdsMultiRequestItemWrite) GetLengthInBitsConditional(lastItem bool) ui
 	return lengthInBits
 }
 
-func (m *_AdsMultiRequestItemWrite) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsMultiRequestItemWrite) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsMultiRequestItemWriteParse(theBytes []byte, indexGroup uint32) (AdsMultiRequestItemWrite, error) {
-	return AdsMultiRequestItemWriteParseWithBuffer(utils.NewReadBufferByteBased(theBytes), indexGroup)
+	return AdsMultiRequestItemWriteParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), indexGroup)
 }
 
-func AdsMultiRequestItemWriteParseWithBuffer(readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItemWrite, error) {
+func AdsMultiRequestItemWriteParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, indexGroup uint32) (AdsMultiRequestItemWrite, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsMultiRequestItemWrite"); pullErr != nil {
@@ -196,14 +193,14 @@ func AdsMultiRequestItemWriteParseWithBuffer(readBuffer utils.ReadBuffer, indexG
 }
 
 func (m *_AdsMultiRequestItemWrite) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsMultiRequestItemWrite) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsMultiRequestItemWrite) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -237,7 +234,7 @@ func (m *_AdsMultiRequestItemWrite) SerializeWithWriteBuffer(writeBuffer utils.W
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsMultiRequestItemWrite) isAdsMultiRequestItemWrite() bool {
@@ -249,7 +246,7 @@ func (m *_AdsMultiRequestItemWrite) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsNotificationSample.go b/plc4go/protocols/ads/readwrite/model/AdsNotificationSample.go
index ed92721bc0..899ea92372 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsNotificationSample.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsNotificationSample.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -94,11 +95,7 @@ func (m *_AdsNotificationSample) GetTypeName() string {
 	return "AdsNotificationSample"
 }
 
-func (m *_AdsNotificationSample) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsNotificationSample) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsNotificationSample) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (notificationHandle)
@@ -115,15 +112,15 @@ func (m *_AdsNotificationSample) GetLengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
-func (m *_AdsNotificationSample) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsNotificationSample) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsNotificationSampleParse(theBytes []byte) (AdsNotificationSample, error) {
-	return AdsNotificationSampleParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsNotificationSampleParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsNotificationSampleParseWithBuffer(readBuffer utils.ReadBuffer) (AdsNotificationSample, error) {
+func AdsNotificationSampleParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsNotificationSample, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsNotificationSample"); pullErr != nil {
@@ -165,14 +162,14 @@ func AdsNotificationSampleParseWithBuffer(readBuffer utils.ReadBuffer) (AdsNotif
 }
 
 func (m *_AdsNotificationSample) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsNotificationSample) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsNotificationSample) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsNotificationSample"); pushErr != nil {
@@ -214,7 +211,7 @@ func (m *_AdsNotificationSample) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoRequest.go b/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoRequest.go
index 31da4b701e..fd933dedc9 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -100,25 +101,21 @@ func (m *_AdsReadDeviceInfoRequest) GetTypeName() string {
 	return "AdsReadDeviceInfoRequest"
 }
 
-func (m *_AdsReadDeviceInfoRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadDeviceInfoRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadDeviceInfoRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_AdsReadDeviceInfoRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadDeviceInfoRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadDeviceInfoRequestParse(theBytes []byte) (AdsReadDeviceInfoRequest, error) {
-	return AdsReadDeviceInfoRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadDeviceInfoRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadDeviceInfoRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadDeviceInfoRequest, error) {
+func AdsReadDeviceInfoRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadDeviceInfoRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadDeviceInfoRequest"); pullErr != nil {
@@ -140,14 +137,14 @@ func AdsReadDeviceInfoRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsRe
 }
 
 func (m *_AdsReadDeviceInfoRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadDeviceInfoRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadDeviceInfoRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -160,7 +157,7 @@ func (m *_AdsReadDeviceInfoRequest) SerializeWithWriteBuffer(writeBuffer utils.W
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadDeviceInfoRequest) isAdsReadDeviceInfoRequest() bool {
@@ -172,7 +169,7 @@ func (m *_AdsReadDeviceInfoRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoResponse.go b/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoResponse.go
index a66516b9a9..462196685c 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadDeviceInfoResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -150,12 +151,8 @@ func (m *_AdsReadDeviceInfoResponse) GetTypeName() string {
 	return "AdsReadDeviceInfoResponse"
 }
 
-func (m *_AdsReadDeviceInfoResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadDeviceInfoResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadDeviceInfoResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -177,15 +174,15 @@ func (m *_AdsReadDeviceInfoResponse) GetLengthInBitsConditional(lastItem bool) u
 	return lengthInBits
 }
 
-func (m *_AdsReadDeviceInfoResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadDeviceInfoResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadDeviceInfoResponseParse(theBytes []byte) (AdsReadDeviceInfoResponse, error) {
-	return AdsReadDeviceInfoResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadDeviceInfoResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadDeviceInfoResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadDeviceInfoResponse, error) {
+func AdsReadDeviceInfoResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadDeviceInfoResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadDeviceInfoResponse"); pullErr != nil {
@@ -198,7 +195,7 @@ func AdsReadDeviceInfoResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsR
 	if pullErr := readBuffer.PullContext("result"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for result")
 	}
-	_result, _resultErr := ReturnCodeParseWithBuffer(readBuffer)
+	_result, _resultErr := ReturnCodeParseWithBuffer(ctx, readBuffer)
 	if _resultErr != nil {
 		return nil, errors.Wrap(_resultErr, "Error parsing 'result' field of AdsReadDeviceInfoResponse")
 	}
@@ -252,14 +249,14 @@ func AdsReadDeviceInfoResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsR
 }
 
 func (m *_AdsReadDeviceInfoResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadDeviceInfoResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadDeviceInfoResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -271,7 +268,7 @@ func (m *_AdsReadDeviceInfoResponse) SerializeWithWriteBuffer(writeBuffer utils.
 		if pushErr := writeBuffer.PushContext("result"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for result")
 		}
-		_resultErr := writeBuffer.WriteSerializable(m.GetResult())
+		_resultErr := writeBuffer.WriteSerializable(ctx, m.GetResult())
 		if popErr := writeBuffer.PopContext("result"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for result")
 		}
@@ -311,7 +308,7 @@ func (m *_AdsReadDeviceInfoResponse) SerializeWithWriteBuffer(writeBuffer utils.
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadDeviceInfoResponse) isAdsReadDeviceInfoResponse() bool {
@@ -323,7 +320,7 @@ func (m *_AdsReadDeviceInfoResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadRequest.go b/plc4go/protocols/ads/readwrite/model/AdsReadRequest.go
index fcece9c0e3..6100d7fa1a 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -134,12 +135,8 @@ func (m *_AdsReadRequest) GetTypeName() string {
 	return "AdsReadRequest"
 }
 
-func (m *_AdsReadRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -153,15 +150,15 @@ func (m *_AdsReadRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *_AdsReadRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadRequestParse(theBytes []byte) (AdsReadRequest, error) {
-	return AdsReadRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadRequest, error) {
+func AdsReadRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadRequest"); pullErr != nil {
@@ -207,14 +204,14 @@ func AdsReadRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadRequest,
 }
 
 func (m *_AdsReadRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -248,7 +245,7 @@ func (m *_AdsReadRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadRequest) isAdsReadRequest() bool {
@@ -260,7 +257,7 @@ func (m *_AdsReadRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadResponse.go b/plc4go/protocols/ads/readwrite/model/AdsReadResponse.go
index 64341e4657..fb32075e1e 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -126,12 +127,8 @@ func (m *_AdsReadResponse) GetTypeName() string {
 	return "AdsReadResponse"
 }
 
-func (m *_AdsReadResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -147,15 +144,15 @@ func (m *_AdsReadResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *_AdsReadResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadResponseParse(theBytes []byte) (AdsReadResponse, error) {
-	return AdsReadResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadResponse, error) {
+func AdsReadResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadResponse"); pullErr != nil {
@@ -168,7 +165,7 @@ func AdsReadResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadRespons
 	if pullErr := readBuffer.PullContext("result"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for result")
 	}
-	_result, _resultErr := ReturnCodeParseWithBuffer(readBuffer)
+	_result, _resultErr := ReturnCodeParseWithBuffer(ctx, readBuffer)
 	if _resultErr != nil {
 		return nil, errors.Wrap(_resultErr, "Error parsing 'result' field of AdsReadResponse")
 	}
@@ -205,14 +202,14 @@ func AdsReadResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadRespons
 }
 
 func (m *_AdsReadResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -224,7 +221,7 @@ func (m *_AdsReadResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffe
 		if pushErr := writeBuffer.PushContext("result"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for result")
 		}
-		_resultErr := writeBuffer.WriteSerializable(m.GetResult())
+		_resultErr := writeBuffer.WriteSerializable(ctx, m.GetResult())
 		if popErr := writeBuffer.PopContext("result"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for result")
 		}
@@ -250,7 +247,7 @@ func (m *_AdsReadResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffe
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadResponse) isAdsReadResponse() bool {
@@ -262,7 +259,7 @@ func (m *_AdsReadResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadStateRequest.go b/plc4go/protocols/ads/readwrite/model/AdsReadStateRequest.go
index 24c7795cb7..cc79a4e2f3 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadStateRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadStateRequest.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -100,25 +101,21 @@ func (m *_AdsReadStateRequest) GetTypeName() string {
 	return "AdsReadStateRequest"
 }
 
-func (m *_AdsReadStateRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadStateRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadStateRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	return lengthInBits
 }
 
-func (m *_AdsReadStateRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadStateRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadStateRequestParse(theBytes []byte) (AdsReadStateRequest, error) {
-	return AdsReadStateRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadStateRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadStateRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadStateRequest, error) {
+func AdsReadStateRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadStateRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadStateRequest"); pullErr != nil {
@@ -140,14 +137,14 @@ func AdsReadStateRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadSta
 }
 
 func (m *_AdsReadStateRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadStateRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadStateRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -160,7 +157,7 @@ func (m *_AdsReadStateRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteB
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadStateRequest) isAdsReadStateRequest() bool {
@@ -172,7 +169,7 @@ func (m *_AdsReadStateRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadStateResponse.go b/plc4go/protocols/ads/readwrite/model/AdsReadStateResponse.go
index 04c5ad54d8..0945fd764b 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadStateResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadStateResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -134,12 +135,8 @@ func (m *_AdsReadStateResponse) GetTypeName() string {
 	return "AdsReadStateResponse"
 }
 
-func (m *_AdsReadStateResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadStateResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadStateResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -153,15 +150,15 @@ func (m *_AdsReadStateResponse) GetLengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *_AdsReadStateResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadStateResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadStateResponseParse(theBytes []byte) (AdsReadStateResponse, error) {
-	return AdsReadStateResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadStateResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadStateResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadStateResponse, error) {
+func AdsReadStateResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadStateResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadStateResponse"); pullErr != nil {
@@ -174,7 +171,7 @@ func AdsReadStateResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadSt
 	if pullErr := readBuffer.PullContext("result"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for result")
 	}
-	_result, _resultErr := ReturnCodeParseWithBuffer(readBuffer)
+	_result, _resultErr := ReturnCodeParseWithBuffer(ctx, readBuffer)
 	if _resultErr != nil {
 		return nil, errors.Wrap(_resultErr, "Error parsing 'result' field of AdsReadStateResponse")
 	}
@@ -213,14 +210,14 @@ func AdsReadStateResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadSt
 }
 
 func (m *_AdsReadStateResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadStateResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadStateResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -232,7 +229,7 @@ func (m *_AdsReadStateResponse) SerializeWithWriteBuffer(writeBuffer utils.Write
 		if pushErr := writeBuffer.PushContext("result"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for result")
 		}
-		_resultErr := writeBuffer.WriteSerializable(m.GetResult())
+		_resultErr := writeBuffer.WriteSerializable(ctx, m.GetResult())
 		if popErr := writeBuffer.PopContext("result"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for result")
 		}
@@ -259,7 +256,7 @@ func (m *_AdsReadStateResponse) SerializeWithWriteBuffer(writeBuffer utils.Write
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadStateResponse) isAdsReadStateResponse() bool {
@@ -271,7 +268,7 @@ func (m *_AdsReadStateResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go
index b3093f064f..74ce3a94b7 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadWriteRequest.go
@@ -20,6 +20,8 @@
 package model
 
 import (
+	"context"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -150,12 +152,8 @@ func (m *_AdsReadWriteRequest) GetTypeName() string {
 	return "AdsReadWriteRequest"
 }
 
-func (m *_AdsReadWriteRequest) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadWriteRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadWriteRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -171,9 +169,11 @@ func (m *_AdsReadWriteRequest) GetLengthInBitsConditional(lastItem bool) uint16
 
 	// Array field
 	if len(m.Items) > 0 {
-		for i, element := range m.Items {
-			last := i == len(m.Items)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.Items {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.Items), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
@@ -185,15 +185,15 @@ func (m *_AdsReadWriteRequest) GetLengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *_AdsReadWriteRequest) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadWriteRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadWriteRequestParse(theBytes []byte) (AdsReadWriteRequest, error) {
-	return AdsReadWriteRequestParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadWriteRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadWriteRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadWriteRequest, error) {
+func AdsReadWriteRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadWriteRequest, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadWriteRequest"); pullErr != nil {
@@ -241,12 +241,16 @@ func AdsReadWriteRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadWri
 		items = nil
 	}
 	{
-		for curItem := uint16(0); curItem < 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)); curItem++ {
-			_item, _err := AdsMultiRequestItemParseWithBuffer(readBuffer, indexGroup)
+		_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
+			_ = _curItem
+			_item, _err := AdsMultiRequestItemParseWithBuffer(arrayCtx, readBuffer, indexGroup)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'items' field of AdsReadWriteRequest")
 			}
-			items[curItem] = _item.(AdsMultiRequestItem)
+			items[_curItem] = _item.(AdsMultiRequestItem)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("items", utils.WithRenderAsList(true)); closeErr != nil {
@@ -277,14 +281,14 @@ func AdsReadWriteRequestParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadWri
 }
 
 func (m *_AdsReadWriteRequest) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadWriteRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadWriteRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -324,8 +328,11 @@ func (m *_AdsReadWriteRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteB
 		if pushErr := writeBuffer.PushContext("items", utils.WithRenderAsList(true)); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for items")
 		}
-		for _, _element := range m.GetItems() {
-			_elementErr := writeBuffer.WriteSerializable(_element)
+		for _curItem, _element := range m.GetItems() {
+			_ = _curItem
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetItems()), _curItem)
+			_ = arrayCtx
+			_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 			if _elementErr != nil {
 				return errors.Wrap(_elementErr, "Error serializing 'items' field")
 			}
@@ -345,7 +352,7 @@ func (m *_AdsReadWriteRequest) SerializeWithWriteBuffer(writeBuffer utils.WriteB
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadWriteRequest) isAdsReadWriteRequest() bool {
@@ -357,7 +364,7 @@ func (m *_AdsReadWriteRequest) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsReadWriteResponse.go b/plc4go/protocols/ads/readwrite/model/AdsReadWriteResponse.go
index 9384daace2..2aac379d19 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsReadWriteResponse.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsReadWriteResponse.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -126,12 +127,8 @@ func (m *_AdsReadWriteResponse) GetTypeName() string {
 	return "AdsReadWriteResponse"
 }
 
-func (m *_AdsReadWriteResponse) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsReadWriteResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.GetParentLengthInBits())
+func (m *_AdsReadWriteResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -147,15 +144,15 @@ func (m *_AdsReadWriteResponse) GetLengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *_AdsReadWriteResponse) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsReadWriteResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsReadWriteResponseParse(theBytes []byte) (AdsReadWriteResponse, error) {
-	return AdsReadWriteResponseParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsReadWriteResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsReadWriteResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadWriteResponse, error) {
+func AdsReadWriteResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsReadWriteResponse, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsReadWriteResponse"); pullErr != nil {
@@ -168,7 +165,7 @@ func AdsReadWriteResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadWr
 	if pullErr := readBuffer.PullContext("result"); pullErr != nil {
 		return nil, errors.Wrap(pullErr, "Error pulling for result")
 	}
-	_result, _resultErr := ReturnCodeParseWithBuffer(readBuffer)
+	_result, _resultErr := ReturnCodeParseWithBuffer(ctx, readBuffer)
 	if _resultErr != nil {
 		return nil, errors.Wrap(_resultErr, "Error parsing 'result' field of AdsReadWriteResponse")
 	}
@@ -205,14 +202,14 @@ func AdsReadWriteResponseParseWithBuffer(readBuffer utils.ReadBuffer) (AdsReadWr
 }
 
 func (m *_AdsReadWriteResponse) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsReadWriteResponse) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsReadWriteResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	ser := func() error {
@@ -224,7 +221,7 @@ func (m *_AdsReadWriteResponse) SerializeWithWriteBuffer(writeBuffer utils.Write
 		if pushErr := writeBuffer.PushContext("result"); pushErr != nil {
 			return errors.Wrap(pushErr, "Error pushing for result")
 		}
-		_resultErr := writeBuffer.WriteSerializable(m.GetResult())
+		_resultErr := writeBuffer.WriteSerializable(ctx, m.GetResult())
 		if popErr := writeBuffer.PopContext("result"); popErr != nil {
 			return errors.Wrap(popErr, "Error popping for result")
 		}
@@ -250,7 +247,7 @@ func (m *_AdsReadWriteResponse) SerializeWithWriteBuffer(writeBuffer utils.Write
 		}
 		return nil
 	}
-	return m.SerializeParent(writeBuffer, m, ser)
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
 }
 
 func (m *_AdsReadWriteResponse) isAdsReadWriteResponse() bool {
@@ -262,7 +259,7 @@ func (m *_AdsReadWriteResponse) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go b/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go
index 31b569a786..377f7360e2 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsStampHeader.go
@@ -20,6 +20,8 @@
 package model
 
 import (
+	"context"
+	spiContext "github.com/apache/plc4x/plc4go/spi/context"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
 )
@@ -94,11 +96,7 @@ func (m *_AdsStampHeader) GetTypeName() string {
 	return "AdsStampHeader"
 }
 
-func (m *_AdsStampHeader) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsStampHeader) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsStampHeader) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (timestamp)
@@ -109,24 +107,26 @@ func (m *_AdsStampHeader) GetLengthInBitsConditional(lastItem bool) uint16 {
 
 	// Array field
 	if len(m.AdsNotificationSamples) > 0 {
-		for i, element := range m.AdsNotificationSamples {
-			last := i == len(m.AdsNotificationSamples)-1
-			lengthInBits += element.(interface{ GetLengthInBitsConditional(bool) uint16 }).GetLengthInBitsConditional(last)
+		for _curItem, element := range m.AdsNotificationSamples {
+			arrayCtx := spiContext.CreateArrayContext(ctx, len(m.AdsNotificationSamples), _curItem)
+			_ = arrayCtx
+			_ = _curItem
+			lengthInBits += element.(interface{ GetLengthInBits(context.Context) uint16 }).GetLengthInBits(arrayCtx)
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m *_AdsStampHeader) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsStampHeader) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsStampHeaderParse(theBytes []byte) (AdsStampHeader, error) {
-	return AdsStampHeaderParseWithBuffer(utils.NewReadBufferByteBased(theBytes))
+	return AdsStampHeaderParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes))
 }
 
-func AdsStampHeaderParseWithBuffer(readBuffer utils.ReadBuffer) (AdsStampHeader, error) {
+func AdsStampHeaderParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsStampHeader, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsStampHeader"); pullErr != nil {
@@ -160,12 +160,16 @@ func AdsStampHeaderParseWithBuffer(readBuffer utils.ReadBuffer) (AdsStampHeader,
 		adsNotificationSamples = nil
 	}
 	{
-		for curItem := uint16(0); curItem < uint16(samples); curItem++ {
-			_item, _err := AdsNotificationSampleParseWithBuffer(readBuffer)
+		_numItems := uint16(samples)
+		for _curItem := uint16(0); _curItem < _numItems; _curItem++ {
+			arrayCtx := spiContext.CreateArrayContext(ctx, int(_numItems), int(_curItem))
+			_ = arrayCtx
+			_ = _curItem
+			_item, _err := AdsNotificationSampleParseWithBuffer(arrayCtx, readBuffer)
 			if _err != nil {
 				return nil, errors.Wrap(_err, "Error parsing 'adsNotificationSamples' field of AdsStampHeader")
 			}
-			adsNotificationSamples[curItem] = _item.(AdsNotificationSample)
+			adsNotificationSamples[_curItem] = _item.(AdsNotificationSample)
 		}
 	}
 	if closeErr := readBuffer.CloseContext("adsNotificationSamples", utils.WithRenderAsList(true)); closeErr != nil {
@@ -185,14 +189,14 @@ func AdsStampHeaderParseWithBuffer(readBuffer utils.ReadBuffer) (AdsStampHeader,
 }
 
 func (m *_AdsStampHeader) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsStampHeader) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsStampHeader) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsStampHeader"); pushErr != nil {
@@ -217,8 +221,11 @@ func (m *_AdsStampHeader) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer
 	if pushErr := writeBuffer.PushContext("adsNotificationSamples", utils.WithRenderAsList(true)); pushErr != nil {
 		return errors.Wrap(pushErr, "Error pushing for adsNotificationSamples")
 	}
-	for _, _element := range m.GetAdsNotificationSamples() {
-		_elementErr := writeBuffer.WriteSerializable(_element)
+	for _curItem, _element := range m.GetAdsNotificationSamples() {
+		_ = _curItem
+		arrayCtx := spiContext.CreateArrayContext(ctx, len(m.GetAdsNotificationSamples()), _curItem)
+		_ = arrayCtx
+		_elementErr := writeBuffer.WriteSerializable(arrayCtx, _element)
 		if _elementErr != nil {
 			return errors.Wrap(_elementErr, "Error serializing 'adsNotificationSamples' field")
 		}
@@ -242,7 +249,7 @@ func (m *_AdsStampHeader) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go b/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go
index a04119cca6..0906e3452b 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsSymbolTableEntry.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"fmt"
 	"github.com/apache/plc4x/plc4go/spi/utils"
@@ -258,11 +259,7 @@ func (m *_AdsSymbolTableEntry) GetTypeName() string {
 	return "AdsSymbolTableEntry"
 }
 
-func (m *_AdsSymbolTableEntry) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsSymbolTableEntry) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsSymbolTableEntry) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (entryLength)
@@ -360,15 +357,15 @@ func (m *_AdsSymbolTableEntry) GetLengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *_AdsSymbolTableEntry) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsSymbolTableEntry) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsSymbolTableEntryParse(theBytes []byte) (AdsSymbolTableEntry, error) {
-	return AdsSymbolTableEntryParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
+	return AdsSymbolTableEntryParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
 }
 
-func AdsSymbolTableEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsSymbolTableEntry, error) {
+func AdsSymbolTableEntryParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsSymbolTableEntry, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsSymbolTableEntry"); pullErr != nil {
@@ -648,14 +645,14 @@ func AdsSymbolTableEntryParseWithBuffer(readBuffer utils.ReadBuffer) (AdsSymbolT
 }
 
 func (m *_AdsSymbolTableEntry) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsSymbolTableEntry) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsSymbolTableEntry) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsSymbolTableEntry"); pushErr != nil {
@@ -901,7 +898,7 @@ func (m *_AdsSymbolTableEntry) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
 		return err.Error()
 	}
 	return writeBuffer.GetBox().String()
diff --git a/plc4go/protocols/ads/readwrite/model/AdsTableSizes.go b/plc4go/protocols/ads/readwrite/model/AdsTableSizes.go
index aa0506e5ed..2e6ee66d42 100644
--- a/plc4go/protocols/ads/readwrite/model/AdsTableSizes.go
+++ b/plc4go/protocols/ads/readwrite/model/AdsTableSizes.go
@@ -20,6 +20,7 @@
 package model
 
 import (
+	"context"
 	"encoding/binary"
 	"github.com/apache/plc4x/plc4go/spi/utils"
 	"github.com/pkg/errors"
@@ -116,11 +117,7 @@ func (m *_AdsTableSizes) GetTypeName() string {
 	return "AdsTableSizes"
 }
 
-func (m *_AdsTableSizes) GetLengthInBits() uint16 {
-	return m.GetLengthInBitsConditional(false)
-}
-
-func (m *_AdsTableSizes) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *_AdsTableSizes) GetLengthInBits(ctx context.Context) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (symbolCount)
@@ -144,15 +141,15 @@ func (m *_AdsTableSizes) GetLengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *_AdsTableSizes) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
+func (m *_AdsTableSizes) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
 }
 
 func AdsTableSizesParse(theBytes []byte) (AdsTableSizes, error) {
-	return AdsTableSizesParseWithBuffer(utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
+	return AdsTableSizesParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes, utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian)))
 }
 
-func AdsTableSizesParseWithBuffer(readBuffer utils.ReadBuffer) (AdsTableSizes, error) {
+func AdsTableSizesParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer) (AdsTableSizes, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("AdsTableSizes"); pullErr != nil {
@@ -219,14 +216,14 @@ func AdsTableSizesParseWithBuffer(readBuffer utils.ReadBuffer) (AdsTableSizes, e
 }
 
 func (m *_AdsTableSizes) Serialize() ([]byte, error) {
-	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes())), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))), utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m *_AdsTableSizes) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m *_AdsTableSizes) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
 	if pushErr := writeBuffer.PushContext("AdsTableSizes"); pushErr != nil {
@@ -290,7 +287,7 @@ func (m *_AdsTableSizes) String() string {
 		return "<nil>"
 	}
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
-	if err := writeBuffer.WriteSerializable(m); err != nil {
... 256275 lines suppressed ...