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/01/30 11:14:44 UTC

[plc4x] 01/01: refactor(code-gen): Changed the code-gen to support a "_lastItem" variable inside array elements

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 138c6195a4a1776ad34199bf5f3a4b58b2b86193
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Jan 30 12:14:29 2023 +0100

    refactor(code-gen): Changed the code-gen to support a "_lastItem" variable inside array elements
    
    - Updated the S7 spec and tests as well as the driver to support this.
    
    We're currently generating the functionality in all complex types and arrays, but it should be quite easy to only generate it only into types that reference "_lastItem".
    
    WARN: PLC4C and PLC4Go are currently broken.
---
 .../templates/java/complex-type-template.java.ftlh |  7 +++--
 .../CIPEncapsulationConnectionRequest.java         |  3 ++
 .../CIPEncapsulationConnectionResponse.java        |  3 ++
 .../abeth/readwrite/CIPEncapsulationPacket.java    |  3 ++
 .../readwrite/CIPEncapsulationReadRequest.java     |  3 ++
 .../readwrite/CIPEncapsulationReadResponse.java    |  3 ++
 .../abeth/readwrite/DF1CommandRequestMessage.java  |  3 ++
 ...ndResponseMessageProtectedTypedLogicalRead.java |  3 ++
 .../java/abeth/readwrite/DF1RequestCommand.java    |  3 ++
 .../java/abeth/readwrite/DF1RequestMessage.java    |  3 ++
 .../DF1RequestProtectedTypedLogicalRead.java       |  3 ++
 .../java/abeth/readwrite/DF1ResponseMessage.java   |  3 ++
 .../java/ads/discovery/readwrite/AdsDiscovery.java |  5 ++-
 .../ads/discovery/readwrite/AdsDiscoveryBlock.java |  3 ++
 .../readwrite/AdsDiscoveryBlockAmsNetId.java       |  3 ++
 .../readwrite/AdsDiscoveryBlockFingerprint.java    |  3 ++
 .../readwrite/AdsDiscoveryBlockHostName.java       |  3 ++
 .../readwrite/AdsDiscoveryBlockOsData.java         |  3 ++
 .../readwrite/AdsDiscoveryBlockPassword.java       |  3 ++
 .../readwrite/AdsDiscoveryBlockRouteName.java      |  3 ++
 .../readwrite/AdsDiscoveryBlockStatus.java         |  3 ++
 .../readwrite/AdsDiscoveryBlockUserName.java       |  3 ++
 .../readwrite/AdsDiscoveryBlockVersion.java        |  3 ++
 .../discovery/readwrite/AdsDiscoveryConstants.java |  3 ++
 .../java/ads/discovery/readwrite/AmsNetId.java     |  3 ++
 .../java/ads/discovery/readwrite/AmsString.java    |  3 ++
 .../readwrite/AdsAddDeviceNotificationRequest.java |  3 ++
 .../AdsAddDeviceNotificationResponse.java          |  3 ++
 .../plc4x/java/ads/readwrite/AdsConstants.java     |  3 ++
 .../java/ads/readwrite/AdsDataTypeArrayInfo.java   |  3 ++
 .../ads/readwrite/AdsDataTypeTableChildEntry.java  |  7 +++--
 .../java/ads/readwrite/AdsDataTypeTableEntry.java  |  7 +++--
 .../AdsDeleteDeviceNotificationRequest.java        |  3 ++
 .../AdsDeleteDeviceNotificationResponse.java       |  3 ++
 .../readwrite/AdsDeviceNotificationRequest.java    |  5 ++-
 .../readwrite/AdsDeviceNotificationResponse.java   |  3 ++
 .../java/ads/readwrite/AdsInvalidRequest.java      |  3 ++
 .../java/ads/readwrite/AdsInvalidResponse.java     |  3 ++
 .../java/ads/readwrite/AdsMultiRequestItem.java    |  3 ++
 .../ads/readwrite/AdsMultiRequestItemRead.java     |  3 ++
 .../readwrite/AdsMultiRequestItemReadWrite.java    |  3 ++
 .../ads/readwrite/AdsMultiRequestItemWrite.java    |  3 ++
 .../java/ads/readwrite/AdsNotificationSample.java  |  3 ++
 .../ads/readwrite/AdsReadDeviceInfoRequest.java    |  3 ++
 .../ads/readwrite/AdsReadDeviceInfoResponse.java   |  3 ++
 .../plc4x/java/ads/readwrite/AdsReadRequest.java   |  3 ++
 .../plc4x/java/ads/readwrite/AdsReadResponse.java  |  3 ++
 .../java/ads/readwrite/AdsReadStateRequest.java    |  3 ++
 .../java/ads/readwrite/AdsReadStateResponse.java   |  3 ++
 .../java/ads/readwrite/AdsReadWriteRequest.java    |  5 ++-
 .../java/ads/readwrite/AdsReadWriteResponse.java   |  3 ++
 .../plc4x/java/ads/readwrite/AdsStampHeader.java   |  5 ++-
 .../java/ads/readwrite/AdsSymbolTableEntry.java    |  3 ++
 .../plc4x/java/ads/readwrite/AdsTableSizes.java    |  3 ++
 .../java/ads/readwrite/AdsWriteControlRequest.java |  3 ++
 .../ads/readwrite/AdsWriteControlResponse.java     |  3 ++
 .../plc4x/java/ads/readwrite/AdsWriteRequest.java  |  3 ++
 .../plc4x/java/ads/readwrite/AdsWriteResponse.java |  3 ++
 .../apache/plc4x/java/ads/readwrite/AmsNetId.java  |  3 ++
 .../apache/plc4x/java/ads/readwrite/AmsPacket.java |  3 ++
 .../ads/readwrite/AmsSerialAcknowledgeFrame.java   |  3 ++
 .../plc4x/java/ads/readwrite/AmsSerialFrame.java   |  3 ++
 .../java/ads/readwrite/AmsSerialResetFrame.java    |  3 ++
 .../plc4x/java/ads/readwrite/AmsTCPPacket.java     |  3 ++
 .../plc4x/java/ads/readwrite/ErrorResponse.java    |  3 ++
 .../apache/plc4x/java/bacnetip/readwrite/APDU.java |  3 ++
 .../plc4x/java/bacnetip/readwrite/APDUAbort.java   |  3 ++
 .../java/bacnetip/readwrite/APDUComplexAck.java    |  3 ++
 .../bacnetip/readwrite/APDUConfirmedRequest.java   |  3 ++
 .../plc4x/java/bacnetip/readwrite/APDUError.java   |  3 ++
 .../plc4x/java/bacnetip/readwrite/APDUReject.java  |  3 ++
 .../java/bacnetip/readwrite/APDUSegmentAck.java    |  3 ++
 .../java/bacnetip/readwrite/APDUSimpleAck.java     |  3 ++
 .../bacnetip/readwrite/APDUUnconfirmedRequest.java |  3 ++
 .../plc4x/java/bacnetip/readwrite/APDUUnknown.java |  3 ++
 .../readwrite/BACnetAbortReasonTagged.java         |  3 ++
 ...netAccessAuthenticationFactorDisableTagged.java |  3 ++
 .../BACnetAccessCredentialDisableReasonTagged.java |  3 ++
 .../BACnetAccessCredentialDisableTagged.java       |  3 ++
 .../readwrite/BACnetAccessEventTagged.java         |  3 ++
 .../readwrite/BACnetAccessPassbackModeTagged.java  |  3 ++
 .../java/bacnetip/readwrite/BACnetAccessRule.java  |  3 ++
 .../BACnetAccessRuleLocationSpecifierTagged.java   |  3 ++
 .../BACnetAccessRuleTimeRangeSpecifierTagged.java  |  3 ++
 .../readwrite/BACnetAccessThreatLevel.java         |  3 ++
 .../readwrite/BACnetAccessUserTypeTagged.java      |  3 ++
 .../BACnetAccessZoneOccupancyStateTagged.java      |  3 ++
 .../readwrite/BACnetAccumulatorRecord.java         |  3 ++
 ...etAccumulatorRecordAccumulatorStatusTagged.java |  3 ++
 .../bacnetip/readwrite/BACnetActionCommand.java    |  3 ++
 .../java/bacnetip/readwrite/BACnetActionList.java  |  3 ++
 .../bacnetip/readwrite/BACnetActionTagged.java     |  3 ++
 .../java/bacnetip/readwrite/BACnetAddress.java     |  3 ++
 .../bacnetip/readwrite/BACnetAddressBinding.java   |  3 ++
 .../bacnetip/readwrite/BACnetAddressEnclosed.java  |  3 ++
 .../bacnetip/readwrite/BACnetApplicationTag.java   |  3 ++
 .../readwrite/BACnetApplicationTagBitString.java   |  3 ++
 .../readwrite/BACnetApplicationTagBoolean.java     |  3 ++
 .../BACnetApplicationTagCharacterString.java       |  3 ++
 .../readwrite/BACnetApplicationTagDate.java        |  3 ++
 .../readwrite/BACnetApplicationTagDouble.java      |  3 ++
 .../readwrite/BACnetApplicationTagEnumerated.java  |  3 ++
 .../readwrite/BACnetApplicationTagNull.java        |  3 ++
 .../BACnetApplicationTagObjectIdentifier.java      |  3 ++
 .../readwrite/BACnetApplicationTagOctetString.java |  3 ++
 .../readwrite/BACnetApplicationTagReal.java        |  3 ++
 .../BACnetApplicationTagSignedInteger.java         |  3 ++
 .../readwrite/BACnetApplicationTagTime.java        |  3 ++
 .../BACnetApplicationTagUnsignedInteger.java       |  3 ++
 .../readwrite/BACnetAssignedAccessRights.java      |  3 ++
 .../readwrite/BACnetAssignedLandingCalls.java      |  3 ++
 ...BACnetAssignedLandingCallsLandingCallsList.java |  3 ++
 ...tAssignedLandingCallsLandingCallsListEntry.java |  3 ++
 .../readwrite/BACnetAuthenticationFactor.java      |  3 ++
 .../BACnetAuthenticationFactorEnclosed.java        |  3 ++
 .../BACnetAuthenticationFactorFormat.java          |  3 ++
 .../BACnetAuthenticationFactorTypeTagged.java      |  3 ++
 .../readwrite/BACnetAuthenticationPolicy.java      |  3 ++
 .../readwrite/BACnetAuthenticationPolicyList.java  |  3 ++
 .../BACnetAuthenticationPolicyListEntry.java       |  3 ++
 .../BACnetAuthenticationStatusTagged.java          |  3 ++
 .../BACnetAuthorizationExemptionTagged.java        |  3 ++
 .../readwrite/BACnetAuthorizationModeTagged.java   |  3 ++
 .../java/bacnetip/readwrite/BACnetBDTEntry.java    |  3 ++
 .../readwrite/BACnetBackupStateTagged.java         |  3 ++
 .../readwrite/BACnetBinaryLightingPVTagged.java    |  3 ++
 .../bacnetip/readwrite/BACnetBinaryPVTagged.java   |  3 ++
 .../readwrite/BACnetCOVMultipleSubscription.java   |  3 ++
 ...criptionListOfCovSubscriptionSpecification.java |  3 ++
 ...ionListOfCovSubscriptionSpecificationEntry.java |  3 ++
 ...ptionSpecificationEntryListOfCovReferences.java |  3 ++
 ...SpecificationEntryListOfCovReferencesEntry.java |  3 ++
 .../bacnetip/readwrite/BACnetCOVSubscription.java  |  3 ++
 .../bacnetip/readwrite/BACnetCalendarEntry.java    |  3 ++
 .../readwrite/BACnetCalendarEntryDate.java         |  3 ++
 .../readwrite/BACnetCalendarEntryDateRange.java    |  3 ++
 .../readwrite/BACnetCalendarEntryEnclosed.java     |  3 ++
 .../readwrite/BACnetCalendarEntryWeekNDay.java     |  3 ++
 .../bacnetip/readwrite/BACnetChannelValue.java     |  3 ++
 .../readwrite/BACnetChannelValueBitString.java     |  3 ++
 .../readwrite/BACnetChannelValueBoolean.java       |  3 ++
 .../BACnetChannelValueCharacterString.java         |  3 ++
 .../bacnetip/readwrite/BACnetChannelValueDate.java |  3 ++
 .../readwrite/BACnetChannelValueDouble.java        |  3 ++
 .../readwrite/BACnetChannelValueEnumerated.java    |  3 ++
 .../readwrite/BACnetChannelValueInteger.java       |  3 ++
 .../BACnetChannelValueLightingCommand.java         |  3 ++
 .../bacnetip/readwrite/BACnetChannelValueNull.java |  3 ++
 .../BACnetChannelValueObjectidentifier.java        |  3 ++
 .../readwrite/BACnetChannelValueOctetString.java   |  3 ++
 .../bacnetip/readwrite/BACnetChannelValueReal.java |  3 ++
 .../bacnetip/readwrite/BACnetChannelValueTime.java |  3 ++
 .../readwrite/BACnetChannelValueUnsigned.java      |  3 ++
 .../java/bacnetip/readwrite/BACnetClientCOV.java   |  3 ++
 .../bacnetip/readwrite/BACnetClientCOVNone.java    |  3 ++
 .../bacnetip/readwrite/BACnetClientCOVObject.java  |  3 ++
 .../java/bacnetip/readwrite/BACnetClosingTag.java  |  3 ++
 .../readwrite/BACnetConfirmedServiceRequest.java   |  3 ++
 ...netConfirmedServiceRequestAcknowledgeAlarm.java |  3 ++
 ...ACnetConfirmedServiceRequestAddListElement.java |  3 ++
 ...ACnetConfirmedServiceRequestAtomicReadFile.java |  3 ++
 ...onfirmedServiceRequestAtomicReadFileRecord.java |  3 ++
 ...onfirmedServiceRequestAtomicReadFileStream.java |  3 ++
 ...ServiceRequestAtomicReadFileStreamOrRecord.java |  3 ++
 ...CnetConfirmedServiceRequestAtomicWriteFile.java |  3 ++
 .../BACnetConfirmedServiceRequestAuthenticate.java |  3 ++
 ...rmedServiceRequestConfirmedCOVNotification.java |  3 ++
 ...iceRequestConfirmedCOVNotificationMultiple.java |  3 ++
 ...edServiceRequestConfirmedEventNotification.java |  3 ++
 ...rmedServiceRequestConfirmedPrivateTransfer.java |  3 ++
 ...onfirmedServiceRequestConfirmedTextMessage.java |  3 ++
 ...iceRequestConfirmedTextMessageMessageClass.java |  3 ++
 ...tConfirmedTextMessageMessageClassCharacter.java |  3 ++
 ...estConfirmedTextMessageMessageClassNumeric.java |  3 ++
 ...tConfirmedTextMessageMessagePriorityTagged.java |  3 ++
 .../BACnetConfirmedServiceRequestCreateObject.java |  3 ++
 ...dServiceRequestCreateObjectObjectSpecifier.java |  3 ++
 .../BACnetConfirmedServiceRequestDeleteObject.java |  3 ++
 ...edServiceRequestDeviceCommunicationControl.java |  3 ++
 ...iceCommunicationControlEnableDisableTagged.java |  3 ++
 ...onfirmedServiceRequestGetEnrollmentSummary.java |  3 ++
 ...rollmentSummaryAcknowledgementFilterTagged.java |  3 ++
 ...GetEnrollmentSummaryEventStateFilterTagged.java |  3 ++
 ...eRequestGetEnrollmentSummaryPriorityFilter.java |  3 ++
 ...ConfirmedServiceRequestGetEventInformation.java |  3 ++
 ...ConfirmedServiceRequestLifeSafetyOperation.java |  3 ++
 .../BACnetConfirmedServiceRequestReadProperty.java |  3 ++
 ...irmedServiceRequestReadPropertyConditional.java |  3 ++
 ...onfirmedServiceRequestReadPropertyMultiple.java |  3 ++
 .../BACnetConfirmedServiceRequestReadRange.java    |  3 ++
 ...ACnetConfirmedServiceRequestReadRangeRange.java |  3 ++
 ...rmedServiceRequestReadRangeRangeByPosition.java |  3 ++
 ...rviceRequestReadRangeRangeBySequenceNumber.java |  3 ++
 ...onfirmedServiceRequestReadRangeRangeByTime.java |  3 ++
 ...tConfirmedServiceRequestReinitializeDevice.java |  3 ++
 ...lizeDeviceReinitializedStateOfDeviceTagged.java |  3 ++
 ...etConfirmedServiceRequestRemoveListElement.java |  3 ++
 .../BACnetConfirmedServiceRequestRequestKey.java   |  3 ++
 .../BACnetConfirmedServiceRequestSubscribeCOV.java |  3 ++
 ...onfirmedServiceRequestSubscribeCOVProperty.java |  3 ++
 ...ServiceRequestSubscribeCOVPropertyMultiple.java |  3 ++
 ...ultipleListOfCovSubscriptionSpecifications.java |  3 ++
 ...pleListOfCovSubscriptionSpecificationsList.java |  3 ++
 ...stOfCovSubscriptionSpecificationsReference.java |  3 ++
 .../BACnetConfirmedServiceRequestUnknown.java      |  3 ++
 .../BACnetConfirmedServiceRequestVTClose.java      |  3 ++
 .../BACnetConfirmedServiceRequestVTData.java       |  3 ++
 .../BACnetConfirmedServiceRequestVTOpen.java       |  3 ++
 ...BACnetConfirmedServiceRequestWriteProperty.java |  3 ++
 ...nfirmedServiceRequestWritePropertyMultiple.java |  3 ++
 .../bacnetip/readwrite/BACnetConstructedData.java  |  3 ++
 .../readwrite/BACnetConstructedDataAPDULength.java |  3 ++
 .../BACnetConstructedDataAPDUSegmentTimeout.java   |  3 ++
 .../BACnetConstructedDataAPDUTimeout.java          |  3 ++
 .../BACnetConstructedDataAbsenteeLimit.java        |  3 ++
 .../BACnetConstructedDataAcceptedModes.java        |  3 ++
 .../BACnetConstructedDataAccessAlarmEvents.java    |  3 ++
 .../BACnetConstructedDataAccessCredentialAll.java  |  3 ++
 ...BACnetConstructedDataAccessDoorAlarmValues.java |  3 ++
 .../BACnetConstructedDataAccessDoorAll.java        |  3 ++
 ...BACnetConstructedDataAccessDoorFaultValues.java |  3 ++
 ...ACnetConstructedDataAccessDoorPresentValue.java |  3 ++
 ...ConstructedDataAccessDoorRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataAccessDoors.java          |  3 ++
 .../BACnetConstructedDataAccessEvent.java          |  3 ++
 ...tructedDataAccessEventAuthenticationFactor.java |  3 ++
 ...BACnetConstructedDataAccessEventCredential.java |  3 ++
 .../BACnetConstructedDataAccessEventTag.java       |  3 ++
 .../BACnetConstructedDataAccessEventTime.java      |  3 ++
 .../BACnetConstructedDataAccessPointAll.java       |  3 ++
 .../BACnetConstructedDataAccessRightsAll.java      |  3 ++
 ...CnetConstructedDataAccessTransactionEvents.java |  3 ++
 .../BACnetConstructedDataAccessUserAll.java        |  3 ++
 ...BACnetConstructedDataAccessZoneAdjustValue.java |  3 ++
 ...BACnetConstructedDataAccessZoneAlarmValues.java |  3 ++
 .../BACnetConstructedDataAccessZoneAll.java        |  3 ++
 .../BACnetConstructedDataAccompaniment.java        |  3 ++
 .../BACnetConstructedDataAccompanimentTime.java    |  3 ++
 .../BACnetConstructedDataAccumulatorAll.java       |  3 ++
 ...etConstructedDataAccumulatorFaultHighLimit.java |  3 ++
 ...netConstructedDataAccumulatorFaultLowLimit.java |  3 ++
 .../BACnetConstructedDataAccumulatorHighLimit.java |  3 ++
 .../BACnetConstructedDataAccumulatorLowLimit.java  |  3 ++
 ...CnetConstructedDataAccumulatorMaxPresValue.java |  3 ++
 ...CnetConstructedDataAccumulatorMinPresValue.java |  3 ++
 .../BACnetConstructedDataAckRequired.java          |  3 ++
 .../BACnetConstructedDataAckedTransitions.java     |  3 ++
 .../readwrite/BACnetConstructedDataAction.java     |  3 ++
 .../readwrite/BACnetConstructedDataActionText.java |  3 ++
 .../BACnetConstructedDataActivationTime.java       |  3 ++
 ...tConstructedDataActiveAuthenticationPolicy.java |  3 ++
 ...structedDataActiveCOVMultipleSubscriptions.java |  3 ++
 ...ACnetConstructedDataActiveCOVSubscriptions.java |  3 ++
 .../readwrite/BACnetConstructedDataActiveText.java |  3 ++
 .../BACnetConstructedDataActiveVTSessions.java     |  3 ++
 .../BACnetConstructedDataActualShedLevel.java      |  3 ++
 .../BACnetConstructedDataAdjustValue.java          |  3 ++
 .../readwrite/BACnetConstructedDataAlarmValue.java |  3 ++
 .../BACnetConstructedDataAlarmValues.java          |  3 ++
 .../BACnetConstructedDataAlertEnrollmentAll.java   |  3 ++
 ...ConstructedDataAlertEnrollmentPresentValue.java |  3 ++
 .../BACnetConstructedDataAlignIntervals.java       |  3 ++
 .../BACnetConstructedDataAllWritesSuccessful.java  |  3 ++
 ...ACnetConstructedDataAllowGroupDelayInhibit.java |  3 ++
 .../BACnetConstructedDataAnalogInputAll.java       |  3 ++
 ...etConstructedDataAnalogInputFaultHighLimit.java |  3 ++
 ...netConstructedDataAnalogInputFaultLowLimit.java |  3 ++
 ...etConstructedDataAnalogInputInterfaceValue.java |  3 ++
 ...CnetConstructedDataAnalogInputMaxPresValue.java |  3 ++
 ...CnetConstructedDataAnalogInputPresentValue.java |  3 ++
 .../BACnetConstructedDataAnalogOutputAll.java      |  3 ++
 ...tConstructedDataAnalogOutputInterfaceValue.java |  3 ++
 ...netConstructedDataAnalogOutputMaxPresValue.java |  3 ++
 ...netConstructedDataAnalogOutputPresentValue.java |  3 ++
 ...nstructedDataAnalogOutputRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataAnalogValueAll.java       |  3 ++
 ...etConstructedDataAnalogValueFaultHighLimit.java |  3 ++
 ...netConstructedDataAnalogValueFaultLowLimit.java |  3 ++
 ...CnetConstructedDataAnalogValueMaxPresValue.java |  3 ++
 ...CnetConstructedDataAnalogValuePresentValue.java |  3 ++
 ...onstructedDataAnalogValueRelinquishDefault.java |  3 ++
 ...tConstructedDataApplicationSoftwareVersion.java |  3 ++
 .../readwrite/BACnetConstructedDataArchive.java    |  3 ++
 .../BACnetConstructedDataAssignedAccessRights.java |  3 ++
 .../BACnetConstructedDataAssignedLandingCalls.java |  3 ++
 .../BACnetConstructedDataAttemptedSamples.java     |  3 ++
 ...BACnetConstructedDataAuthenticationFactors.java |  3 ++
 ...netConstructedDataAuthenticationPolicyList.java |  3 ++
 ...etConstructedDataAuthenticationPolicyNames.java |  3 ++
 .../BACnetConstructedDataAuthenticationStatus.java |  3 ++
 ...CnetConstructedDataAuthorizationExemptions.java |  3 ++
 .../BACnetConstructedDataAuthorizationMode.java    |  3 ++
 .../BACnetConstructedDataAutoSlaveDiscovery.java   |  3 ++
 .../BACnetConstructedDataAverageValue.java         |  3 ++
 .../BACnetConstructedDataAveragingAll.java         |  3 ++
 ...BACnetConstructedDataBACnetIPGlobalAddress.java |  3 ++
 .../BACnetConstructedDataBACnetIPMode.java         |  3 ++
 ...netConstructedDataBACnetIPMulticastAddress.java |  3 ++
 .../BACnetConstructedDataBACnetIPNATTraversal.java |  3 ++
 .../BACnetConstructedDataBACnetIPUDPPort.java      |  3 ++
 .../BACnetConstructedDataBACnetIPv6Mode.java       |  3 ++
 ...tConstructedDataBACnetIPv6MulticastAddress.java |  3 ++
 .../BACnetConstructedDataBACnetIPv6UDPPort.java    |  3 ++
 ...etConstructedDataBBMDAcceptFDRegistrations.java |  3 ++
 ...structedDataBBMDBroadcastDistributionTable.java |  3 ++
 ...ACnetConstructedDataBBMDForeignDeviceTable.java |  3 ++
 ...BACnetConstructedDataBackupAndRestoreState.java |  3 ++
 .../BACnetConstructedDataBackupFailureTimeout.java |  3 ++
 ...BACnetConstructedDataBackupPreparationTime.java |  3 ++
 ...netConstructedDataBaseDeviceSecurityPolicy.java |  3 ++
 .../readwrite/BACnetConstructedDataBelongsTo.java  |  3 ++
 .../readwrite/BACnetConstructedDataBias.java       |  3 ++
 .../BACnetConstructedDataBinaryInputAll.java       |  3 ++
 ...etConstructedDataBinaryInputInterfaceValue.java |  3 ++
 ...CnetConstructedDataBinaryInputPresentValue.java |  3 ++
 ...CnetConstructedDataBinaryLightingOutputAll.java |  3 ++
 ...uctedDataBinaryLightingOutputFeedbackValue.java |  3 ++
 ...ructedDataBinaryLightingOutputPresentValue.java |  3 ++
 ...dDataBinaryLightingOutputRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataBinaryOutputAll.java      |  3 ++
 ...etConstructedDataBinaryOutputFeedbackValue.java |  3 ++
 ...tConstructedDataBinaryOutputInterfaceValue.java |  3 ++
 ...netConstructedDataBinaryOutputPresentValue.java |  3 ++
 ...nstructedDataBinaryOutputRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataBinaryValueAll.java       |  3 ++
 ...CnetConstructedDataBinaryValuePresentValue.java |  3 ++
 ...onstructedDataBinaryValueRelinquishDefault.java |  3 ++
 .../readwrite/BACnetConstructedDataBitMask.java    |  3 ++
 ...etConstructedDataBitStringValueAlarmValues.java |  3 ++
 ...tConstructedDataBitStringValuePresentValue.java |  3 ++
 ...tructedDataBitStringValueRelinquishDefault.java |  3 ++
 .../readwrite/BACnetConstructedDataBitText.java    |  3 ++
 .../BACnetConstructedDataBitstringValueAll.java    |  3 ++
 .../BACnetConstructedDataBlinkWarnEnable.java      |  3 ++
 .../readwrite/BACnetConstructedDataBufferSize.java |  3 ++
 .../BACnetConstructedDataCOVIncrement.java         |  3 ++
 .../readwrite/BACnetConstructedDataCOVPeriod.java  |  3 ++
 ...etConstructedDataCOVResubscriptionInterval.java |  3 ++
 .../readwrite/BACnetConstructedDataCOVUPeriod.java |  3 ++
 .../BACnetConstructedDataCOVURecipients.java       |  3 ++
 .../BACnetConstructedDataCalendarAll.java          |  3 ++
 .../BACnetConstructedDataCalendarPresentValue.java |  3 ++
 .../BACnetConstructedDataCarAssignedDirection.java |  3 ++
 .../BACnetConstructedDataCarDoorCommand.java       |  3 ++
 .../BACnetConstructedDataCarDoorStatus.java        |  3 ++
 .../BACnetConstructedDataCarDoorText.java          |  3 ++
 .../BACnetConstructedDataCarDoorZone.java          |  3 ++
 .../BACnetConstructedDataCarDriveStatus.java       |  3 ++
 .../readwrite/BACnetConstructedDataCarLoad.java    |  3 ++
 .../BACnetConstructedDataCarLoadUnits.java         |  3 ++
 .../readwrite/BACnetConstructedDataCarMode.java    |  3 ++
 .../BACnetConstructedDataCarMovingDirection.java   |  3 ++
 .../BACnetConstructedDataCarPosition.java          |  3 ++
 .../BACnetConstructedDataChangeOfStateCount.java   |  3 ++
 .../BACnetConstructedDataChangeOfStateTime.java    |  3 ++
 .../BACnetConstructedDataChangesPending.java       |  3 ++
 .../readwrite/BACnetConstructedDataChannelAll.java |  3 ++
 ...dDataChannelListOfObjectPropertyReferences.java |  3 ++
 .../BACnetConstructedDataChannelNumber.java        |  3 ++
 .../BACnetConstructedDataChannelPresentValue.java  |  3 ++
 ...tructedDataCharacterStringValueAlarmValues.java |  3 ++
 ...tructedDataCharacterStringValueFaultValues.java |  3 ++
 ...ructedDataCharacterStringValuePresentValue.java |  3 ++
 ...dDataCharacterStringValueRelinquishDefault.java |  3 ++
 ...CnetConstructedDataCharacterstringValueAll.java |  3 ++
 .../BACnetConstructedDataClientCOVIncrement.java   |  3 ++
 .../readwrite/BACnetConstructedDataCommand.java    |  3 ++
 .../BACnetConstructedDataCommandAction.java        |  3 ++
 .../readwrite/BACnetConstructedDataCommandAll.java |  3 ++
 .../BACnetConstructedDataCommandTimeArray.java     |  3 ++
 .../BACnetConstructedDataConfigurationFiles.java   |  3 ++
 .../BACnetConstructedDataControlGroups.java        |  3 ++
 ...ConstructedDataControlledVariableReference.java |  3 ++
 ...CnetConstructedDataControlledVariableUnits.java |  3 ++
 ...CnetConstructedDataControlledVariableValue.java |  3 ++
 .../readwrite/BACnetConstructedDataCount.java      |  3 ++
 .../BACnetConstructedDataCountBeforeChange.java    |  3 ++
 .../BACnetConstructedDataCountChangeTime.java      |  3 ++
 ...ACnetConstructedDataCredentialDataInputAll.java |  3 ++
 ...tructedDataCredentialDataInputPresentValue.java |  3 ++
 ...nstructedDataCredentialDataInputUpdateTime.java |  3 ++
 .../BACnetConstructedDataCredentialDisable.java    |  3 ++
 .../BACnetConstructedDataCredentialStatus.java     |  3 ++
 .../BACnetConstructedDataCredentials.java          |  3 ++
 .../BACnetConstructedDataCredentialsInZone.java    |  3 ++
 ...ACnetConstructedDataCurrentCommandPriority.java |  3 ++
 .../BACnetConstructedDataDatabaseRevision.java     |  3 ++
 .../readwrite/BACnetConstructedDataDateList.java   |  3 ++
 ...onstructedDataDatePatternValuePresentValue.java |  3 ++
 ...uctedDataDatePatternValueRelinquishDefault.java |  3 ++
 ...ructedDataDateTimePatternValuePresentValue.java |  3 ++
 ...dDataDateTimePatternValueRelinquishDefault.java |  3 ++
 ...etConstructedDataDateTimeValuePresentValue.java |  3 ++
 ...structedDataDateTimeValueRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataDateValueAll.java         |  3 ++
 ...BACnetConstructedDataDateValuePresentValue.java |  3 ++
 ...tConstructedDataDateValueRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataDatepatternValueAll.java  |  3 ++
 .../BACnetConstructedDataDatetimeValueAll.java     |  3 ++
 ...CnetConstructedDataDatetimepatternValueAll.java |  3 ++
 ...BACnetConstructedDataDaylightSavingsStatus.java |  3 ++
 .../BACnetConstructedDataDaysRemaining.java        |  3 ++
 .../readwrite/BACnetConstructedDataDeadband.java   |  3 ++
 .../BACnetConstructedDataDefaultFadeTime.java      |  3 ++
 .../BACnetConstructedDataDefaultRampRate.java      |  3 ++
 .../BACnetConstructedDataDefaultStepIncrement.java |  3 ++
 ...structedDataDefaultSubordinateRelationship.java |  3 ++
 .../BACnetConstructedDataDefaultTimeout.java       |  3 ++
 ...CnetConstructedDataDeployedProfileLocation.java |  3 ++
 .../BACnetConstructedDataDerivativeConstant.java   |  3 ++
 ...CnetConstructedDataDerivativeConstantUnits.java |  3 ++
 .../BACnetConstructedDataDescription.java          |  3 ++
 .../BACnetConstructedDataDescriptionOfHalt.java    |  3 ++
 .../BACnetConstructedDataDeviceAddressBinding.java |  3 ++
 .../readwrite/BACnetConstructedDataDeviceAll.java  |  3 ++
 .../BACnetConstructedDataDeviceMaxInfoFrames.java  |  3 ++
 .../BACnetConstructedDataDeviceMaxMaster.java      |  3 ++
 .../readwrite/BACnetConstructedDataDeviceType.java |  3 ++
 .../BACnetConstructedDataDirectReading.java        |  3 ++
 ...CnetConstructedDataDistributionKeyRevision.java |  3 ++
 .../readwrite/BACnetConstructedDataDoNotHide.java  |  3 ++
 .../BACnetConstructedDataDoorAlarmState.java       |  3 ++
 ...BACnetConstructedDataDoorExtendedPulseTime.java |  3 ++
 .../BACnetConstructedDataDoorMembers.java          |  3 ++
 .../BACnetConstructedDataDoorOpenTooLongTime.java  |  3 ++
 .../BACnetConstructedDataDoorPulseTime.java        |  3 ++
 .../readwrite/BACnetConstructedDataDoorStatus.java |  3 ++
 .../BACnetConstructedDataDoorUnlockDelayTime.java  |  3 ++
 .../readwrite/BACnetConstructedDataDutyWindow.java |  3 ++
 .../BACnetConstructedDataEffectivePeriod.java      |  3 ++
 .../BACnetConstructedDataEgressActive.java         |  3 ++
 .../readwrite/BACnetConstructedDataEgressTime.java |  3 ++
 .../BACnetConstructedDataElapsedActiveTime.java    |  3 ++
 .../readwrite/BACnetConstructedDataElement.java    |  3 ++
 .../BACnetConstructedDataElevatorGroup.java        |  3 ++
 .../BACnetConstructedDataElevatorGroupAll.java     |  3 ++
 ...etConstructedDataElevatorGroupGroupMembers.java |  3 ++
 .../readwrite/BACnetConstructedDataEnable.java     |  3 ++
 .../BACnetConstructedDataEnergyMeter.java          |  3 ++
 .../BACnetConstructedDataEnergyMeterRef.java       |  3 ++
 .../BACnetConstructedDataEntryPoints.java          |  3 ++
 .../readwrite/BACnetConstructedDataErrorLimit.java |  3 ++
 .../BACnetConstructedDataEscalatorAll.java         |  3 ++
 ...BACnetConstructedDataEscalatorFaultSignals.java |  3 ++
 .../BACnetConstructedDataEscalatorMode.java        |  3 ++
 ...BACnetConstructedDataEventAlgorithmInhibit.java |  3 ++
 ...netConstructedDataEventAlgorithmInhibitRef.java |  3 ++
 .../BACnetConstructedDataEventDetectionEnable.java |  3 ++
 .../BACnetConstructedDataEventEnable.java          |  3 ++
 .../BACnetConstructedDataEventEnrollmentAll.java   |  3 ++
 .../BACnetConstructedDataEventLogAll.java          |  3 ++
 .../BACnetConstructedDataEventLogLogBuffer.java    |  3 ++
 .../BACnetConstructedDataEventMessageTexts.java    |  3 ++
 ...CnetConstructedDataEventMessageTextsConfig.java |  3 ++
 .../BACnetConstructedDataEventParameters.java      |  3 ++
 .../readwrite/BACnetConstructedDataEventState.java |  3 ++
 .../BACnetConstructedDataEventTimeStamps.java      |  3 ++
 .../readwrite/BACnetConstructedDataEventType.java  |  3 ++
 .../BACnetConstructedDataExceptionSchedule.java    |  3 ++
 .../BACnetConstructedDataExecutionDelay.java       |  3 ++
 .../readwrite/BACnetConstructedDataExitPoints.java |  3 ++
 .../BACnetConstructedDataExpectedShedLevel.java    |  3 ++
 .../BACnetConstructedDataExpirationTime.java       |  3 ++
 .../BACnetConstructedDataExtendedTimeEnable.java   |  3 ++
 .../BACnetConstructedDataFDBBMDAddress.java        |  3 ++
 ...ACnetConstructedDataFDSubscriptionLifetime.java |  3 ++
 .../BACnetConstructedDataFailedAttemptEvents.java  |  3 ++
 .../BACnetConstructedDataFailedAttempts.java       |  3 ++
 .../BACnetConstructedDataFailedAttemptsTime.java   |  3 ++
 .../BACnetConstructedDataFaultHighLimit.java       |  3 ++
 .../BACnetConstructedDataFaultLowLimit.java        |  3 ++
 .../BACnetConstructedDataFaultParameters.java      |  3 ++
 .../BACnetConstructedDataFaultSignals.java         |  3 ++
 .../readwrite/BACnetConstructedDataFaultType.java  |  3 ++
 .../BACnetConstructedDataFaultValues.java          |  3 ++
 .../BACnetConstructedDataFileAccessMethod.java     |  3 ++
 .../readwrite/BACnetConstructedDataFileAll.java    |  3 ++
 .../BACnetConstructedDataFileRecordCount.java      |  3 ++
 .../readwrite/BACnetConstructedDataFileSize.java   |  3 ++
 .../readwrite/BACnetConstructedDataFileType.java   |  3 ++
 .../BACnetConstructedDataFirmwareRevision.java     |  3 ++
 .../readwrite/BACnetConstructedDataFloorText.java  |  3 ++
 .../BACnetConstructedDataFullDutyBaseline.java     |  3 ++
 .../BACnetConstructedDataGlobalGroupAll.java       |  3 ++
 ...CnetConstructedDataGlobalGroupGroupMembers.java |  3 ++
 ...CnetConstructedDataGlobalGroupPresentValue.java |  3 ++
 .../BACnetConstructedDataGlobalIdentifier.java     |  3 ++
 .../readwrite/BACnetConstructedDataGroupAll.java   |  3 ++
 .../readwrite/BACnetConstructedDataGroupID.java    |  3 ++
 .../BACnetConstructedDataGroupMemberNames.java     |  3 ++
 .../BACnetConstructedDataGroupMembers.java         |  3 ++
 .../readwrite/BACnetConstructedDataGroupMode.java  |  3 ++
 .../BACnetConstructedDataGroupPresentValue.java    |  3 ++
 .../readwrite/BACnetConstructedDataHighLimit.java  |  3 ++
 .../readwrite/BACnetConstructedDataHigherDeck.java |  3 ++
 .../readwrite/BACnetConstructedDataIPAddress.java  |  3 ++
 .../BACnetConstructedDataIPDHCPEnable.java         |  3 ++
 .../BACnetConstructedDataIPDHCPLeaseTime.java      |  3 ++
 ...netConstructedDataIPDHCPLeaseTimeRemaining.java |  3 ++
 .../BACnetConstructedDataIPDHCPServer.java         |  3 ++
 .../BACnetConstructedDataIPDNSServer.java          |  3 ++
 .../BACnetConstructedDataIPDefaultGateway.java     |  3 ++
 .../BACnetConstructedDataIPSubnetMask.java         |  3 ++
 .../BACnetConstructedDataIPv6Address.java          |  3 ++
 ...netConstructedDataIPv6AutoAddressingEnable.java |  3 ++
 .../BACnetConstructedDataIPv6DHCPLeaseTime.java    |  3 ++
 ...tConstructedDataIPv6DHCPLeaseTimeRemaining.java |  3 ++
 .../BACnetConstructedDataIPv6DHCPServer.java       |  3 ++
 .../BACnetConstructedDataIPv6DNSServer.java        |  3 ++
 .../BACnetConstructedDataIPv6DefaultGateway.java   |  3 ++
 .../BACnetConstructedDataIPv6PrefixLength.java     |  3 ++
 .../BACnetConstructedDataIPv6ZoneIndex.java        |  3 ++
 .../readwrite/BACnetConstructedDataInProcess.java  |  3 ++
 .../readwrite/BACnetConstructedDataInProgress.java |  3 ++
 .../BACnetConstructedDataInactiveText.java         |  3 ++
 .../BACnetConstructedDataInitialTimeout.java       |  3 ++
 .../BACnetConstructedDataInputReference.java       |  3 ++
 .../BACnetConstructedDataInstallationID.java       |  3 ++
 .../readwrite/BACnetConstructedDataInstanceOf.java |  3 ++
 .../BACnetConstructedDataInstantaneousPower.java   |  3 ++
 .../BACnetConstructedDataIntegerValueAll.java      |  3 ++
 ...netConstructedDataIntegerValueCOVIncrement.java |  3 ++
 .../BACnetConstructedDataIntegerValueDeadband.java |  3 ++
 ...tConstructedDataIntegerValueFaultHighLimit.java |  3 ++
 ...etConstructedDataIntegerValueFaultLowLimit.java |  3 ++
 ...BACnetConstructedDataIntegerValueHighLimit.java |  3 ++
 .../BACnetConstructedDataIntegerValueLowLimit.java |  3 ++
 ...netConstructedDataIntegerValueMaxPresValue.java |  3 ++
 ...netConstructedDataIntegerValueMinPresValue.java |  3 ++
 ...netConstructedDataIntegerValuePresentValue.java |  3 ++
 ...nstructedDataIntegerValueRelinquishDefault.java |  3 ++
 ...ACnetConstructedDataIntegerValueResolution.java |  3 ++
 .../BACnetConstructedDataIntegralConstant.java     |  3 ++
 ...BACnetConstructedDataIntegralConstantUnits.java |  3 ++
 .../BACnetConstructedDataIntervalOffset.java       |  3 ++
 .../readwrite/BACnetConstructedDataIsUTC.java      |  3 ++
 .../readwrite/BACnetConstructedDataKeySets.java    |  3 ++
 .../BACnetConstructedDataLandingCallControl.java   |  3 ++
 .../BACnetConstructedDataLandingCalls.java         |  3 ++
 .../BACnetConstructedDataLandingDoorStatus.java    |  3 ++
 .../BACnetConstructedDataLargeAnalogValueAll.java  |  3 ++
 ...onstructedDataLargeAnalogValueCOVIncrement.java |  3 ++
 ...netConstructedDataLargeAnalogValueDeadband.java |  3 ++
 ...structedDataLargeAnalogValueFaultHighLimit.java |  3 ++
 ...nstructedDataLargeAnalogValueFaultLowLimit.java |  3 ++
 ...etConstructedDataLargeAnalogValueHighLimit.java |  3 ++
 ...netConstructedDataLargeAnalogValueLowLimit.java |  3 ++
 ...onstructedDataLargeAnalogValueMaxPresValue.java |  3 ++
 ...onstructedDataLargeAnalogValueMinPresValue.java |  3 ++
 ...onstructedDataLargeAnalogValuePresentValue.java |  3 ++
 ...uctedDataLargeAnalogValueRelinquishDefault.java |  3 ++
 ...tConstructedDataLargeAnalogValueResolution.java |  3 ++
 .../BACnetConstructedDataLastAccessEvent.java      |  3 ++
 .../BACnetConstructedDataLastAccessPoint.java      |  3 ++
 .../BACnetConstructedDataLastCommandTime.java      |  3 ++
 .../BACnetConstructedDataLastCredentialAdded.java  |  3 ++
 ...CnetConstructedDataLastCredentialAddedTime.java |  3 ++
 ...BACnetConstructedDataLastCredentialRemoved.java |  3 ++
 ...etConstructedDataLastCredentialRemovedTime.java |  3 ++
 .../BACnetConstructedDataLastKeyServer.java        |  3 ++
 .../BACnetConstructedDataLastNotifyRecord.java     |  3 ++
 .../BACnetConstructedDataLastPriority.java         |  3 ++
 .../BACnetConstructedDataLastRestartReason.java    |  3 ++
 .../BACnetConstructedDataLastRestoreTime.java      |  3 ++
 .../BACnetConstructedDataLastStateChange.java      |  3 ++
 .../BACnetConstructedDataLastUseTime.java          |  3 ++
 ...BACnetConstructedDataLifeSafetyAlarmValues.java |  3 ++
 ...tConstructedDataLifeSafetyPointAlarmValues.java |  3 ++
 .../BACnetConstructedDataLifeSafetyPointAll.java   |  3 ++
 ...tConstructedDataLifeSafetyPointFaultValues.java |  3 ++
 ...ConstructedDataLifeSafetyPointPresentValue.java |  3 ++
 ...etConstructedDataLifeSafetyZoneAlarmValues.java |  3 ++
 .../BACnetConstructedDataLifeSafetyZoneAll.java    |  3 ++
 ...etConstructedDataLifeSafetyZoneFaultValues.java |  3 ++
 ...uctedDataLifeSafetyZoneMaintenanceRequired.java |  3 ++
 ...tConstructedDataLifeSafetyZonePresentValue.java |  3 ++
 .../readwrite/BACnetConstructedDataLiftAll.java    |  3 ++
 .../BACnetConstructedDataLiftFaultSignals.java     |  3 ++
 .../BACnetConstructedDataLightingCommand.java      |  3 ++
 ...structedDataLightingCommandDefaultPriority.java |  3 ++
 .../BACnetConstructedDataLightingOutputAll.java    |  3 ++
 ...ConstructedDataLightingOutputFeedbackValue.java |  3 ++
 ...tConstructedDataLightingOutputPresentValue.java |  3 ++
 ...tructedDataLightingOutputRelinquishDefault.java |  3 ++
 ...ConstructedDataLightingOutputTrackingValue.java |  3 ++
 .../BACnetConstructedDataLimitEnable.java          |  3 ++
 ...CnetConstructedDataLimitMonitoringInterval.java |  3 ++
 .../readwrite/BACnetConstructedDataLinkSpeed.java  |  3 ++
 ...ACnetConstructedDataLinkSpeedAutonegotiate.java |  3 ++
 .../readwrite/BACnetConstructedDataLinkSpeeds.java |  3 ++
 .../BACnetConstructedDataListOfGroupMembers.java   |  3 ++
 ...structedDataListOfObjectPropertyReferences.java |  3 ++
 .../BACnetConstructedDataLoadControlAll.java       |  3 ++
 ...CnetConstructedDataLoadControlPresentValue.java |  3 ++
 .../readwrite/BACnetConstructedDataLocalDate.java  |  3 ++
 .../BACnetConstructedDataLocalForwardingOnly.java  |  3 ++
 .../readwrite/BACnetConstructedDataLocalTime.java  |  3 ++
 .../readwrite/BACnetConstructedDataLocation.java   |  3 ++
 .../readwrite/BACnetConstructedDataLockStatus.java |  3 ++
 .../readwrite/BACnetConstructedDataLockout.java    |  3 ++
 ...BACnetConstructedDataLockoutRelinquishTime.java |  3 ++
 .../readwrite/BACnetConstructedDataLogBuffer.java  |  3 ++
 ...CnetConstructedDataLogDeviceObjectProperty.java |  3 ++
 .../BACnetConstructedDataLogInterval.java          |  3 ++
 .../BACnetConstructedDataLoggingObject.java        |  3 ++
 .../BACnetConstructedDataLoggingRecord.java        |  3 ++
 .../BACnetConstructedDataLoggingType.java          |  3 ++
 .../readwrite/BACnetConstructedDataLoopAction.java |  3 ++
 .../readwrite/BACnetConstructedDataLoopAll.java    |  3 ++
 .../BACnetConstructedDataLoopPresentValue.java     |  3 ++
 .../BACnetConstructedDataLowDiffLimit.java         |  3 ++
 .../readwrite/BACnetConstructedDataLowLimit.java   |  3 ++
 .../readwrite/BACnetConstructedDataLowerDeck.java  |  3 ++
 .../readwrite/BACnetConstructedDataMACAddress.java |  3 ++
 .../BACnetConstructedDataMachineRoomID.java        |  3 ++
 .../BACnetConstructedDataMaintenanceRequired.java  |  3 ++
 .../BACnetConstructedDataMakingCarCall.java        |  3 ++
 ...onstructedDataManipulatedVariableReference.java |  3 ++
 ...etConstructedDataManualSlaveAddressBinding.java |  3 ++
 .../BACnetConstructedDataMaskedAlarmValues.java    |  3 ++
 ...BACnetConstructedDataMaxAPDULengthAccepted.java |  3 ++
 .../BACnetConstructedDataMaxActualValue.java       |  3 ++
 .../BACnetConstructedDataMaxFailedAttempts.java    |  3 ++
 .../BACnetConstructedDataMaxInfoFrames.java        |  3 ++
 .../readwrite/BACnetConstructedDataMaxMaster.java  |  3 ++
 .../BACnetConstructedDataMaxPresValue.java         |  3 ++
 .../BACnetConstructedDataMaxSegmentsAccepted.java  |  3 ++
 .../BACnetConstructedDataMaximumOutput.java        |  3 ++
 .../BACnetConstructedDataMaximumValue.java         |  3 ++
 ...BACnetConstructedDataMaximumValueTimestamp.java |  3 ++
 .../readwrite/BACnetConstructedDataMemberOf.java   |  3 ++
 .../BACnetConstructedDataMemberStatusFlags.java    |  3 ++
 .../readwrite/BACnetConstructedDataMembers.java    |  3 ++
 .../BACnetConstructedDataMinActualValue.java       |  3 ++
 .../BACnetConstructedDataMinPresValue.java         |  3 ++
 .../BACnetConstructedDataMinimumOffTime.java       |  3 ++
 .../BACnetConstructedDataMinimumOnTime.java        |  3 ++
 .../BACnetConstructedDataMinimumOutput.java        |  3 ++
 .../BACnetConstructedDataMinimumValue.java         |  3 ++
 ...BACnetConstructedDataMinimumValueTimestamp.java |  3 ++
 .../readwrite/BACnetConstructedDataMode.java       |  3 ++
 .../readwrite/BACnetConstructedDataModelName.java  |  3 ++
 .../BACnetConstructedDataModificationDate.java     |  3 ++
 ...tConstructedDataMultiStateInputAlarmValues.java |  3 ++
 .../BACnetConstructedDataMultiStateInputAll.java   |  3 ++
 ...tConstructedDataMultiStateInputFaultValues.java |  3 ++
 ...nstructedDataMultiStateInputInterfaceValue.java |  3 ++
 .../BACnetConstructedDataMultiStateOutputAll.java  |  3 ++
 ...nstructedDataMultiStateOutputFeedbackValue.java |  3 ++
 ...structedDataMultiStateOutputInterfaceValue.java |  3 ++
 ...uctedDataMultiStateOutputRelinquishDefault.java |  3 ++
 ...tConstructedDataMultiStateValueAlarmValues.java |  3 ++
 .../BACnetConstructedDataMultiStateValueAll.java   |  3 ++
 ...tConstructedDataMultiStateValueFaultValues.java |  3 ++
 ...ructedDataMultiStateValueRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataMusterPoint.java          |  3 ++
 .../BACnetConstructedDataNegativeAccessRules.java  |  3 ++
 ...nstructedDataNetworkAccessSecurityPolicies.java |  3 ++
 .../BACnetConstructedDataNetworkInterfaceName.java |  3 ++
 .../BACnetConstructedDataNetworkNumber.java        |  3 ++
 .../BACnetConstructedDataNetworkNumberQuality.java |  3 ++
 .../BACnetConstructedDataNetworkPortAll.java       |  3 ++
 ...netConstructedDataNetworkPortMaxInfoFrames.java |  3 ++
 .../BACnetConstructedDataNetworkPortMaxMaster.java |  3 ++
 .../BACnetConstructedDataNetworkSecurityAll.java   |  3 ++
 .../BACnetConstructedDataNetworkType.java          |  3 ++
 .../BACnetConstructedDataNextStoppingFloor.java    |  3 ++
 .../BACnetConstructedDataNodeSubtype.java          |  3 ++
 .../readwrite/BACnetConstructedDataNodeType.java   |  3 ++
 .../BACnetConstructedDataNotificationClass.java    |  3 ++
 .../BACnetConstructedDataNotificationClassAll.java |  3 ++
 ...netConstructedDataNotificationForwarderAll.java |  3 ++
 ...BACnetConstructedDataNotificationThreshold.java |  3 ++
 .../readwrite/BACnetConstructedDataNotifyType.java |  3 ++
 .../BACnetConstructedDataNumberOfAPDURetries.java  |  3 ++
 ...structedDataNumberOfAuthenticationPolicies.java |  3 ++
 .../BACnetConstructedDataNumberOfStates.java       |  3 ++
 .../BACnetConstructedDataObjectIdentifier.java     |  3 ++
 .../readwrite/BACnetConstructedDataObjectList.java |  3 ++
 .../readwrite/BACnetConstructedDataObjectName.java |  3 ++
 ...CnetConstructedDataObjectPropertyReference.java |  3 ++
 .../readwrite/BACnetConstructedDataObjectType.java |  3 ++
 .../BACnetConstructedDataOccupancyCount.java       |  3 ++
 .../BACnetConstructedDataOccupancyCountAdjust.java |  3 ++
 .../BACnetConstructedDataOccupancyCountEnable.java |  3 ++
 .../BACnetConstructedDataOccupancyLowerLimit.java  |  3 ++
 ...ConstructedDataOccupancyLowerLimitEnforced.java |  3 ++
 .../BACnetConstructedDataOccupancyState.java       |  3 ++
 .../BACnetConstructedDataOccupancyUpperLimit.java  |  3 ++
 ...ConstructedDataOccupancyUpperLimitEnforced.java |  3 ++
 ...onstructedDataOctetStringValuePresentValue.java |  3 ++
 ...uctedDataOctetStringValueRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataOctetstringValueAll.java  |  3 ++
 .../BACnetConstructedDataOperationDirection.java   |  3 ++
 .../BACnetConstructedDataOperationExpected.java    |  3 ++
 .../readwrite/BACnetConstructedDataOptional.java   |  3 ++
 .../BACnetConstructedDataOutOfService.java         |  3 ++
 .../BACnetConstructedDataOutputUnits.java          |  3 ++
 .../BACnetConstructedDataPacketReorderTime.java    |  3 ++
 .../BACnetConstructedDataPassbackMode.java         |  3 ++
 .../BACnetConstructedDataPassbackTimeout.java      |  3 ++
 .../BACnetConstructedDataPassengerAlarm.java       |  3 ++
 .../readwrite/BACnetConstructedDataPolarity.java   |  3 ++
 .../readwrite/BACnetConstructedDataPortFilter.java |  3 ++
 .../BACnetConstructedDataPositiveAccessRules.java  |  3 ++
 ...CnetConstructedDataPositiveIntegerValueAll.java |  3 ++
 ...ructedDataPositiveIntegerValueCOVIncrement.java |  3 ++
 ...onstructedDataPositiveIntegerValueDeadband.java |  3 ++
 ...ctedDataPositiveIntegerValueFaultHighLimit.java |  3 ++
 ...uctedDataPositiveIntegerValueFaultLowLimit.java |  3 ++
 ...nstructedDataPositiveIntegerValueHighLimit.java |  3 ++
 ...onstructedDataPositiveIntegerValueLowLimit.java |  3 ++
 ...ructedDataPositiveIntegerValueMaxPresValue.java |  3 ++
 ...ructedDataPositiveIntegerValueMinPresValue.java |  3 ++
 ...dDataPositiveIntegerValueRelinquishDefault.java |  3 ++
 ...structedDataPositiveIntegerValueResolution.java |  3 ++
 .../readwrite/BACnetConstructedDataPower.java      |  3 ++
 .../readwrite/BACnetConstructedDataPowerMode.java  |  3 ++
 .../readwrite/BACnetConstructedDataPrescale.java   |  3 ++
 .../BACnetConstructedDataPresentValue.java         |  3 ++
 .../readwrite/BACnetConstructedDataPriority.java   |  3 ++
 .../BACnetConstructedDataPriorityArray.java        |  3 ++
 .../BACnetConstructedDataPriorityForWriting.java   |  3 ++
 .../BACnetConstructedDataProcessIdentifier.java    |  3 ++
 ...CnetConstructedDataProcessIdentifierFilter.java |  3 ++
 .../BACnetConstructedDataProfileLocation.java      |  3 ++
 .../BACnetConstructedDataProfileName.java          |  3 ++
 .../readwrite/BACnetConstructedDataProgramAll.java |  3 ++
 .../BACnetConstructedDataProgramChange.java        |  3 ++
 .../BACnetConstructedDataProgramLocation.java      |  3 ++
 .../BACnetConstructedDataProgramState.java         |  3 ++
 .../BACnetConstructedDataPropertyList.java         |  3 ++
 .../BACnetConstructedDataProportionalConstant.java |  3 ++
 ...etConstructedDataProportionalConstantUnits.java |  3 ++
 .../BACnetConstructedDataProtocolLevel.java        |  3 ++
 ...onstructedDataProtocolObjectTypesSupported.java |  3 ++
 .../BACnetConstructedDataProtocolRevision.java     |  3 ++
 ...etConstructedDataProtocolServicesSupported.java |  3 ++
 .../BACnetConstructedDataProtocolVersion.java      |  3 ++
 ...etConstructedDataPulseConverterAdjustValue.java |  3 ++
 .../BACnetConstructedDataPulseConverterAll.java    |  3 ++
 ...tConstructedDataPulseConverterPresentValue.java |  3 ++
 .../readwrite/BACnetConstructedDataPulseRate.java  |  3 ++
 .../readwrite/BACnetConstructedDataReadOnly.java   |  3 ++
 .../BACnetConstructedDataReasonForDisable.java     |  3 ++
 .../BACnetConstructedDataReasonForHalt.java        |  3 ++
 .../BACnetConstructedDataRecipientList.java        |  3 ++
 .../BACnetConstructedDataRecordCount.java          |  3 ++
 ...netConstructedDataRecordsSinceNotification.java |  3 ++
 .../BACnetConstructedDataReferencePort.java        |  3 ++
 .../BACnetConstructedDataRegisteredCarCall.java    |  3 ++
 .../BACnetConstructedDataReliability.java          |  3 ++
 ...onstructedDataReliabilityEvaluationInhibit.java |  3 ++
 .../BACnetConstructedDataRelinquishDefault.java    |  3 ++
 .../readwrite/BACnetConstructedDataRepresents.java |  3 ++
 .../BACnetConstructedDataRequestedShedLevel.java   |  3 ++
 ...CnetConstructedDataRequestedUpdateInterval.java |  3 ++
 .../readwrite/BACnetConstructedDataRequired.java   |  3 ++
 .../readwrite/BACnetConstructedDataResolution.java |  3 ++
 ...nstructedDataRestartNotificationRecipients.java |  3 ++
 ...BACnetConstructedDataRestoreCompletionTime.java |  3 ++
 ...ACnetConstructedDataRestorePreparationTime.java |  3 ++
 .../BACnetConstructedDataRoutingTable.java         |  3 ++
 .../readwrite/BACnetConstructedDataScale.java      |  3 ++
 .../BACnetConstructedDataScaleFactor.java          |  3 ++
 .../BACnetConstructedDataScheduleAll.java          |  3 ++
 .../BACnetConstructedDataScheduleDefault.java      |  3 ++
 .../BACnetConstructedDataSchedulePresentValue.java |  3 ++
 .../BACnetConstructedDataSecuredStatus.java        |  3 ++
 .../BACnetConstructedDataSecurityPDUTimeout.java   |  3 ++
 .../BACnetConstructedDataSecurityTimeWindow.java   |  3 ++
 ...BACnetConstructedDataSegmentationSupported.java |  3 ++
 .../BACnetConstructedDataSerialNumber.java         |  3 ++
 .../readwrite/BACnetConstructedDataSetpoint.java   |  3 ++
 .../BACnetConstructedDataSetpointReference.java    |  3 ++
 .../readwrite/BACnetConstructedDataSetting.java    |  3 ++
 .../BACnetConstructedDataShedDuration.java         |  3 ++
 ...BACnetConstructedDataShedLevelDescriptions.java |  3 ++
 .../readwrite/BACnetConstructedDataShedLevels.java |  3 ++
 .../readwrite/BACnetConstructedDataSilenced.java   |  3 ++
 .../BACnetConstructedDataSlaveAddressBinding.java  |  3 ++
 .../BACnetConstructedDataSlaveProxyEnable.java     |  3 ++
 .../readwrite/BACnetConstructedDataStartTime.java  |  3 ++
 .../BACnetConstructedDataStateChangeValues.java    |  3 ++
 .../BACnetConstructedDataStateDescription.java     |  3 ++
 .../readwrite/BACnetConstructedDataStateText.java  |  3 ++
 .../BACnetConstructedDataStatusFlags.java          |  3 ++
 .../readwrite/BACnetConstructedDataStopTime.java   |  3 ++
 .../BACnetConstructedDataStopWhenFull.java         |  3 ++
 .../BACnetConstructedDataStrikeCount.java          |  3 ++
 .../BACnetConstructedDataStructuredObjectList.java |  3 ++
 .../BACnetConstructedDataStructuredViewAll.java    |  3 ++
 ...ACnetConstructedDataSubordinateAnnotations.java |  3 ++
 .../BACnetConstructedDataSubordinateList.java      |  3 ++
 .../BACnetConstructedDataSubordinateNodeTypes.java |  3 ++
 ...netConstructedDataSubordinateRelationships.java |  3 ++
 .../BACnetConstructedDataSubordinateTags.java      |  3 ++
 .../BACnetConstructedDataSubscribedRecipients.java |  3 ++
 ...ACnetConstructedDataSupportedFormatClasses.java |  3 ++
 .../BACnetConstructedDataSupportedFormats.java     |  3 ++
 ...ConstructedDataSupportedSecurityAlgorithms.java |  3 ++
 .../BACnetConstructedDataSystemStatus.java         |  3 ++
 .../readwrite/BACnetConstructedDataTags.java       |  3 ++
 .../BACnetConstructedDataThreatAuthority.java      |  3 ++
 .../BACnetConstructedDataThreatLevel.java          |  3 ++
 .../readwrite/BACnetConstructedDataTimeDelay.java  |  3 ++
 .../BACnetConstructedDataTimeDelayNormal.java      |  3 ++
 ...BACnetConstructedDataTimeOfActiveTimeReset.java |  3 ++
 .../BACnetConstructedDataTimeOfDeviceRestart.java  |  3 ++
 ...BACnetConstructedDataTimeOfStateCountReset.java |  3 ++
 ...ACnetConstructedDataTimeOfStrikeCountReset.java |  3 ++
 ...onstructedDataTimePatternValuePresentValue.java |  3 ++
 ...uctedDataTimePatternValueRelinquishDefault.java |  3 ++
 ...ConstructedDataTimeSynchronizationInterval.java |  3 ++
 ...nstructedDataTimeSynchronizationRecipients.java |  3 ++
 .../BACnetConstructedDataTimeValueAll.java         |  3 ++
 ...BACnetConstructedDataTimeValuePresentValue.java |  3 ++
 ...tConstructedDataTimeValueRelinquishDefault.java |  3 ++
 .../BACnetConstructedDataTimepatternValueAll.java  |  3 ++
 .../BACnetConstructedDataTimerAlarmValues.java     |  3 ++
 .../readwrite/BACnetConstructedDataTimerAll.java   |  3 ++
 .../BACnetConstructedDataTimerMaxPresValue.java    |  3 ++
 .../BACnetConstructedDataTimerMinPresValue.java    |  3 ++
 .../BACnetConstructedDataTimerResolution.java      |  3 ++
 .../BACnetConstructedDataTimerRunning.java         |  3 ++
 .../readwrite/BACnetConstructedDataTimerState.java |  3 ++
 .../BACnetConstructedDataTotalRecordCount.java     |  3 ++
 .../readwrite/BACnetConstructedDataTraceFlag.java  |  3 ++
 .../BACnetConstructedDataTrackingValue.java        |  3 ++
 ...onstructedDataTransactionNotificationClass.java |  3 ++
 .../readwrite/BACnetConstructedDataTransition.java |  3 ++
 .../BACnetConstructedDataTrendLogAll.java          |  3 ++
 .../BACnetConstructedDataTrendLogLogBuffer.java    |  3 ++
 ...tructedDataTrendLogLogDeviceObjectProperty.java |  3 ++
 .../BACnetConstructedDataTrendLogMultipleAll.java  |  3 ++
 ...etConstructedDataTrendLogMultipleLogBuffer.java |  3 ++
 ...ataTrendLogMultipleLogDeviceObjectProperty.java |  3 ++
 .../readwrite/BACnetConstructedDataTrigger.java    |  3 ++
 .../readwrite/BACnetConstructedDataUTCOffset.java  |  3 ++
 ...ructedDataUTCTimeSynchronizationRecipients.java |  3 ++
 .../readwrite/BACnetConstructedDataUnits.java      |  3 ++
 .../BACnetConstructedDataUnspecified.java          |  3 ++
 .../BACnetConstructedDataUpdateInterval.java       |  3 ++
 .../BACnetConstructedDataUpdateKeySetTimeout.java  |  3 ++
 .../readwrite/BACnetConstructedDataUpdateTime.java |  3 ++
 ...ACnetConstructedDataUserExternalIdentifier.java |  3 ++
 ...netConstructedDataUserInformationReference.java |  3 ++
 .../readwrite/BACnetConstructedDataUserName.java   |  3 ++
 .../readwrite/BACnetConstructedDataUserType.java   |  3 ++
 .../BACnetConstructedDataUsesRemaining.java        |  3 ++
 .../BACnetConstructedDataVTClassesSupported.java   |  3 ++
 .../BACnetConstructedDataValidSamples.java         |  3 ++
 .../BACnetConstructedDataValueBeforeChange.java    |  3 ++
 .../BACnetConstructedDataValueChangeTime.java      |  3 ++
 .../readwrite/BACnetConstructedDataValueSet.java   |  3 ++
 .../BACnetConstructedDataValueSource.java          |  3 ++
 .../BACnetConstructedDataValueSourceArray.java     |  3 ++
 .../BACnetConstructedDataVarianceValue.java        |  3 ++
 .../BACnetConstructedDataVendorIdentifier.java     |  3 ++
 .../readwrite/BACnetConstructedDataVendorName.java |  3 ++
 .../BACnetConstructedDataVerificationTime.java     |  3 ++
 ...ACnetConstructedDataVirtualMACAddressTable.java |  3 ++
 .../BACnetConstructedDataWeeklySchedule.java       |  3 ++
 .../BACnetConstructedDataWindowInterval.java       |  3 ++
 .../BACnetConstructedDataWindowSamples.java        |  3 ++
 .../BACnetConstructedDataWriteStatus.java          |  3 ++
 .../readwrite/BACnetConstructedDataZoneFrom.java   |  3 ++
 .../BACnetConstructedDataZoneMembers.java          |  3 ++
 .../readwrite/BACnetConstructedDataZoneTo.java     |  3 ++
 .../java/bacnetip/readwrite/BACnetContextTag.java  |  3 ++
 .../readwrite/BACnetContextTagBitString.java       |  3 ++
 .../readwrite/BACnetContextTagBoolean.java         |  3 ++
 .../readwrite/BACnetContextTagCharacterString.java |  3 ++
 .../bacnetip/readwrite/BACnetContextTagDate.java   |  3 ++
 .../bacnetip/readwrite/BACnetContextTagDouble.java |  3 ++
 .../readwrite/BACnetContextTagEnumerated.java      |  3 ++
 .../bacnetip/readwrite/BACnetContextTagNull.java   |  3 ++
 .../BACnetContextTagObjectIdentifier.java          |  3 ++
 .../readwrite/BACnetContextTagOctetString.java     |  3 ++
 .../bacnetip/readwrite/BACnetContextTagReal.java   |  3 ++
 .../readwrite/BACnetContextTagSignedInteger.java   |  3 ++
 .../bacnetip/readwrite/BACnetContextTagTime.java   |  3 ++
 .../readwrite/BACnetContextTagUnknown.java         |  3 ++
 .../readwrite/BACnetContextTagUnsignedInteger.java |  3 ++
 .../BACnetCredentialAuthenticationFactor.java      |  3 ++
 .../bacnetip/readwrite/BACnetDailySchedule.java    |  3 ++
 .../java/bacnetip/readwrite/BACnetDateRange.java   |  3 ++
 .../readwrite/BACnetDateRangeEnclosed.java         |  3 ++
 .../java/bacnetip/readwrite/BACnetDateTime.java    |  3 ++
 .../bacnetip/readwrite/BACnetDateTimeEnclosed.java |  3 ++
 .../bacnetip/readwrite/BACnetDaysOfWeekTagged.java |  3 ++
 .../java/bacnetip/readwrite/BACnetDestination.java |  3 ++
 .../BACnetDeviceObjectPropertyReference.java       |  3 ++
 ...ACnetDeviceObjectPropertyReferenceEnclosed.java |  3 ++
 .../readwrite/BACnetDeviceObjectReference.java     |  3 ++
 .../BACnetDeviceObjectReferenceEnclosed.java       |  3 ++
 .../readwrite/BACnetDeviceStatusTagged.java        |  3 ++
 .../readwrite/BACnetDoorAlarmStateTagged.java      |  3 ++
 .../readwrite/BACnetDoorSecuredStatusTagged.java   |  3 ++
 .../bacnetip/readwrite/BACnetDoorStatusTagged.java |  3 ++
 .../bacnetip/readwrite/BACnetDoorValueTagged.java  |  3 ++
 .../readwrite/BACnetEngineeringUnitsTagged.java    |  3 ++
 .../plc4x/java/bacnetip/readwrite/BACnetError.java |  3 ++
 .../bacnetip/readwrite/BACnetErrorGeneral.java     |  3 ++
 .../readwrite/BACnetEscalatorFaultTagged.java      |  3 ++
 .../readwrite/BACnetEscalatorModeTagged.java       |  3 ++
 .../BACnetEscalatorOperationDirectionTagged.java   |  3 ++
 .../bacnetip/readwrite/BACnetEventLogRecord.java   |  3 ++
 .../readwrite/BACnetEventLogRecordLogDatum.java    |  3 ++
 .../BACnetEventLogRecordLogDatumLogStatus.java     |  3 ++
 .../BACnetEventLogRecordLogDatumNotification.java  |  3 ++
 .../BACnetEventLogRecordLogDatumTimeChange.java    |  3 ++
 .../BACnetEventNotificationSubscription.java       |  3 ++
 .../bacnetip/readwrite/BACnetEventParameter.java   |  3 ++
 .../readwrite/BACnetEventParameterAccessEvent.java |  3 ++
 ...ventParameterAccessEventListOfAccessEvents.java |  3 ++
 .../readwrite/BACnetEventParameterBufferReady.java |  3 ++
 .../BACnetEventParameterChangeOfBitstring.java     |  3 ++
 ...eterChangeOfBitstringListOfBitstringValues.java |  3 ++
 ...ACnetEventParameterChangeOfCharacterString.java |  3 ++
 ...erChangeOfCharacterStringListOfAlarmValues.java |  3 ++
 .../BACnetEventParameterChangeOfDiscreteValue.java |  3 ++
 .../BACnetEventParameterChangeOfLifeSavety.java    |  3 ++
 ...rameterChangeOfLifeSavetyListOfAlarmValues.java |  3 ++
 ...ngeOfLifeSavetyListOfLifeSavetyAlarmValues.java |  3 ++
 .../BACnetEventParameterChangeOfState.java         |  3 ++
 ...netEventParameterChangeOfStateListOfValues.java |  3 ++
 .../BACnetEventParameterChangeOfStatusFlags.java   |  3 ++
 .../BACnetEventParameterChangeOfTimer.java         |  3 ++
 ...ACnetEventParameterChangeOfTimerAlarmValue.java |  3 ++
 .../BACnetEventParameterChangeOfValue.java         |  3 ++
 ...CnetEventParameterChangeOfValueCivCriteria.java |  3 ++
 ...ntParameterChangeOfValueCivCriteriaBitmask.java |  3 ++
 ...alueCivCriteriaReferencedPropertyIncrement.java |  3 ++
 .../BACnetEventParameterCommandFailure.java        |  3 ++
 .../BACnetEventParameterDoubleOutOfRange.java      |  3 ++
 .../readwrite/BACnetEventParameterExtended.java    |  3 ++
 .../BACnetEventParameterExtendedParameters.java    |  3 ++
 .../BACnetEventParameterFloatingLimit.java         |  3 ++
 .../readwrite/BACnetEventParameterNone.java        |  3 ++
 .../readwrite/BACnetEventParameterOutOfRange.java  |  3 ++
 .../BACnetEventParameterSignedOutOfRange.java      |  3 ++
 .../BACnetEventParameterUnsignedOutOfRange.java    |  3 ++
 .../BACnetEventParameterUnsignedRange.java         |  3 ++
 .../bacnetip/readwrite/BACnetEventPriorities.java  |  3 ++
 .../bacnetip/readwrite/BACnetEventStateTagged.java |  3 ++
 .../readwrite/BACnetEventSummariesList.java        |  3 ++
 .../bacnetip/readwrite/BACnetEventSummary.java     |  3 ++
 .../bacnetip/readwrite/BACnetEventTimestamps.java  |  3 ++
 .../readwrite/BACnetEventTimestampsEnclosed.java   |  3 ++
 .../readwrite/BACnetEventTransitionBitsTagged.java |  3 ++
 .../bacnetip/readwrite/BACnetEventTypeTagged.java  |  3 ++
 .../bacnetip/readwrite/BACnetFaultParameter.java   |  3 ++
 .../BACnetFaultParameterFaultCharacterString.java  |  3 ++
 ...meterFaultCharacterStringListOfFaultValues.java |  3 ++
 .../BACnetFaultParameterFaultExtended.java         |  3 ++
 ...ACnetFaultParameterFaultExtendedParameters.java |  3 ++
 ...FaultParameterFaultExtendedParametersEntry.java |  3 ++
 ...meterFaultExtendedParametersEntryBitString.java |  3 ++
 ...rameterFaultExtendedParametersEntryBoolean.java |  3 ++
 ...aultExtendedParametersEntryCharacterString.java |  3 ++
 ...tParameterFaultExtendedParametersEntryDate.java |  3 ++
 ...arameterFaultExtendedParametersEntryDouble.java |  3 ++
 ...eterFaultExtendedParametersEntryEnumerated.java |  3 ++
 ...rameterFaultExtendedParametersEntryInteger.java |  3 ++
 ...tParameterFaultExtendedParametersEntryNull.java |  3 ++
 ...ultExtendedParametersEntryObjectidentifier.java |  3 ++
 ...terFaultExtendedParametersEntryOctetString.java |  3 ++
 ...tParameterFaultExtendedParametersEntryReal.java |  3 ++
 ...meterFaultExtendedParametersEntryReference.java |  3 ++
 ...tParameterFaultExtendedParametersEntryTime.java |  3 ++
 ...ameterFaultExtendedParametersEntryUnsigned.java |  3 ++
 .../BACnetFaultParameterFaultLifeSafety.java       |  3 ++
 ...tParameterFaultLifeSafetyListOfFaultValues.java |  3 ++
 .../readwrite/BACnetFaultParameterFaultListed.java |  3 ++
 .../BACnetFaultParameterFaultOutOfRange.java       |  3 ++
 ...aultParameterFaultOutOfRangeMaxNormalValue.java |  3 ++
 ...rameterFaultOutOfRangeMaxNormalValueDouble.java |  3 ++
 ...ameterFaultOutOfRangeMaxNormalValueInteger.java |  3 ++
 ...ParameterFaultOutOfRangeMaxNormalValueReal.java |  3 ++
 ...meterFaultOutOfRangeMaxNormalValueUnsigned.java |  3 ++
 ...aultParameterFaultOutOfRangeMinNormalValue.java |  3 ++
 ...rameterFaultOutOfRangeMinNormalValueDouble.java |  3 ++
 ...ameterFaultOutOfRangeMinNormalValueInteger.java |  3 ++
 ...ParameterFaultOutOfRangeMinNormalValueReal.java |  3 ++
 ...meterFaultOutOfRangeMinNormalValueUnsigned.java |  3 ++
 .../readwrite/BACnetFaultParameterFaultState.java  |  3 ++
 ...tFaultParameterFaultStateListOfFaultValues.java |  3 ++
 .../BACnetFaultParameterFaultStatusFlags.java      |  3 ++
 .../readwrite/BACnetFaultParameterNone.java        |  3 ++
 .../bacnetip/readwrite/BACnetFaultTypeTagged.java  |  3 ++
 .../readwrite/BACnetFileAccessMethodTagged.java    |  3 ++
 .../readwrite/BACnetGroupChannelValue.java         |  3 ++
 .../readwrite/BACnetGroupChannelValueList.java     |  3 ++
 .../java/bacnetip/readwrite/BACnetHostAddress.java |  3 ++
 .../readwrite/BACnetHostAddressEnclosed.java       |  3 ++
 .../readwrite/BACnetHostAddressIpAddress.java      |  3 ++
 .../bacnetip/readwrite/BACnetHostAddressName.java  |  3 ++
 .../bacnetip/readwrite/BACnetHostAddressNull.java  |  3 ++
 .../java/bacnetip/readwrite/BACnetHostNPort.java   |  3 ++
 .../readwrite/BACnetHostNPortEnclosed.java         |  3 ++
 .../bacnetip/readwrite/BACnetIPModeTagged.java     |  3 ++
 .../bacnetip/readwrite/BACnetKeyIdentifier.java    |  3 ++
 .../readwrite/BACnetLandingCallStatus.java         |  3 ++
 .../readwrite/BACnetLandingCallStatusCommand.java  |  3 ++
 .../BACnetLandingCallStatusCommandDestination.java |  3 ++
 .../BACnetLandingCallStatusCommandDirection.java   |  3 ++
 .../readwrite/BACnetLandingDoorStatus.java         |  3 ++
 .../BACnetLandingDoorStatusLandingDoorsList.java   |  3 ++
 ...CnetLandingDoorStatusLandingDoorsListEntry.java |  3 ++
 .../readwrite/BACnetLifeSafetyModeTagged.java      |  3 ++
 .../readwrite/BACnetLifeSafetyOperationTagged.java |  3 ++
 .../readwrite/BACnetLifeSafetyStateTagged.java     |  3 ++
 .../bacnetip/readwrite/BACnetLiftCarCallList.java  |  3 ++
 .../readwrite/BACnetLiftCarCallListFloorList.java  |  3 ++
 .../readwrite/BACnetLiftCarDirectionTagged.java    |  3 ++
 .../readwrite/BACnetLiftCarDoorCommandTagged.java  |  3 ++
 .../readwrite/BACnetLiftCarDriveStatusTagged.java  |  3 ++
 .../readwrite/BACnetLiftCarModeTagged.java         |  3 ++
 .../bacnetip/readwrite/BACnetLiftFaultTagged.java  |  3 ++
 .../readwrite/BACnetLiftGroupModeTagged.java       |  3 ++
 .../bacnetip/readwrite/BACnetLightingCommand.java  |  3 ++
 .../readwrite/BACnetLightingCommandEnclosed.java   |  3 ++
 .../readwrite/BACnetLightingInProgressTagged.java  |  3 ++
 .../readwrite/BACnetLightingOperationTagged.java   |  3 ++
 .../readwrite/BACnetLightingTransitionTagged.java  |  3 ++
 .../readwrite/BACnetLimitEnableTagged.java         |  3 ++
 .../bacnetip/readwrite/BACnetLockStatusTagged.java |  3 ++
 .../java/bacnetip/readwrite/BACnetLogData.java     |  3 ++
 .../bacnetip/readwrite/BACnetLogDataLogData.java   |  3 ++
 .../readwrite/BACnetLogDataLogDataEntry.java       |  3 ++
 .../BACnetLogDataLogDataEntryAnyValue.java         |  3 ++
 .../BACnetLogDataLogDataEntryBitStringValue.java   |  3 ++
 .../BACnetLogDataLogDataEntryBooleanValue.java     |  3 ++
 .../BACnetLogDataLogDataEntryEnumeratedValue.java  |  3 ++
 .../BACnetLogDataLogDataEntryFailure.java          |  3 ++
 .../BACnetLogDataLogDataEntryIntegerValue.java     |  3 ++
 .../BACnetLogDataLogDataEntryNullValue.java        |  3 ++
 .../BACnetLogDataLogDataEntryRealValue.java        |  3 ++
 .../BACnetLogDataLogDataEntryUnsignedValue.java    |  3 ++
 .../readwrite/BACnetLogDataLogDataTimeChange.java  |  3 ++
 .../bacnetip/readwrite/BACnetLogDataLogStatus.java |  3 ++
 .../readwrite/BACnetLogMultipleRecord.java         |  3 ++
 .../java/bacnetip/readwrite/BACnetLogRecord.java   |  3 ++
 .../readwrite/BACnetLogRecordLogDatum.java         |  3 ++
 .../readwrite/BACnetLogRecordLogDatumAnyValue.java |  3 ++
 .../BACnetLogRecordLogDatumBitStringValue.java     |  3 ++
 .../BACnetLogRecordLogDatumBooleanValue.java       |  3 ++
 .../BACnetLogRecordLogDatumEnumeratedValue.java    |  3 ++
 .../readwrite/BACnetLogRecordLogDatumFailure.java  |  3 ++
 .../BACnetLogRecordLogDatumIntegerValue.java       |  3 ++
 .../BACnetLogRecordLogDatumLogStatus.java          |  3 ++
 .../BACnetLogRecordLogDatumNullValue.java          |  3 ++
 .../BACnetLogRecordLogDatumRealValue.java          |  3 ++
 .../BACnetLogRecordLogDatumTimeChange.java         |  3 ++
 .../BACnetLogRecordLogDatumUnsignedValue.java      |  3 ++
 .../bacnetip/readwrite/BACnetLogStatusTagged.java  |  3 ++
 .../readwrite/BACnetLoggingTypeTagged.java         |  3 ++
 .../readwrite/BACnetMaintenanceTagged.java         |  3 ++
 .../java/bacnetip/readwrite/BACnetNameValue.java   |  3 ++
 .../readwrite/BACnetNameValueCollection.java       |  3 ++
 .../BACnetNetworkNumberQualityTagged.java          |  3 ++
 .../readwrite/BACnetNetworkPortCommandTagged.java  |  3 ++
 .../readwrite/BACnetNetworkSecurityPolicy.java     |  3 ++
 .../readwrite/BACnetNetworkTypeTagged.java         |  3 ++
 .../bacnetip/readwrite/BACnetNodeTypeTagged.java   |  3 ++
 .../readwrite/BACnetNotificationParameters.java    |  3 ++
 .../BACnetNotificationParametersAccessEvent.java   |  3 ++
 .../BACnetNotificationParametersBufferReady.java   |  3 ++
 ...netNotificationParametersChangeOfBitString.java |  3 ++
 ...ificationParametersChangeOfCharacterString.java |  3 ++
 ...otificationParametersChangeOfDiscreteValue.java |  3 ++
 ...ionParametersChangeOfDiscreteValueNewValue.java |  3 ++
 ...metersChangeOfDiscreteValueNewValueBoolean.java |  3 ++
 ...angeOfDiscreteValueNewValueCharacterString.java |  3 ++
 ...etersChangeOfDiscreteValueNewValueDatetime.java |  3 ++
 ...ersChangeOfDiscreteValueNewValueEnumerated.java |  3 ++
 ...metersChangeOfDiscreteValueNewValueInteger.java |  3 ++
 ...ngeOfDiscreteValueNewValueObjectidentifier.java |  3 ++
 ...tersChangeOfDiscreteValueNewValueOctetDate.java |  3 ++
 ...rsChangeOfDiscreteValueNewValueOctetString.java |  3 ++
 ...tersChangeOfDiscreteValueNewValueOctetTime.java |  3 ++
 ...etersChangeOfDiscreteValueNewValueUnsigned.java |  3 ++
 ...etNotificationParametersChangeOfLifeSafety.java |  3 ++
 ...tNotificationParametersChangeOfReliability.java |  3 ++
 .../BACnetNotificationParametersChangeOfState.java |  3 ++
 ...tNotificationParametersChangeOfStatusFlags.java |  3 ++
 .../BACnetNotificationParametersChangeOfTimer.java |  3 ++
 .../BACnetNotificationParametersChangeOfValue.java |  3 ++
 ...otificationParametersChangeOfValueNewValue.java |  3 ++
 ...ParametersChangeOfValueNewValueChangedBits.java |  3 ++
 ...arametersChangeOfValueNewValueChangedValue.java |  3 ++
 ...BACnetNotificationParametersCommandFailure.java |  3 ++
 ...CnetNotificationParametersComplexEventType.java |  3 ++
 ...CnetNotificationParametersDoubleOutOfRange.java |  3 ++
 .../BACnetNotificationParametersExtended.java      |  3 ++
 ...etNotificationParametersExtendedParameters.java |  3 ++
 .../BACnetNotificationParametersFloatingLimit.java |  3 ++
 .../BACnetNotificationParametersOutOfRange.java    |  3 ++
 ...CnetNotificationParametersSignedOutOfRange.java |  3 ++
 ...etNotificationParametersUnsignedOutOfRange.java |  3 ++
 .../BACnetNotificationParametersUnsignedRange.java |  3 ++
 .../bacnetip/readwrite/BACnetNotifyTypeTagged.java |  3 ++
 .../readwrite/BACnetObjectPropertyReference.java   |  3 ++
 .../BACnetObjectPropertyReferenceEnclosed.java     |  3 ++
 .../bacnetip/readwrite/BACnetObjectTypeTagged.java |  3 ++
 .../BACnetObjectTypesSupportedTagged.java          |  3 ++
 .../java/bacnetip/readwrite/BACnetOpeningTag.java  |  3 ++
 .../bacnetip/readwrite/BACnetOptionalBinaryPV.java |  3 ++
 .../readwrite/BACnetOptionalBinaryPVNull.java      |  3 ++
 .../readwrite/BACnetOptionalBinaryPVValue.java     |  3 ++
 .../readwrite/BACnetOptionalCharacterString.java   |  3 ++
 .../BACnetOptionalCharacterStringNull.java         |  3 ++
 .../BACnetOptionalCharacterStringValue.java        |  3 ++
 .../bacnetip/readwrite/BACnetOptionalREAL.java     |  3 ++
 .../bacnetip/readwrite/BACnetOptionalREALNull.java |  3 ++
 .../readwrite/BACnetOptionalREALValue.java         |  3 ++
 .../bacnetip/readwrite/BACnetOptionalUnsigned.java |  3 ++
 .../readwrite/BACnetOptionalUnsignedNull.java      |  3 ++
 .../readwrite/BACnetOptionalUnsignedValue.java     |  3 ++
 .../bacnetip/readwrite/BACnetPolarityTagged.java   |  3 ++
 .../bacnetip/readwrite/BACnetPortPermission.java   |  3 ++
 .../java/bacnetip/readwrite/BACnetPrescale.java    |  3 ++
 .../bacnetip/readwrite/BACnetPriorityArray.java    |  3 ++
 .../bacnetip/readwrite/BACnetPriorityValue.java    |  3 ++
 .../readwrite/BACnetPriorityValueBitString.java    |  3 ++
 .../readwrite/BACnetPriorityValueBoolean.java      |  3 ++
 .../BACnetPriorityValueCharacterString.java        |  3 ++
 .../BACnetPriorityValueConstructedValue.java       |  3 ++
 .../readwrite/BACnetPriorityValueDate.java         |  3 ++
 .../readwrite/BACnetPriorityValueDateTime.java     |  3 ++
 .../readwrite/BACnetPriorityValueDouble.java       |  3 ++
 .../readwrite/BACnetPriorityValueEnumerated.java   |  3 ++
 .../readwrite/BACnetPriorityValueInteger.java      |  3 ++
 .../readwrite/BACnetPriorityValueNull.java         |  3 ++
 .../BACnetPriorityValueObjectidentifier.java       |  3 ++
 .../readwrite/BACnetPriorityValueOctetString.java  |  3 ++
 .../readwrite/BACnetPriorityValueReal.java         |  3 ++
 .../readwrite/BACnetPriorityValueTime.java         |  3 ++
 .../readwrite/BACnetPriorityValueUnsigned.java     |  3 ++
 .../readwrite/BACnetProcessIdSelection.java        |  3 ++
 .../readwrite/BACnetProcessIdSelectionNull.java    |  3 ++
 .../readwrite/BACnetProcessIdSelectionValue.java   |  3 ++
 .../readwrite/BACnetProgramErrorTagged.java        |  3 ++
 .../readwrite/BACnetProgramRequestTagged.java      |  3 ++
 .../readwrite/BACnetProgramStateTagged.java        |  3 ++
 .../readwrite/BACnetPropertyAccessResult.java      |  3 ++
 .../BACnetPropertyAccessResultAccessResult.java    |  3 ++
 ...ccessResultAccessResultPropertyAccessError.java |  3 ++
 ...pertyAccessResultAccessResultPropertyValue.java |  3 ++
 .../readwrite/BACnetPropertyIdentifierTagged.java  |  3 ++
 .../readwrite/BACnetPropertyReference.java         |  3 ++
 .../readwrite/BACnetPropertyReferenceEnclosed.java |  3 ++
 .../BACnetPropertyStateActionUnknown.java          |  3 ++
 .../bacnetip/readwrite/BACnetPropertyStates.java   |  3 ++
 ...ACnetPropertyStatesAccessCredentialDisable.java |  3 ++
 ...ropertyStatesAccessCredentialDisableReason.java |  3 ++
 .../readwrite/BACnetPropertyStatesAccessEvent.java |  3 ++
 .../readwrite/BACnetPropertyStatesAction.java      |  3 ++
 .../BACnetPropertyStatesAuthenticationStatus.java  |  3 ++
 .../readwrite/BACnetPropertyStatesBackupState.java |  3 ++
 .../BACnetPropertyStatesBacnetIpMode.java          |  3 ++
 .../BACnetPropertyStatesBinaryLightningValue.java  |  3 ++
 .../readwrite/BACnetPropertyStatesBinaryValue.java |  3 ++
 .../readwrite/BACnetPropertyStatesBoolean.java     |  3 ++
 .../BACnetPropertyStatesDoorAlarmState.java        |  3 ++
 .../BACnetPropertyStatesDoorSecuredStatus.java     |  3 ++
 .../readwrite/BACnetPropertyStatesDoorStatus.java  |  3 ++
 .../readwrite/BACnetPropertyStatesDoorValue.java   |  3 ++
 .../readwrite/BACnetPropertyStatesEnclosed.java    |  3 ++
 .../BACnetPropertyStatesEscalatorFault.java        |  3 ++
 .../BACnetPropertyStatesEscalatorMode.java         |  3 ++
 ...tPropertyStatesEscalatorOperationDirection.java |  3 ++
 .../readwrite/BACnetPropertyStatesEventType.java   |  3 ++
 .../BACnetPropertyStatesExtendedValue.java         |  3 ++
 .../BACnetPropertyStatesFileAccessMethod.java      |  3 ++
 .../BACnetPropertyStatesIntegerValue.java          |  3 ++
 .../BACnetPropertyStatesLifeSafetyMode.java        |  3 ++
 .../BACnetPropertyStatesLifeSafetyOperations.java  |  3 ++
 .../BACnetPropertyStatesLifeSafetyState.java       |  3 ++
 .../BACnetPropertyStatesLiftCarDirection.java      |  3 ++
 .../BACnetPropertyStatesLiftCarDoorCommand.java    |  3 ++
 .../BACnetPropertyStatesLiftCarDriveStatus.java    |  3 ++
 .../readwrite/BACnetPropertyStatesLiftCarMode.java |  3 ++
 .../readwrite/BACnetPropertyStatesLiftFault.java   |  3 ++
 .../BACnetPropertyStatesLiftGroupMode.java         |  3 ++
 .../BACnetPropertyStatesLightningInProgress.java   |  3 ++
 .../BACnetPropertyStatesLightningOperation.java    |  3 ++
 .../BACnetPropertyStatesLightningTransition.java   |  3 ++
 .../readwrite/BACnetPropertyStatesLockStatus.java  |  3 ++
 .../readwrite/BACnetPropertyStatesMaintenance.java |  3 ++
 .../BACnetPropertyStatesNetworkNumberQuality.java  |  3 ++
 .../BACnetPropertyStatesNetworkPortCommand.java    |  3 ++
 .../readwrite/BACnetPropertyStatesNetworkType.java |  3 ++
 .../readwrite/BACnetPropertyStatesNodeType.java    |  3 ++
 .../readwrite/BACnetPropertyStatesNotifyType.java  |  3 ++
 .../readwrite/BACnetPropertyStatesPolarity.java    |  3 ++
 .../BACnetPropertyStatesProgramChange.java         |  3 ++
 .../BACnetPropertyStatesProtocolLevel.java         |  3 ++
 .../BACnetPropertyStatesReasonForHalt.java         |  3 ++
 .../readwrite/BACnetPropertyStatesReliability.java |  3 ++
 .../BACnetPropertyStatesRestartReason.java         |  3 ++
 .../BACnetPropertyStatesSecurityLevel.java         |  3 ++
 .../readwrite/BACnetPropertyStatesShedState.java   |  3 ++
 .../BACnetPropertyStatesSilencedState.java         |  3 ++
 .../readwrite/BACnetPropertyStatesState.java       |  3 ++
 .../BACnetPropertyStatesSystemStatus.java          |  3 ++
 .../readwrite/BACnetPropertyStatesTimerState.java  |  3 ++
 .../BACnetPropertyStatesTimerTransition.java       |  3 ++
 .../readwrite/BACnetPropertyStatesUnits.java       |  3 ++
 .../readwrite/BACnetPropertyStatesWriteStatus.java |  3 ++
 .../BACnetPropertyStatesZoneOccupanyState.java     |  3 ++
 .../bacnetip/readwrite/BACnetPropertyValue.java    |  3 ++
 .../bacnetip/readwrite/BACnetPropertyValues.java   |  3 ++
 .../readwrite/BACnetPropertyWriteDefinition.java   |  3 ++
 .../readwrite/BACnetProtocolLevelTagged.java       |  3 ++
 .../readwrite/BACnetReadAccessProperty.java        |  3 ++
 .../BACnetReadAccessPropertyReadResult.java        |  3 ++
 .../bacnetip/readwrite/BACnetReadAccessResult.java |  3 ++
 .../BACnetReadAccessResultListOfResults.java       |  3 ++
 .../readwrite/BACnetReadAccessSpecification.java   |  3 ++
 .../java/bacnetip/readwrite/BACnetRecipient.java   |  3 ++
 .../bacnetip/readwrite/BACnetRecipientAddress.java |  3 ++
 .../bacnetip/readwrite/BACnetRecipientDevice.java  |  3 ++
 .../readwrite/BACnetRecipientEnclosed.java         |  3 ++
 .../bacnetip/readwrite/BACnetRecipientProcess.java |  3 ++
 .../readwrite/BACnetRecipientProcessEnclosed.java  |  3 ++
 .../readwrite/BACnetRejectReasonTagged.java        |  3 ++
 .../readwrite/BACnetRelationshipTagged.java        |  3 ++
 .../readwrite/BACnetReliabilityTagged.java         |  3 ++
 .../readwrite/BACnetRestartReasonTagged.java       |  3 ++
 .../readwrite/BACnetResultFlagsTagged.java         |  3 ++
 .../java/bacnetip/readwrite/BACnetRouterEntry.java |  3 ++
 .../readwrite/BACnetRouterEntryStatusTagged.java   |  3 ++
 .../plc4x/java/bacnetip/readwrite/BACnetScale.java |  3 ++
 .../bacnetip/readwrite/BACnetScaleFloatScale.java  |  3 ++
 .../readwrite/BACnetScaleIntegerScale.java         |  3 ++
 .../bacnetip/readwrite/BACnetSecurityKeySet.java   |  3 ++
 .../readwrite/BACnetSecurityKeySetKeyIds.java      |  3 ++
 .../readwrite/BACnetSecurityLevelTagged.java       |  3 ++
 .../readwrite/BACnetSecurityPolicyTagged.java      |  3 ++
 .../readwrite/BACnetSegmentationTagged.java        |  3 ++
 .../java/bacnetip/readwrite/BACnetServiceAck.java  |  3 ++
 .../readwrite/BACnetServiceAckAtomicReadFile.java  |  3 ++
 .../BACnetServiceAckAtomicReadFileRecord.java      |  5 ++-
 .../BACnetServiceAckAtomicReadFileStream.java      |  3 ++
 ...CnetServiceAckAtomicReadFileStreamOrRecord.java |  3 ++
 .../readwrite/BACnetServiceAckAtomicWriteFile.java |  3 ++
 .../readwrite/BACnetServiceAckAuthenticate.java    |  3 ++
 .../BACnetServiceAckConfirmedPrivateTransfer.java  |  3 ++
 .../readwrite/BACnetServiceAckCreateObject.java    |  3 ++
 .../readwrite/BACnetServiceAckGetAlarmSummary.java |  3 ++
 .../BACnetServiceAckGetEnrollmentSummary.java      |  3 ++
 .../BACnetServiceAckGetEventInformation.java       |  3 ++
 .../readwrite/BACnetServiceAckReadProperty.java    |  3 ++
 .../BACnetServiceAckReadPropertyConditional.java   |  3 ++
 .../BACnetServiceAckReadPropertyMultiple.java      |  3 ++
 .../readwrite/BACnetServiceAckReadRange.java       |  3 ++
 .../readwrite/BACnetServiceAckRequestKey.java      |  3 ++
 .../bacnetip/readwrite/BACnetServiceAckVTData.java |  3 ++
 .../bacnetip/readwrite/BACnetServiceAckVTOpen.java |  3 ++
 .../readwrite/BACnetServicesSupportedTagged.java   |  3 ++
 .../readwrite/BACnetSetpointReference.java         |  3 ++
 .../java/bacnetip/readwrite/BACnetShedLevel.java   |  3 ++
 .../bacnetip/readwrite/BACnetShedLevelAmount.java  |  3 ++
 .../bacnetip/readwrite/BACnetShedLevelLevel.java   |  3 ++
 .../bacnetip/readwrite/BACnetShedLevelPercent.java |  3 ++
 .../bacnetip/readwrite/BACnetShedStateTagged.java  |  3 ++
 .../readwrite/BACnetSilencedStateTagged.java       |  3 ++
 .../bacnetip/readwrite/BACnetSpecialEvent.java     |  3 ++
 .../BACnetSpecialEventListOfTimeValues.java        |  3 ++
 .../readwrite/BACnetSpecialEventPeriod.java        |  3 ++
 .../BACnetSpecialEventPeriodCalendarEntry.java     |  3 ++
 .../BACnetSpecialEventPeriodCalendarReference.java |  3 ++
 .../readwrite/BACnetStatusFlagsTagged.java         |  3 ++
 .../java/bacnetip/readwrite/BACnetTagHeader.java   |  3 ++
 .../readwrite/BACnetTagPayloadBitString.java       |  3 ++
 .../readwrite/BACnetTagPayloadBoolean.java         |  3 ++
 .../readwrite/BACnetTagPayloadCharacterString.java |  3 ++
 .../bacnetip/readwrite/BACnetTagPayloadDate.java   |  3 ++
 .../bacnetip/readwrite/BACnetTagPayloadDouble.java |  3 ++
 .../readwrite/BACnetTagPayloadEnumerated.java      |  3 ++
 .../BACnetTagPayloadObjectIdentifier.java          |  3 ++
 .../readwrite/BACnetTagPayloadOctetString.java     |  3 ++
 .../bacnetip/readwrite/BACnetTagPayloadReal.java   |  3 ++
 .../readwrite/BACnetTagPayloadSignedInteger.java   |  3 ++
 .../bacnetip/readwrite/BACnetTagPayloadTime.java   |  3 ++
 .../readwrite/BACnetTagPayloadUnsignedInteger.java |  3 ++
 .../java/bacnetip/readwrite/BACnetTimeStamp.java   |  3 ++
 .../readwrite/BACnetTimeStampDateTime.java         |  3 ++
 .../readwrite/BACnetTimeStampEnclosed.java         |  3 ++
 .../readwrite/BACnetTimeStampSequence.java         |  3 ++
 .../bacnetip/readwrite/BACnetTimeStampTime.java    |  3 ++
 .../readwrite/BACnetTimeStampsEnclosed.java        |  3 ++
 .../java/bacnetip/readwrite/BACnetTimeValue.java   |  3 ++
 .../readwrite/BACnetTimerStateChangeValue.java     |  3 ++
 .../BACnetTimerStateChangeValueBitString.java      |  3 ++
 .../BACnetTimerStateChangeValueBoolean.java        |  3 ++
 ...BACnetTimerStateChangeValueCharacterString.java |  3 ++
 ...ACnetTimerStateChangeValueConstructedValue.java |  3 ++
 .../readwrite/BACnetTimerStateChangeValueDate.java |  3 ++
 .../BACnetTimerStateChangeValueDateTime.java       |  3 ++
 .../BACnetTimerStateChangeValueDouble.java         |  3 ++
 .../BACnetTimerStateChangeValueEnumerated.java     |  3 ++
 .../BACnetTimerStateChangeValueInteger.java        |  3 ++
 ...BACnetTimerStateChangeValueLightingCommand.java |  3 ++
 .../BACnetTimerStateChangeValueNoValue.java        |  3 ++
 .../readwrite/BACnetTimerStateChangeValueNull.java |  3 ++
 ...ACnetTimerStateChangeValueObjectidentifier.java |  3 ++
 .../BACnetTimerStateChangeValueOctetString.java    |  3 ++
 .../readwrite/BACnetTimerStateChangeValueReal.java |  3 ++
 .../readwrite/BACnetTimerStateChangeValueTime.java |  3 ++
 .../BACnetTimerStateChangeValueUnsigned.java       |  3 ++
 .../bacnetip/readwrite/BACnetTimerStateTagged.java |  3 ++
 .../readwrite/BACnetTimerTransitionTagged.java     |  3 ++
 .../BACnetUnconfirmedServiceChoiceTagged.java      |  3 ++
 .../readwrite/BACnetUnconfirmedServiceRequest.java |  3 ++
 .../BACnetUnconfirmedServiceRequestIAm.java        |  3 ++
 .../BACnetUnconfirmedServiceRequestIHave.java      |  3 ++
 ...confirmedServiceRequestTimeSynchronization.java |  3 ++
 ...firmedServiceRequestUTCTimeSynchronization.java |  3 ++
 ...edServiceRequestUnconfirmedCOVNotification.java |  3 ++
 ...eRequestUnconfirmedCOVNotificationMultiple.java |  3 ++
 ...ServiceRequestUnconfirmedEventNotification.java |  3 ++
 ...edServiceRequestUnconfirmedPrivateTransfer.java |  3 ++
 ...firmedServiceRequestUnconfirmedTextMessage.java |  3 ++
 .../BACnetUnconfirmedServiceRequestUnknown.java    |  3 ++
 .../BACnetUnconfirmedServiceRequestWhoHas.java     |  3 ++
 ...ACnetUnconfirmedServiceRequestWhoHasObject.java |  3 ++
 ...firmedServiceRequestWhoHasObjectIdentifier.java |  3 ++
 ...tUnconfirmedServiceRequestWhoHasObjectName.java |  3 ++
 .../BACnetUnconfirmedServiceRequestWhoIs.java      |  3 ++
 .../BACnetUnconfirmedServiceRequestWriteGroup.java |  3 ++
 .../java/bacnetip/readwrite/BACnetVMACEntry.java   |  3 ++
 .../bacnetip/readwrite/BACnetVTClassTagged.java    |  3 ++
 .../java/bacnetip/readwrite/BACnetVTSession.java   |  3 ++
 .../java/bacnetip/readwrite/BACnetValueSource.java |  3 ++
 .../readwrite/BACnetValueSourceAddress.java        |  3 ++
 .../bacnetip/readwrite/BACnetValueSourceNone.java  |  3 ++
 .../readwrite/BACnetValueSourceObject.java         |  3 ++
 .../bacnetip/readwrite/BACnetVendorIdTagged.java   |  3 ++
 .../java/bacnetip/readwrite/BACnetWeekNDay.java    |  3 ++
 .../bacnetip/readwrite/BACnetWeekNDayTagged.java   |  3 ++
 .../readwrite/BACnetWriteAccessSpecification.java  |  3 ++
 .../readwrite/BACnetWriteStatusTagged.java         |  3 ++
 .../apache/plc4x/java/bacnetip/readwrite/BVLC.java |  3 ++
 .../BVLCBroadcastDistributionTableEntry.java       |  3 ++
 .../BVLCDeleteForeignDeviceTableEntry.java         |  3 ++
 .../BVLCDistributeBroadcastToNetwork.java          |  3 ++
 .../readwrite/BVLCForeignDeviceTableEntry.java     |  3 ++
 .../java/bacnetip/readwrite/BVLCForwardedNPDU.java |  3 ++
 .../readwrite/BVLCOriginalBroadcastNPDU.java       |  3 ++
 .../readwrite/BVLCOriginalUnicastNPDU.java         |  3 ++
 .../BVLCReadBroadcastDistributionTable.java        |  3 ++
 .../BVLCReadBroadcastDistributionTableAck.java     |  3 ++
 .../readwrite/BVLCReadForeignDeviceTable.java      |  3 ++
 .../readwrite/BVLCReadForeignDeviceTableAck.java   |  3 ++
 .../readwrite/BVLCRegisterForeignDevice.java       |  3 ++
 .../plc4x/java/bacnetip/readwrite/BVLCResult.java  |  3 ++
 .../bacnetip/readwrite/BVLCResultCodeTagged.java   |  3 ++
 .../java/bacnetip/readwrite/BVLCSecureBVLL.java    |  3 ++
 .../BVLCWriteBroadcastDistributionTable.java       |  3 ++
 .../java/bacnetip/readwrite/BacnetConstants.java   |  3 ++
 .../bacnetip/readwrite/ChangeListAddError.java     |  3 ++
 .../bacnetip/readwrite/ChangeListRemoveError.java  |  3 ++
 .../ConfirmedEventNotificationRequest.java         |  3 ++
 .../readwrite/ConfirmedPrivateTransferError.java   |  3 ++
 .../java/bacnetip/readwrite/CreateObjectError.java |  3 ++
 .../plc4x/java/bacnetip/readwrite/Error.java       |  3 ++
 .../java/bacnetip/readwrite/ErrorClassTagged.java  |  3 ++
 .../java/bacnetip/readwrite/ErrorCodeTagged.java   |  3 ++
 .../java/bacnetip/readwrite/ErrorEnclosed.java     |  3 ++
 .../bacnetip/readwrite/ListOfCovNotifications.java |  3 ++
 .../readwrite/ListOfCovNotificationsList.java      |  3 ++
 .../readwrite/ListOfCovNotificationsValue.java     |  3 ++
 .../apache/plc4x/java/bacnetip/readwrite/NLM.java  |  3 ++
 .../bacnetip/readwrite/NLMChallengeRequest.java    |  3 ++
 .../NLMDisconnectConnectionToNetwork.java          |  3 ++
 .../readwrite/NLMEstablishConnectionToNetwork.java |  3 ++
 .../bacnetip/readwrite/NLMIAmRouterToNetwork.java  |  3 ++
 .../readwrite/NLMICouldBeRouterToNetwork.java      |  3 ++
 .../readwrite/NLMInitalizeRoutingTable.java        |  5 ++-
 .../readwrite/NLMInitalizeRoutingTableAck.java     |  5 ++-
 .../NLMInitalizeRoutingTablePortMapping.java       |  3 ++
 .../bacnetip/readwrite/NLMNetworkNumberIs.java     |  3 ++
 .../readwrite/NLMRejectRouterToNetwork.java        |  3 ++
 .../bacnetip/readwrite/NLMRequestKeyUpdate.java    |  3 ++
 .../bacnetip/readwrite/NLMRequestMasterKey.java    |  3 ++
 .../plc4x/java/bacnetip/readwrite/NLMReserved.java |  3 ++
 .../readwrite/NLMRouterAvailableToNetwork.java     |  3 ++
 .../bacnetip/readwrite/NLMRouterBusyToNetwork.java |  3 ++
 .../bacnetip/readwrite/NLMSecurityPayload.java     |  3 ++
 .../bacnetip/readwrite/NLMSecurityResponse.java    |  3 ++
 .../java/bacnetip/readwrite/NLMSetMasterKey.java   |  3 ++
 .../readwrite/NLMUpdateKeyDistributionKey.java     |  3 ++
 .../bacnetip/readwrite/NLMUpdateKeyUpdate.java     |  7 +++--
 .../readwrite/NLMUpdateKeyUpdateControlFlags.java  |  3 ++
 .../readwrite/NLMUpdateKeyUpdateKeyEntry.java      |  3 ++
 .../readwrite/NLMVendorProprietaryMessage.java     |  3 ++
 .../bacnetip/readwrite/NLMWhatIsNetworkNumber.java |  3 ++
 .../readwrite/NLMWhoIsRouterToNetwork.java         |  3 ++
 .../apache/plc4x/java/bacnetip/readwrite/NPDU.java |  3 ++
 .../plc4x/java/bacnetip/readwrite/NPDUControl.java |  3 ++
 .../readwrite/NPDUNetworkPriorityTagged.java       |  3 ++
 .../readwrite/SecurityResponseCodeTagged.java      |  3 ++
 .../SubscribeCOVPropertyMultipleError.java         |  3 ++
 ...opertyMultipleErrorFirstFailedSubscription.java |  3 ++
 .../java/bacnetip/readwrite/VTCloseError.java      |  3 ++
 .../VTCloseErrorListOfVTSessionIdentifiers.java    |  3 ++
 .../readwrite/WritePropertyMultipleError.java      |  3 ++
 .../java/cbus/readwrite/AccessControlData.java     |  3 ++
 .../AccessControlDataAccessPointClosed.java        |  3 ++
 .../AccessControlDataAccessPointForcedOpen.java    |  3 ++
 .../AccessControlDataAccessPointLeftOpen.java      |  3 ++
 .../AccessControlDataCloseAccessPoint.java         |  3 ++
 .../AccessControlDataInvalidAccessRequest.java     |  3 ++
 .../AccessControlDataLockAccessPoint.java          |  3 ++
 .../readwrite/AccessControlDataRequestToExit.java  |  3 ++
 .../AccessControlDataValidAccessRequest.java       |  3 ++
 .../java/cbus/readwrite/AirConditioningData.java   |  3 ++
 .../AirConditioningDataHumidityScheduleEntry.java  |  3 ++
 .../AirConditioningDataHvacScheduleEntry.java      |  3 ++
 .../cbus/readwrite/AirConditioningDataRefresh.java |  3 ++
 ...ConditioningDataSetHumidityLowerGuardLimit.java |  3 ++
 ...AirConditioningDataSetHumiditySetbackLimit.java |  3 ++
 ...ConditioningDataSetHumidityUpperGuardLimit.java |  3 ++
 .../AirConditioningDataSetHvacLowerGuardLimit.java |  3 ++
 .../AirConditioningDataSetHvacSetbackLimit.java    |  3 ++
 .../AirConditioningDataSetHvacUpperGuardLimit.java |  3 ++
 .../AirConditioningDataSetPlantHumidityLevel.java  |  3 ++
 .../AirConditioningDataSetPlantHvacLevel.java      |  3 ++
 .../AirConditioningDataSetZoneGroupOff.java        |  3 ++
 .../AirConditioningDataSetZoneGroupOn.java         |  3 ++
 .../AirConditioningDataSetZoneHumidityMode.java    |  3 ++
 .../AirConditioningDataSetZoneHvacMode.java        |  3 ++
 .../readwrite/AirConditioningDataZoneHumidity.java |  3 ++
 ...AirConditioningDataZoneHumidityPlantStatus.java |  3 ++
 .../AirConditioningDataZoneHvacPlantStatus.java    |  3 ++
 .../AirConditioningDataZoneTemperature.java        |  3 ++
 .../apache/plc4x/java/cbus/readwrite/Alpha.java    |  3 ++
 .../java/cbus/readwrite/ApplicationAddress1.java   |  3 ++
 .../java/cbus/readwrite/ApplicationAddress2.java   |  3 ++
 .../plc4x/java/cbus/readwrite/BridgeAddress.java   |  3 ++
 .../apache/plc4x/java/cbus/readwrite/CALData.java  |  3 ++
 .../java/cbus/readwrite/CALDataAcknowledge.java    |  3 ++
 .../java/cbus/readwrite/CALDataGetStatus.java      |  3 ++
 .../plc4x/java/cbus/readwrite/CALDataIdentify.java |  3 ++
 .../java/cbus/readwrite/CALDataIdentifyReply.java  |  3 ++
 .../plc4x/java/cbus/readwrite/CALDataRecall.java   |  3 ++
 .../plc4x/java/cbus/readwrite/CALDataReply.java    |  3 ++
 .../plc4x/java/cbus/readwrite/CALDataReset.java    |  3 ++
 .../plc4x/java/cbus/readwrite/CALDataStatus.java   |  5 ++-
 .../java/cbus/readwrite/CALDataStatusExtended.java |  7 +++--
 .../plc4x/java/cbus/readwrite/CALDataWrite.java    |  3 ++
 .../apache/plc4x/java/cbus/readwrite/CALReply.java |  3 ++
 .../plc4x/java/cbus/readwrite/CALReplyLong.java    |  3 ++
 .../plc4x/java/cbus/readwrite/CALReplyShort.java   |  3 ++
 .../plc4x/java/cbus/readwrite/CBusCommand.java     |  3 ++
 .../readwrite/CBusCommandDeviceManagement.java     |  3 ++
 .../readwrite/CBusCommandPointToMultiPoint.java    |  3 ++
 .../cbus/readwrite/CBusCommandPointToPoint.java    |  3 ++
 .../CBusCommandPointToPointToMultiPoint.java       |  3 ++
 .../plc4x/java/cbus/readwrite/CBusConstants.java   |  3 ++
 .../plc4x/java/cbus/readwrite/CBusHeader.java      |  3 ++
 .../plc4x/java/cbus/readwrite/CBusMessage.java     |  3 ++
 .../java/cbus/readwrite/CBusMessageToClient.java   |  3 ++
 .../java/cbus/readwrite/CBusMessageToServer.java   |  3 ++
 .../plc4x/java/cbus/readwrite/CBusOptions.java     |  3 ++
 .../readwrite/CBusPointToMultiPointCommand.java    |  3 ++
 .../CBusPointToMultiPointCommandNormal.java        |  3 ++
 .../CBusPointToMultiPointCommandStatus.java        |  3 ++
 .../cbus/readwrite/CBusPointToPointCommand.java    |  3 ++
 .../readwrite/CBusPointToPointCommandDirect.java   |  3 ++
 .../readwrite/CBusPointToPointCommandIndirect.java |  3 ++
 .../CBusPointToPointToMultiPointCommand.java       |  3 ++
 .../CBusPointToPointToMultiPointCommandNormal.java |  3 ++
 .../CBusPointToPointToMultiPointCommandStatus.java |  3 ++
 .../apache/plc4x/java/cbus/readwrite/Checksum.java |  3 ++
 .../cbus/readwrite/ClockAndTimekeepingData.java    |  3 ++
 .../ClockAndTimekeepingDataRequestRefresh.java     |  3 ++
 .../ClockAndTimekeepingDataUpdateDate.java         |  3 ++
 .../ClockAndTimekeepingDataUpdateTime.java         |  3 ++
 .../plc4x/java/cbus/readwrite/Confirmation.java    |  3 ++
 .../java/cbus/readwrite/CustomManufacturer.java    |  3 ++
 .../plc4x/java/cbus/readwrite/CustomTypes.java     |  3 ++
 .../java/cbus/readwrite/EnableControlData.java     |  3 ++
 .../plc4x/java/cbus/readwrite/EncodedReply.java    |  3 ++
 .../java/cbus/readwrite/EncodedReplyCALReply.java  |  3 ++
 .../java/cbus/readwrite/ErrorReportingData.java    |  3 ++
 .../cbus/readwrite/ErrorReportingDataGeneric.java  |  3 ++
 .../readwrite/ErrorReportingSystemCategory.java    |  3 ++
 .../ErrorReportingSystemCategoryType.java          |  3 ++
 ...ystemCategoryTypeBuildingManagementSystems.java |  3 ++
 ...ortingSystemCategoryTypeClimateControllers.java |  3 ++
 ...ErrorReportingSystemCategoryTypeInputUnits.java |  3 ++
 ...rrorReportingSystemCategoryTypeOutputUnits.java |  3 ++
 .../ErrorReportingSystemCategoryTypeReserved.java  |  3 ++
 ...rorReportingSystemCategoryTypeSupportUnits.java |  3 ++
 .../java/cbus/readwrite/HVACAuxiliaryLevel.java    |  3 ++
 .../plc4x/java/cbus/readwrite/HVACHumidity.java    |  3 ++
 .../cbus/readwrite/HVACHumidityModeAndFlags.java   |  3 ++
 .../cbus/readwrite/HVACHumidityStatusFlags.java    |  3 ++
 .../java/cbus/readwrite/HVACModeAndFlags.java      |  3 ++
 .../plc4x/java/cbus/readwrite/HVACRawLevels.java   |  3 ++
 .../plc4x/java/cbus/readwrite/HVACStartTime.java   |  3 ++
 .../plc4x/java/cbus/readwrite/HVACStatusFlags.java |  3 ++
 .../plc4x/java/cbus/readwrite/HVACTemperature.java |  3 ++
 .../plc4x/java/cbus/readwrite/HVACZoneList.java    |  3 ++
 .../java/cbus/readwrite/IdentifyReplyCommand.java  |  3 ++
 .../IdentifyReplyCommandCurrentSenseLevels.java    |  3 ++
 .../readwrite/IdentifyReplyCommandDSIStatus.java   |  3 ++
 .../cbus/readwrite/IdentifyReplyCommandDelays.java |  3 ++
 ...ntifyReplyCommandExtendedDiagnosticSummary.java |  3 ++
 .../IdentifyReplyCommandFirmwareVersion.java       |  3 ++
 .../IdentifyReplyCommandGAVPhysicalAddresses.java  |  3 ++
 .../IdentifyReplyCommandGAVValuesCurrent.java      |  3 ++
 .../IdentifyReplyCommandGAVValuesStored.java       |  3 ++
 .../IdentifyReplyCommandLogicalAssignment.java     |  5 ++-
 .../IdentifyReplyCommandManufacturer.java          |  3 ++
 .../IdentifyReplyCommandMaximumLevels.java         |  3 ++
 .../IdentifyReplyCommandMinimumLevels.java         |  3 ++
 .../IdentifyReplyCommandNetworkTerminalLevels.java |  3 ++
 .../IdentifyReplyCommandNetworkVoltage.java        |  3 ++
 .../IdentifyReplyCommandOutputUnitSummary.java     |  3 ++
 .../readwrite/IdentifyReplyCommandSummary.java     |  3 ++
 .../IdentifyReplyCommandTerminalLevels.java        |  3 ++
 .../cbus/readwrite/IdentifyReplyCommandType.java   |  3 ++
 .../readwrite/IdentifyReplyCommandUnitSummary.java |  3 ++
 .../java/cbus/readwrite/InterfaceOptions1.java     |  3 ++
 .../InterfaceOptions1PowerUpSettings.java          |  3 ++
 .../java/cbus/readwrite/InterfaceOptions2.java     |  3 ++
 .../java/cbus/readwrite/InterfaceOptions3.java     |  3 ++
 .../java/cbus/readwrite/LevelInformation.java      |  3 ++
 .../cbus/readwrite/LevelInformationAbsent.java     |  3 ++
 .../cbus/readwrite/LevelInformationCorrupted.java  |  3 ++
 .../cbus/readwrite/LevelInformationNormal.java     |  3 ++
 .../plc4x/java/cbus/readwrite/LightingData.java    |  3 ++
 .../java/cbus/readwrite/LightingDataLabel.java     |  3 ++
 .../plc4x/java/cbus/readwrite/LightingDataOff.java |  3 ++
 .../plc4x/java/cbus/readwrite/LightingDataOn.java  |  3 ++
 .../cbus/readwrite/LightingDataRampToLevel.java    |  3 ++
 .../cbus/readwrite/LightingDataTerminateRamp.java  |  3 ++
 .../java/cbus/readwrite/LightingLabelOptions.java  |  3 ++
 .../plc4x/java/cbus/readwrite/LogicAssignment.java |  3 ++
 .../plc4x/java/cbus/readwrite/MeasurementData.java |  3 ++
 .../MeasurementDataChannelMeasurementData.java     |  3 ++
 .../cbus/readwrite/MediaTransportControlData.java  |  3 ++
 .../MediaTransportControlDataCategoryName.java     |  3 ++
 ...trolDataEnumerateCategoriesSelectionTracks.java |  3 ++
 .../MediaTransportControlDataEnumerationsSize.java |  3 ++
 .../MediaTransportControlDataFastForward.java      |  3 ++
 ...iaTransportControlDataNextPreviousCategory.java |  3 ++
 ...aTransportControlDataNextPreviousSelection.java |  3 ++
 ...MediaTransportControlDataNextPreviousTrack.java |  3 ++
 .../MediaTransportControlDataPauseResume.java      |  3 ++
 .../readwrite/MediaTransportControlDataPlay.java   |  3 ++
 .../MediaTransportControlDataRepeatOnOff.java      |  3 ++
 .../readwrite/MediaTransportControlDataRewind.java |  3 ++
 .../MediaTransportControlDataSelectionName.java    |  3 ++
 .../MediaTransportControlDataSetCategory.java      |  3 ++
 .../MediaTransportControlDataSetSelection.java     |  3 ++
 .../MediaTransportControlDataSetTrack.java         |  3 ++
 .../MediaTransportControlDataShuffleOnOff.java     |  3 ++
 ...ediaTransportControlDataSourcePowerControl.java |  3 ++
 .../MediaTransportControlDataStatusRequest.java    |  3 ++
 .../readwrite/MediaTransportControlDataStop.java   |  3 ++
 .../MediaTransportControlDataTotalTracks.java      |  3 ++
 .../MediaTransportControlDataTrackName.java        |  3 ++
 .../plc4x/java/cbus/readwrite/MeteringData.java    |  3 ++
 .../MeteringDataDrinkingWaterConsumption.java      |  3 ++
 .../MeteringDataElectricityConsumption.java        |  3 ++
 .../cbus/readwrite/MeteringDataGasConsumption.java |  3 ++
 .../MeteringDataMeasureDrinkingWater.java          |  3 ++
 .../readwrite/MeteringDataMeasureElectricity.java  |  3 ++
 .../cbus/readwrite/MeteringDataMeasureGas.java     |  3 ++
 .../cbus/readwrite/MeteringDataMeasureOil.java     |  3 ++
 .../readwrite/MeteringDataMeasureOtherWater.java   |  3 ++
 .../cbus/readwrite/MeteringDataOilConsumption.java |  3 ++
 .../MeteringDataOtherWaterConsumption.java         |  3 ++
 .../plc4x/java/cbus/readwrite/MonitoredSAL.java    |  3 ++
 .../readwrite/MonitoredSALLongFormSmartMode.java   |  3 ++
 .../java/cbus/readwrite/MonitoredSALReply.java     |  3 ++
 .../readwrite/MonitoredSALShortFormBasicMode.java  |  3 ++
 .../NetworkProtocolControlInformation.java         |  3 ++
 .../plc4x/java/cbus/readwrite/NetworkRoute.java    |  5 ++-
 .../plc4x/java/cbus/readwrite/PanicStatus.java     |  3 ++
 .../plc4x/java/cbus/readwrite/ParameterChange.java |  3 ++
 .../java/cbus/readwrite/ParameterChangeReply.java  |  3 ++
 .../plc4x/java/cbus/readwrite/ParameterValue.java  |  3 ++
 .../ParameterValueApplicationAddress1.java         |  3 ++
 .../ParameterValueApplicationAddress2.java         |  3 ++
 .../readwrite/ParameterValueBaudRateSelector.java  |  3 ++
 .../ParameterValueCustomManufacturer.java          |  3 ++
 .../cbus/readwrite/ParameterValueCustomTypes.java  |  3 ++
 .../readwrite/ParameterValueInterfaceOptions1.java |  3 ++
 ...meterValueInterfaceOptions1PowerUpSettings.java |  3 ++
 .../readwrite/ParameterValueInterfaceOptions2.java |  3 ++
 .../readwrite/ParameterValueInterfaceOptions3.java |  3 ++
 .../java/cbus/readwrite/ParameterValueRaw.java     |  3 ++
 .../cbus/readwrite/ParameterValueSerialNumber.java |  3 ++
 .../apache/plc4x/java/cbus/readwrite/PowerUp.java  |  3 ++
 .../plc4x/java/cbus/readwrite/PowerUpReply.java    |  3 ++
 .../apache/plc4x/java/cbus/readwrite/Reply.java    |  3 ++
 .../java/cbus/readwrite/ReplyEncodedReply.java     |  3 ++
 .../plc4x/java/cbus/readwrite/ReplyNetwork.java    |  3 ++
 .../java/cbus/readwrite/ReplyOrConfirmation.java   |  3 ++
 .../readwrite/ReplyOrConfirmationConfirmation.java |  3 ++
 .../cbus/readwrite/ReplyOrConfirmationReply.java   |  3 ++
 .../apache/plc4x/java/cbus/readwrite/Request.java  |  3 ++
 .../plc4x/java/cbus/readwrite/RequestCommand.java  |  3 ++
 .../plc4x/java/cbus/readwrite/RequestContext.java  |  3 ++
 .../cbus/readwrite/RequestDirectCommandAccess.java |  3 ++
 .../plc4x/java/cbus/readwrite/RequestEmpty.java    |  3 ++
 .../plc4x/java/cbus/readwrite/RequestNull.java     |  3 ++
 .../plc4x/java/cbus/readwrite/RequestObsolete.java |  3 ++
 .../plc4x/java/cbus/readwrite/RequestReset.java    |  3 ++
 .../readwrite/RequestSmartConnectShortcut.java     |  3 ++
 .../java/cbus/readwrite/RequestTermination.java    |  3 ++
 .../java/cbus/readwrite/ResponseTermination.java   |  3 ++
 .../apache/plc4x/java/cbus/readwrite/SALData.java  |  3 ++
 .../java/cbus/readwrite/SALDataAccessControl.java  |  3 ++
 .../cbus/readwrite/SALDataAirConditioning.java     |  3 ++
 .../java/cbus/readwrite/SALDataAudioAndVideo.java  |  3 ++
 .../cbus/readwrite/SALDataClockAndTimekeeping.java |  3 ++
 .../java/cbus/readwrite/SALDataEnableControl.java  |  3 ++
 .../java/cbus/readwrite/SALDataErrorReporting.java |  3 ++
 .../java/cbus/readwrite/SALDataFreeUsage.java      |  3 ++
 .../plc4x/java/cbus/readwrite/SALDataHeating.java  |  3 ++
 .../java/cbus/readwrite/SALDataHvacActuator.java   |  3 ++
 .../cbus/readwrite/SALDataIrrigationControl.java   |  3 ++
 .../plc4x/java/cbus/readwrite/SALDataLighting.java |  3 ++
 .../java/cbus/readwrite/SALDataMeasurement.java    |  3 ++
 .../java/cbus/readwrite/SALDataMediaTransport.java |  3 ++
 .../plc4x/java/cbus/readwrite/SALDataMetering.java |  3 ++
 .../SALDataPoolsSpasPondsFountainsControl.java     |  3 ++
 .../plc4x/java/cbus/readwrite/SALDataReserved.java |  3 ++
 .../cbus/readwrite/SALDataRoomControlSystem.java   |  3 ++
 .../plc4x/java/cbus/readwrite/SALDataSecurity.java |  3 ++
 .../SALDataTelephonyStatusAndControl.java          |  3 ++
 .../readwrite/SALDataTemperatureBroadcast.java     |  3 ++
 .../plc4x/java/cbus/readwrite/SALDataTesting.java  |  3 ++
 .../java/cbus/readwrite/SALDataTriggerControl.java |  3 ++
 .../java/cbus/readwrite/SALDataVentilation.java    |  3 ++
 .../plc4x/java/cbus/readwrite/SecurityArmCode.java |  3 ++
 .../plc4x/java/cbus/readwrite/SecurityData.java    |  3 ++
 .../java/cbus/readwrite/SecurityDataAlarmOff.java  |  3 ++
 .../java/cbus/readwrite/SecurityDataAlarmOn.java   |  3 ++
 .../readwrite/SecurityDataArmFailedCleared.java    |  3 ++
 .../readwrite/SecurityDataArmFailedRaised.java     |  3 ++
 .../readwrite/SecurityDataArmReadyNotReady.java    |  3 ++
 .../java/cbus/readwrite/SecurityDataArmSystem.java |  3 ++
 .../readwrite/SecurityDataCurrentAlarmType.java    |  3 ++
 .../cbus/readwrite/SecurityDataDisplayMessage.java |  3 ++
 .../cbus/readwrite/SecurityDataDropTamper.java     |  3 ++
 .../cbus/readwrite/SecurityDataEmulatedKeypad.java |  3 ++
 .../readwrite/SecurityDataEntryDelayStarted.java   |  3 ++
 .../java/cbus/readwrite/SecurityDataEvent.java     |  3 ++
 .../readwrite/SecurityDataExitDelayStarted.java    |  3 ++
 .../readwrite/SecurityDataFireAlarmCleared.java    |  3 ++
 .../readwrite/SecurityDataFireAlarmRaised.java     |  3 ++
 .../readwrite/SecurityDataGasAlarmCleared.java     |  3 ++
 .../cbus/readwrite/SecurityDataGasAlarmRaised.java |  3 ++
 .../readwrite/SecurityDataLineCutAlarmCleared.java |  3 ++
 .../readwrite/SecurityDataLineCutAlarmRaised.java  |  3 ++
 .../readwrite/SecurityDataLowBatteryCharging.java  |  3 ++
 .../readwrite/SecurityDataLowBatteryCorrected.java |  3 ++
 .../readwrite/SecurityDataLowBatteryDetected.java  |  3 ++
 .../cbus/readwrite/SecurityDataMainsFailure.java   |  3 ++
 .../SecurityDataMainsRestoredOrApplied.java        |  3 ++
 .../plc4x/java/cbus/readwrite/SecurityDataOff.java |  3 ++
 .../plc4x/java/cbus/readwrite/SecurityDataOn.java  |  3 ++
 .../readwrite/SecurityDataOtherAlarmCleared.java   |  3 ++
 .../readwrite/SecurityDataOtherAlarmRaised.java    |  3 ++
 .../cbus/readwrite/SecurityDataPanicActivated.java |  3 ++
 .../cbus/readwrite/SecurityDataPanicCleared.java   |  3 ++
 .../readwrite/SecurityDataPasswordEntryStatus.java |  3 ++
 .../cbus/readwrite/SecurityDataRaiseAlarm.java     |  3 ++
 .../cbus/readwrite/SecurityDataRaiseTamper.java    |  3 ++
 .../readwrite/SecurityDataRequestZoneName.java     |  3 ++
 .../cbus/readwrite/SecurityDataStatus1Request.java |  3 ++
 .../cbus/readwrite/SecurityDataStatus2Request.java |  3 ++
 .../cbus/readwrite/SecurityDataStatusReport1.java  |  5 ++-
 .../cbus/readwrite/SecurityDataStatusReport2.java  |  5 ++-
 .../readwrite/SecurityDataSystemArmedDisarmed.java |  3 ++
 .../cbus/readwrite/SecurityDataSystemDisarmed.java |  3 ++
 .../java/cbus/readwrite/SecurityDataTamperOff.java |  3 ++
 .../java/cbus/readwrite/SecurityDataTamperOn.java  |  3 ++
 .../cbus/readwrite/SecurityDataZoneIsolated.java   |  3 ++
 .../java/cbus/readwrite/SecurityDataZoneName.java  |  3 ++
 .../java/cbus/readwrite/SecurityDataZoneOpen.java  |  3 ++
 .../cbus/readwrite/SecurityDataZoneSealed.java     |  3 ++
 .../java/cbus/readwrite/SecurityDataZoneShort.java |  3 ++
 .../cbus/readwrite/SecurityDataZoneUnsealed.java   |  3 ++
 .../cbus/readwrite/SerialInterfaceAddress.java     |  3 ++
 .../plc4x/java/cbus/readwrite/SerialNumber.java    |  3 ++
 .../java/cbus/readwrite/ServerErrorReply.java      |  3 ++
 .../plc4x/java/cbus/readwrite/StatusByte.java      |  3 ++
 .../plc4x/java/cbus/readwrite/StatusRequest.java   |  3 ++
 .../cbus/readwrite/StatusRequestBinaryState.java   |  3 ++
 .../StatusRequestBinaryStateDeprecated.java        |  3 ++
 .../java/cbus/readwrite/StatusRequestLevel.java    |  3 ++
 .../plc4x/java/cbus/readwrite/TamperStatus.java    |  3 ++
 .../plc4x/java/cbus/readwrite/TelephonyData.java   |  3 ++
 .../readwrite/TelephonyDataClearDiversion.java     |  3 ++
 .../cbus/readwrite/TelephonyDataDialInFailure.java |  3 ++
 .../readwrite/TelephonyDataDialOutFailure.java     |  3 ++
 .../java/cbus/readwrite/TelephonyDataDivert.java   |  3 ++
 ...TelephonyDataInternetConnectionRequestMade.java |  3 ++
 .../TelephonyDataIsolateSecondaryOutlet.java       |  3 ++
 .../cbus/readwrite/TelephonyDataLineOffHook.java   |  3 ++
 .../cbus/readwrite/TelephonyDataLineOnHook.java    |  3 ++
 .../readwrite/TelephonyDataRecallLastNumber.java   |  3 ++
 .../TelephonyDataRecallLastNumberRequest.java      |  3 ++
 .../readwrite/TelephonyDataRejectIncomingCall.java |  3 ++
 .../java/cbus/readwrite/TelephonyDataRinging.java  |  3 ++
 .../cbus/readwrite/TemperatureBroadcastData.java   |  3 ++
 .../java/cbus/readwrite/TriggerControlData.java    |  3 ++
 .../readwrite/TriggerControlDataIndicatorKill.java |  3 ++
 .../cbus/readwrite/TriggerControlDataLabel.java    |  3 ++
 .../readwrite/TriggerControlDataTriggerEvent.java  |  3 ++
 .../readwrite/TriggerControlDataTriggerMax.java    |  3 ++
 .../readwrite/TriggerControlDataTriggerMin.java    |  3 ++
 .../cbus/readwrite/TriggerControlLabelOptions.java |  3 ++
 .../plc4x/java/cbus/readwrite/UnitAddress.java     |  3 ++
 .../plc4x/java/cbus/readwrite/ZoneStatus.java      |  3 ++
 .../plc4x/java/canopen/readwrite/CANOpenFrame.java |  3 ++
 .../canopen/readwrite/CANOpenHeartbeatPayload.java |  3 ++
 .../plc4x/java/canopen/readwrite/CANOpenMPDO.java  |  3 ++
 .../canopen/readwrite/CANOpenNetworkPayload.java   |  3 ++
 .../plc4x/java/canopen/readwrite/CANOpenPDO.java   |  3 ++
 .../java/canopen/readwrite/CANOpenPDOPayload.java  |  3 ++
 .../java/canopen/readwrite/CANOpenPayload.java     |  3 ++
 .../java/canopen/readwrite/CANOpenSDORequest.java  |  3 ++
 .../java/canopen/readwrite/CANOpenSDOResponse.java |  3 ++
 .../plc4x/java/canopen/readwrite/CANOpenTime.java  |  3 ++
 .../readwrite/CANOpenTimeSynchronization.java      |  3 ++
 .../plc4x/java/canopen/readwrite/IndexAddress.java |  3 ++
 .../plc4x/java/canopen/readwrite/SDOAbort.java     |  3 ++
 .../java/canopen/readwrite/SDOAbortRequest.java    |  3 ++
 .../java/canopen/readwrite/SDOAbortResponse.java   |  3 ++
 .../plc4x/java/canopen/readwrite/SDOBlockData.java |  3 ++
 .../java/canopen/readwrite/SDOBlockRequest.java    |  3 ++
 .../java/canopen/readwrite/SDOBlockResponse.java   |  3 ++
 .../readwrite/SDOInitiateDownloadRequest.java      |  3 ++
 .../readwrite/SDOInitiateDownloadResponse.java     |  3 ++
 .../SDOInitiateExpeditedUploadResponse.java        |  3 ++
 .../SDOInitiateSegmentedReservedResponse.java      |  3 ++
 .../SDOInitiateSegmentedUploadResponse.java        |  3 ++
 .../readwrite/SDOInitiateUploadRequest.java        |  3 ++
 .../readwrite/SDOInitiateUploadResponse.java       |  3 ++
 .../SDOInitiateUploadResponsePayload.java          |  3 ++
 .../plc4x/java/canopen/readwrite/SDORequest.java   |  3 ++
 .../plc4x/java/canopen/readwrite/SDOResponse.java  |  3 ++
 .../plc4x/java/canopen/readwrite/SDOSegment.java   |  3 ++
 .../readwrite/SDOSegmentDownloadRequest.java       |  3 ++
 .../readwrite/SDOSegmentDownloadResponse.java      |  3 ++
 .../canopen/readwrite/SDOSegmentUploadRequest.java |  3 ++
 .../readwrite/SDOSegmentUploadResponse.java        |  3 ++
 .../java/firmata/readwrite/FirmataCommand.java     |  3 ++
 .../readwrite/FirmataCommandProtocolVersion.java   |  3 ++
 .../FirmataCommandSetDigitalPinValue.java          |  3 ++
 .../readwrite/FirmataCommandSetPinMode.java        |  3 ++
 .../firmata/readwrite/FirmataCommandSysex.java     |  3 ++
 .../readwrite/FirmataCommandSystemReset.java       |  3 ++
 .../java/firmata/readwrite/FirmataMessage.java     |  3 ++
 .../firmata/readwrite/FirmataMessageAnalogIO.java  |  3 ++
 .../firmata/readwrite/FirmataMessageCommand.java   |  3 ++
 .../firmata/readwrite/FirmataMessageDigitalIO.java |  3 ++
 .../FirmataMessageSubscribeAnalogPinValue.java     |  3 ++
 .../FirmataMessageSubscribeDigitalPinValue.java    |  3 ++
 .../plc4x/java/firmata/readwrite/SysexCommand.java |  3 ++
 .../SysexCommandAnalogMappingQueryRequest.java     |  3 ++
 .../SysexCommandAnalogMappingQueryResponse.java    |  3 ++
 .../SysexCommandAnalogMappingResponse.java         |  3 ++
 .../readwrite/SysexCommandCapabilityQuery.java     |  3 ++
 .../readwrite/SysexCommandCapabilityResponse.java  |  3 ++
 .../readwrite/SysexCommandExtendedAnalog.java      |  3 ++
 .../firmata/readwrite/SysexCommandExtendedId.java  |  3 ++
 .../readwrite/SysexCommandPinStateQuery.java       |  3 ++
 .../readwrite/SysexCommandPinStateResponse.java    |  3 ++
 .../SysexCommandReportFirmwareRequest.java         |  3 ++
 .../SysexCommandReportFirmwareResponse.java        |  3 ++
 .../readwrite/SysexCommandSamplingInterval.java    |  3 ++
 .../firmata/readwrite/SysexCommandStringData.java  |  3 ++
 .../readwrite/SysexCommandSysexNonRealtime.java    |  3 ++
 .../readwrite/SysexCommandSysexRealtime.java       |  3 ++
 .../apache/plc4x/java/knxnetip/readwrite/Apdu.java |  3 ++
 .../plc4x/java/knxnetip/readwrite/ApduControl.java |  3 ++
 .../java/knxnetip/readwrite/ApduControlAck.java    |  3 ++
 .../knxnetip/readwrite/ApduControlConnect.java     |  3 ++
 .../knxnetip/readwrite/ApduControlContainer.java   |  3 ++
 .../knxnetip/readwrite/ApduControlDisconnect.java  |  3 ++
 .../java/knxnetip/readwrite/ApduControlNack.java   |  3 ++
 .../plc4x/java/knxnetip/readwrite/ApduData.java    |  3 ++
 .../java/knxnetip/readwrite/ApduDataAdcRead.java   |  3 ++
 .../knxnetip/readwrite/ApduDataAdcResponse.java    |  3 ++
 .../java/knxnetip/readwrite/ApduDataContainer.java |  3 ++
 .../readwrite/ApduDataDeviceDescriptorRead.java    |  3 ++
 .../ApduDataDeviceDescriptorResponse.java          |  3 ++
 .../plc4x/java/knxnetip/readwrite/ApduDataExt.java |  3 ++
 .../readwrite/ApduDataExtAuthorizeRequest.java     |  3 ++
 .../readwrite/ApduDataExtAuthorizeResponse.java    |  3 ++
 .../readwrite/ApduDataExtDomainAddressRead.java    |  3 ++
 .../ApduDataExtDomainAddressResponse.java          |  3 ++
 .../ApduDataExtDomainAddressSelectiveRead.java     |  3 ++
 .../ApduDataExtDomainAddressSerialNumberRead.java  |  3 ++
 ...duDataExtDomainAddressSerialNumberResponse.java |  3 ++
 .../ApduDataExtDomainAddressSerialNumberWrite.java |  3 ++
 .../readwrite/ApduDataExtDomainAddressWrite.java   |  3 ++
 .../readwrite/ApduDataExtFileStreamInfoReport.java |  3 ++
 .../ApduDataExtGroupPropertyValueInfoReport.java   |  3 ++
 .../ApduDataExtGroupPropertyValueRead.java         |  3 ++
 .../ApduDataExtGroupPropertyValueResponse.java     |  3 ++
 .../ApduDataExtGroupPropertyValueWrite.java        |  3 ++
 ...duDataExtIndividualAddressSerialNumberRead.java |  3 ++
 ...taExtIndividualAddressSerialNumberResponse.java |  3 ++
 ...uDataExtIndividualAddressSerialNumberWrite.java |  3 ++
 .../knxnetip/readwrite/ApduDataExtKeyResponse.java |  3 ++
 .../knxnetip/readwrite/ApduDataExtKeyWrite.java    |  3 ++
 .../knxnetip/readwrite/ApduDataExtLinkRead.java    |  3 ++
 .../readwrite/ApduDataExtLinkResponse.java         |  3 ++
 .../knxnetip/readwrite/ApduDataExtLinkWrite.java   |  3 ++
 .../readwrite/ApduDataExtMemoryBitWrite.java       |  3 ++
 .../readwrite/ApduDataExtNetworkParameterRead.java |  3 ++
 .../ApduDataExtNetworkParameterResponse.java       |  3 ++
 .../ApduDataExtNetworkParameterWrite.java          |  3 ++
 .../ApduDataExtOpenRoutingTableRequest.java        |  3 ++
 .../ApduDataExtPropertyDescriptionRead.java        |  3 ++
 .../ApduDataExtPropertyDescriptionResponse.java    |  3 ++
 .../readwrite/ApduDataExtPropertyValueRead.java    |  3 ++
 .../ApduDataExtPropertyValueResponse.java          |  3 ++
 .../readwrite/ApduDataExtPropertyValueWrite.java   |  3 ++
 .../ApduDataExtReadRouterMemoryRequest.java        |  3 ++
 .../ApduDataExtReadRouterMemoryResponse.java       |  3 ++
 .../ApduDataExtReadRouterStatusRequest.java        |  3 ++
 .../ApduDataExtReadRouterStatusResponse.java       |  3 ++
 .../ApduDataExtReadRoutingTableRequest.java        |  3 ++
 .../ApduDataExtReadRoutingTableResponse.java       |  3 ++
 .../ApduDataExtWriteRouterMemoryRequest.java       |  3 ++
 .../ApduDataExtWriteRouterStatusRequest.java       |  3 ++
 .../ApduDataExtWriteRoutingTableRequest.java       |  3 ++
 .../knxnetip/readwrite/ApduDataGroupValueRead.java |  3 ++
 .../readwrite/ApduDataGroupValueResponse.java      |  3 ++
 .../readwrite/ApduDataGroupValueWrite.java         |  3 ++
 .../readwrite/ApduDataIndividualAddressRead.java   |  3 ++
 .../ApduDataIndividualAddressResponse.java         |  3 ++
 .../readwrite/ApduDataIndividualAddressWrite.java  |  3 ++
 .../knxnetip/readwrite/ApduDataMemoryRead.java     |  3 ++
 .../knxnetip/readwrite/ApduDataMemoryResponse.java |  3 ++
 .../knxnetip/readwrite/ApduDataMemoryWrite.java    |  3 ++
 .../java/knxnetip/readwrite/ApduDataOther.java     |  3 ++
 .../java/knxnetip/readwrite/ApduDataRestart.java   |  3 ++
 .../knxnetip/readwrite/ApduDataUserMessage.java    |  3 ++
 .../apache/plc4x/java/knxnetip/readwrite/CEMI.java |  3 ++
 .../readwrite/CEMIAdditionalInformation.java       |  3 ++
 .../CEMIAdditionalInformationBusmonitorInfo.java   |  3 ++
 ...CEMIAdditionalInformationRelativeTimestamp.java |  3 ++
 .../knxnetip/readwrite/ChannelInformation.java     |  3 ++
 .../java/knxnetip/readwrite/ComObjectTable.java    |  3 ++
 .../readwrite/ComObjectTableRealisationType1.java  |  5 ++-
 .../readwrite/ComObjectTableRealisationType2.java  |  5 ++-
 .../readwrite/ComObjectTableRealisationType6.java  |  3 ++
 .../java/knxnetip/readwrite/ConnectionRequest.java |  3 ++
 .../readwrite/ConnectionRequestInformation.java    |  3 ++
 ...nnectionRequestInformationDeviceManagement.java |  3 ++
 ...nnectionRequestInformationTunnelConnection.java |  3 ++
 .../knxnetip/readwrite/ConnectionResponse.java     |  3 ++
 .../readwrite/ConnectionResponseDataBlock.java     |  3 ++
 ...onnectionResponseDataBlockDeviceManagement.java |  3 ++
 ...onnectionResponseDataBlockTunnelConnection.java |  3 ++
 .../knxnetip/readwrite/ConnectionStateRequest.java |  3 ++
 .../readwrite/ConnectionStateResponse.java         |  3 ++
 .../java/knxnetip/readwrite/DIBDeviceInfo.java     |  3 ++
 .../knxnetip/readwrite/DIBSuppSvcFamilies.java     |  3 ++
 .../knxnetip/readwrite/DescriptionRequest.java     |  3 ++
 .../knxnetip/readwrite/DescriptionResponse.java    |  3 ++
 .../knxnetip/readwrite/DeviceConfigurationAck.java |  3 ++
 .../readwrite/DeviceConfigurationAckDataBlock.java |  3 ++
 .../readwrite/DeviceConfigurationRequest.java      |  3 ++
 .../DeviceConfigurationRequestDataBlock.java       |  3 ++
 .../knxnetip/readwrite/DeviceDescriptorType2.java  |  3 ++
 .../java/knxnetip/readwrite/DeviceStatus.java      |  3 ++
 .../java/knxnetip/readwrite/DisconnectRequest.java |  3 ++
 .../knxnetip/readwrite/DisconnectResponse.java     |  3 ++
 .../GroupObjectDescriptorRealisationType1.java     |  3 ++
 .../GroupObjectDescriptorRealisationType2.java     |  3 ++
 .../GroupObjectDescriptorRealisationType6.java     |  3 ++
 .../GroupObjectDescriptorRealisationType7.java     |  3 ++
 .../GroupObjectDescriptorRealisationTypeB.java     |  3 ++
 .../knxnetip/readwrite/HPAIControlEndpoint.java    |  3 ++
 .../java/knxnetip/readwrite/HPAIDataEndpoint.java  |  3 ++
 .../knxnetip/readwrite/HPAIDiscoveryEndpoint.java  |  3 ++
 .../plc4x/java/knxnetip/readwrite/IPAddress.java   |  3 ++
 .../plc4x/java/knxnetip/readwrite/KnxAddress.java  |  3 ++
 .../java/knxnetip/readwrite/KnxGroupAddress.java   |  3 ++
 .../knxnetip/readwrite/KnxGroupAddress2Level.java  |  3 ++
 .../knxnetip/readwrite/KnxGroupAddress3Level.java  |  3 ++
 .../readwrite/KnxGroupAddressFreeLevel.java        |  3 ++
 .../java/knxnetip/readwrite/KnxNetIpCore.java      |  3 ++
 .../readwrite/KnxNetIpDeviceManagement.java        |  3 ++
 .../java/knxnetip/readwrite/KnxNetIpMessage.java   |  3 ++
 .../java/knxnetip/readwrite/KnxNetIpRouting.java   |  3 ++
 .../java/knxnetip/readwrite/KnxNetIpTunneling.java |  3 ++
 .../knxnetip/readwrite/KnxNetObjectServer.java     |  3 ++
 .../KnxNetRemoteConfigurationAndDiagnosis.java     |  3 ++
 .../knxnetip/readwrite/KnxNetRemoteLogging.java    |  3 ++
 .../plc4x/java/knxnetip/readwrite/LBusmonInd.java  |  3 ++
 .../plc4x/java/knxnetip/readwrite/LDataCon.java    |  3 ++
 .../java/knxnetip/readwrite/LDataExtended.java     |  3 ++
 .../plc4x/java/knxnetip/readwrite/LDataFrame.java  |  3 ++
 .../java/knxnetip/readwrite/LDataFrameACK.java     |  3 ++
 .../plc4x/java/knxnetip/readwrite/LDataInd.java    |  3 ++
 .../plc4x/java/knxnetip/readwrite/LDataReq.java    |  3 ++
 .../plc4x/java/knxnetip/readwrite/LPollData.java   |  3 ++
 .../java/knxnetip/readwrite/LPollDataCon.java      |  3 ++
 .../java/knxnetip/readwrite/LPollDataReq.java      |  3 ++
 .../plc4x/java/knxnetip/readwrite/LRawCon.java     |  3 ++
 .../plc4x/java/knxnetip/readwrite/LRawInd.java     |  3 ++
 .../plc4x/java/knxnetip/readwrite/LRawReq.java     |  3 ++
 .../plc4x/java/knxnetip/readwrite/MACAddress.java  |  3 ++
 .../knxnetip/readwrite/MFuncPropCommandReq.java    |  3 ++
 .../java/knxnetip/readwrite/MFuncPropCon.java      |  3 ++
 .../knxnetip/readwrite/MFuncPropStateReadReq.java  |  3 ++
 .../java/knxnetip/readwrite/MPropInfoInd.java      |  3 ++
 .../java/knxnetip/readwrite/MPropReadCon.java      |  3 ++
 .../java/knxnetip/readwrite/MPropReadReq.java      |  3 ++
 .../java/knxnetip/readwrite/MPropWriteCon.java     |  3 ++
 .../java/knxnetip/readwrite/MPropWriteReq.java     |  3 ++
 .../plc4x/java/knxnetip/readwrite/MResetInd.java   |  3 ++
 .../plc4x/java/knxnetip/readwrite/MResetReq.java   |  3 ++
 .../readwrite/ProjectInstallationIdentifier.java   |  3 ++
 .../java/knxnetip/readwrite/RelativeTimestamp.java |  3 ++
 .../java/knxnetip/readwrite/RoutingIndication.java |  3 ++
 .../java/knxnetip/readwrite/SearchRequest.java     |  3 ++
 .../java/knxnetip/readwrite/SearchResponse.java    |  3 ++
 .../plc4x/java/knxnetip/readwrite/ServiceId.java   |  3 ++
 .../java/knxnetip/readwrite/TDataConnectedInd.java |  3 ++
 .../java/knxnetip/readwrite/TDataConnectedReq.java |  3 ++
 .../knxnetip/readwrite/TDataIndividualInd.java     |  3 ++
 .../knxnetip/readwrite/TDataIndividualReq.java     |  3 ++
 .../java/knxnetip/readwrite/TunnelingRequest.java  |  3 ++
 .../readwrite/TunnelingRequestDataBlock.java       |  3 ++
 .../java/knxnetip/readwrite/TunnelingResponse.java |  3 ++
 .../readwrite/TunnelingResponseDataBlock.java      |  3 ++
 .../java/knxnetip/readwrite/UnknownMessage.java    |  3 ++
 .../plc4x/java/modbus/readwrite/ModbusADU.java     |  3 ++
 .../java/modbus/readwrite/ModbusAsciiADU.java      |  3 ++
 .../java/modbus/readwrite/ModbusConstants.java     |  3 ++
 .../readwrite/ModbusDeviceInformationObject.java   |  3 ++
 .../plc4x/java/modbus/readwrite/ModbusPDU.java     |  3 ++
 .../readwrite/ModbusPDUDiagnosticRequest.java      |  3 ++
 .../readwrite/ModbusPDUDiagnosticResponse.java     |  3 ++
 .../java/modbus/readwrite/ModbusPDUError.java      |  3 ++
 .../ModbusPDUGetComEventCounterRequest.java        |  3 ++
 .../ModbusPDUGetComEventCounterResponse.java       |  3 ++
 .../readwrite/ModbusPDUGetComEventLogRequest.java  |  3 ++
 .../readwrite/ModbusPDUGetComEventLogResponse.java |  3 ++
 .../ModbusPDUMaskWriteHoldingRegisterRequest.java  |  3 ++
 .../ModbusPDUMaskWriteHoldingRegisterResponse.java |  3 ++
 .../readwrite/ModbusPDUReadCoilsRequest.java       |  3 ++
 .../readwrite/ModbusPDUReadCoilsResponse.java      |  3 ++
 .../ModbusPDUReadDeviceIdentificationRequest.java  |  3 ++
 .../ModbusPDUReadDeviceIdentificationResponse.java |  5 ++-
 .../ModbusPDUReadDiscreteInputsRequest.java        |  3 ++
 .../ModbusPDUReadDiscreteInputsResponse.java       |  3 ++
 .../ModbusPDUReadExceptionStatusRequest.java       |  3 ++
 .../ModbusPDUReadExceptionStatusResponse.java      |  3 ++
 .../readwrite/ModbusPDUReadFifoQueueRequest.java   |  3 ++
 .../readwrite/ModbusPDUReadFifoQueueResponse.java  |  3 ++
 .../readwrite/ModbusPDUReadFileRecordRequest.java  |  3 ++
 .../ModbusPDUReadFileRecordRequestItem.java        |  3 ++
 .../readwrite/ModbusPDUReadFileRecordResponse.java |  3 ++
 .../ModbusPDUReadFileRecordResponseItem.java       |  3 ++
 .../ModbusPDUReadHoldingRegistersRequest.java      |  3 ++
 .../ModbusPDUReadHoldingRegistersResponse.java     |  3 ++
 .../ModbusPDUReadInputRegistersRequest.java        |  3 ++
 .../ModbusPDUReadInputRegistersResponse.java       |  3 ++
 ...DUReadWriteMultipleHoldingRegistersRequest.java |  3 ++
 ...UReadWriteMultipleHoldingRegistersResponse.java |  3 ++
 .../readwrite/ModbusPDUReportServerIdRequest.java  |  3 ++
 .../readwrite/ModbusPDUReportServerIdResponse.java |  3 ++
 .../readwrite/ModbusPDUWriteFileRecordRequest.java |  3 ++
 .../ModbusPDUWriteFileRecordRequestItem.java       |  3 ++
 .../ModbusPDUWriteFileRecordResponse.java          |  3 ++
 .../ModbusPDUWriteFileRecordResponseItem.java      |  3 ++
 .../ModbusPDUWriteMultipleCoilsRequest.java        |  3 ++
 .../ModbusPDUWriteMultipleCoilsResponse.java       |  3 ++
 ...busPDUWriteMultipleHoldingRegistersRequest.java |  3 ++
 ...usPDUWriteMultipleHoldingRegistersResponse.java |  3 ++
 .../readwrite/ModbusPDUWriteSingleCoilRequest.java |  3 ++
 .../ModbusPDUWriteSingleCoilResponse.java          |  3 ++
 .../ModbusPDUWriteSingleRegisterRequest.java       |  3 ++
 .../ModbusPDUWriteSingleRegisterResponse.java      |  3 ++
 .../plc4x/java/modbus/readwrite/ModbusRtuADU.java  |  3 ++
 .../plc4x/java/modbus/readwrite/ModbusTcpADU.java  |  3 ++
 .../opcua/readwrite/ActivateSessionRequest.java    |  7 +++--
 .../opcua/readwrite/ActivateSessionResponse.java   |  7 +++--
 .../plc4x/java/opcua/readwrite/AddNodesItem.java   |  3 ++
 .../java/opcua/readwrite/AddNodesRequest.java      |  5 ++-
 .../java/opcua/readwrite/AddNodesResponse.java     |  7 +++--
 .../plc4x/java/opcua/readwrite/AddNodesResult.java |  3 ++
 .../java/opcua/readwrite/AddReferencesItem.java    |  3 ++
 .../java/opcua/readwrite/AddReferencesRequest.java |  5 ++-
 .../opcua/readwrite/AddReferencesResponse.java     |  7 +++--
 .../opcua/readwrite/AdditionalParametersType.java  |  5 ++-
 .../opcua/readwrite/AggregateConfiguration.java    |  3 ++
 .../java/opcua/readwrite/AliasNameDataType.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/Annotation.java     |  3 ++
 .../opcua/readwrite/AnonymousIdentityToken.java    |  3 ++
 .../opcua/readwrite/ApplicationDescription.java    |  5 ++-
 .../readwrite/ApplicationInstanceCertificate.java  |  3 ++
 .../plc4x/java/opcua/readwrite/Argument.java       |  3 ++
 .../plc4x/java/opcua/readwrite/AudioDataType.java  |  3 ++
 .../java/opcua/readwrite/AxisInformation.java      |  3 ++
 .../java/opcua/readwrite/BitFieldMaskDataType.java |  3 ++
 .../java/opcua/readwrite/BrowseDescription.java    |  3 ++
 .../java/opcua/readwrite/BrowseNextRequest.java    |  5 ++-
 .../java/opcua/readwrite/BrowseNextResponse.java   |  7 +++--
 .../plc4x/java/opcua/readwrite/BrowsePath.java     |  3 ++
 .../java/opcua/readwrite/BrowsePathResult.java     |  5 ++-
 .../java/opcua/readwrite/BrowsePathTarget.java     |  3 ++
 .../plc4x/java/opcua/readwrite/BrowseRequest.java  |  5 ++-
 .../plc4x/java/opcua/readwrite/BrowseResponse.java |  7 +++--
 .../plc4x/java/opcua/readwrite/BrowseResult.java   |  5 ++-
 .../plc4x/java/opcua/readwrite/BuildInfo.java      |  3 ++
 .../java/opcua/readwrite/ByteStringArray.java      |  3 ++
 .../java/opcua/readwrite/ByteStringNodeId.java     |  3 ++
 .../java/opcua/readwrite/CallMethodRequest.java    |  5 ++-
 .../java/opcua/readwrite/CallMethodResult.java     |  9 ++++--
 .../plc4x/java/opcua/readwrite/CallRequest.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/CallResponse.java   |  7 +++--
 .../plc4x/java/opcua/readwrite/CancelRequest.java  |  3 ++
 .../plc4x/java/opcua/readwrite/CancelResponse.java |  3 ++
 .../java/opcua/readwrite/CartesianCoordinates.java |  3 ++
 .../java/opcua/readwrite/ChannelSecurityToken.java |  3 ++
 .../opcua/readwrite/CloseSecureChannelRequest.java |  3 ++
 .../readwrite/CloseSecureChannelResponse.java      |  3 ++
 .../java/opcua/readwrite/CloseSessionRequest.java  |  3 ++
 .../java/opcua/readwrite/CloseSessionResponse.java |  3 ++
 .../java/opcua/readwrite/ComplexNumberType.java    |  3 ++
 .../readwrite/ConfigurationVersionDataType.java    |  3 ++
 .../readwrite/ConnectionTransportDataType.java     |  3 ++
 .../plc4x/java/opcua/readwrite/ContentFilter.java  |  5 ++-
 .../java/opcua/readwrite/ContentFilterElement.java |  5 ++-
 .../readwrite/ContentFilterElementResult.java      |  7 +++--
 .../java/opcua/readwrite/ContentFilterResult.java  |  7 +++--
 .../java/opcua/readwrite/ContinuationPoint.java    |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Counter.java |  3 ++
 .../readwrite/CreateMonitoredItemsRequest.java     |  5 ++-
 .../readwrite/CreateMonitoredItemsResponse.java    |  7 +++--
 .../java/opcua/readwrite/CreateSessionRequest.java |  3 ++
 .../opcua/readwrite/CreateSessionResponse.java     |  7 +++--
 .../opcua/readwrite/CreateSubscriptionRequest.java |  3 ++
 .../readwrite/CreateSubscriptionResponse.java      |  3 ++
 .../java/opcua/readwrite/CurrencyUnitType.java     |  3 ++
 .../opcua/readwrite/DataChangeNotification.java    |  7 +++--
 .../readwrite/DataSetReaderMessageDataType.java    |  3 ++
 .../readwrite/DataSetReaderTransportDataType.java  |  3 ++
 .../opcua/readwrite/DataSetWriterDataType.java     |  5 ++-
 .../readwrite/DataSetWriterMessageDataType.java    |  3 ++
 .../readwrite/DataSetWriterTransportDataType.java  |  3 ++
 .../java/opcua/readwrite/DataTypeDefinition.java   |  3 ++
 .../java/opcua/readwrite/DataTypeDescription.java  |  3 ++
 .../java/opcua/readwrite/DataTypeSchemaHeader.java | 11 ++++---
 .../plc4x/java/opcua/readwrite/DataValue.java      |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Date.java    |  3 ++
 .../plc4x/java/opcua/readwrite/DateString.java     |  3 ++
 .../java/opcua/readwrite/DecimalDataType.java      |  3 ++
 .../plc4x/java/opcua/readwrite/DecimalString.java  |  3 ++
 .../readwrite/DeleteMonitoredItemsRequest.java     |  3 ++
 .../readwrite/DeleteMonitoredItemsResponse.java    |  7 +++--
 .../java/opcua/readwrite/DeleteNodesItem.java      |  3 ++
 .../java/opcua/readwrite/DeleteNodesRequest.java   |  5 ++-
 .../java/opcua/readwrite/DeleteNodesResponse.java  |  7 +++--
 .../java/opcua/readwrite/DeleteReferencesItem.java |  3 ++
 .../opcua/readwrite/DeleteReferencesRequest.java   |  5 ++-
 .../opcua/readwrite/DeleteReferencesResponse.java  |  7 +++--
 .../readwrite/DeleteSubscriptionsRequest.java      |  3 ++
 .../readwrite/DeleteSubscriptionsResponse.java     |  7 +++--
 .../plc4x/java/opcua/readwrite/DiagnosticInfo.java |  3 ++
 .../opcua/readwrite/DiscoveryConfiguration.java    |  3 ++
 .../opcua/readwrite/DoubleComplexNumberType.java   |  3 ++
 .../plc4x/java/opcua/readwrite/DurationString.java |  3 ++
 .../plc4x/java/opcua/readwrite/EUInformation.java  |  3 ++
 .../java/opcua/readwrite/EccEncryptedSecret.java   |  3 ++
 .../opcua/readwrite/EndpointConfiguration.java     |  3 ++
 .../java/opcua/readwrite/EndpointDescription.java  |  5 ++-
 .../plc4x/java/opcua/readwrite/EndpointType.java   |  3 ++
 .../opcua/readwrite/EndpointUrlListDataType.java   |  5 ++-
 .../plc4x/java/opcua/readwrite/EnumValueType.java  |  3 ++
 .../java/opcua/readwrite/EphemeralKeyType.java     |  3 ++
 .../plc4x/java/opcua/readwrite/EventFieldList.java |  5 ++-
 .../opcua/readwrite/EventNotificationList.java     |  5 ++-
 .../plc4x/java/opcua/readwrite/ExpandedNodeId.java |  3 ++
 .../java/opcua/readwrite/ExtensionHeader.java      |  3 ++
 .../java/opcua/readwrite/ExtensionObject.java      |  3 ++
 .../opcua/readwrite/ExtensionObjectDefinition.java |  3 ++
 .../readwrite/ExtensionObjectEncodingMask.java     |  3 ++
 .../plc4x/java/opcua/readwrite/FieldMetaData.java  |  5 ++-
 .../java/opcua/readwrite/FieldTargetDataType.java  |  3 ++
 .../plc4x/java/opcua/readwrite/FilterOperand.java  |  3 ++
 .../readwrite/FindServersOnNetworkRequest.java     |  5 ++-
 .../readwrite/FindServersOnNetworkResponse.java    |  5 ++-
 .../java/opcua/readwrite/FindServersRequest.java   |  7 +++--
 .../java/opcua/readwrite/FindServersResponse.java  |  5 ++-
 .../plc4x/java/opcua/readwrite/FourByteNodeId.java |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Frame.java   |  3 ++
 .../opcua/readwrite/GenericAttributeValue.java     |  3 ++
 .../java/opcua/readwrite/GetEndpointsRequest.java  |  7 +++--
 .../java/opcua/readwrite/GetEndpointsResponse.java |  5 ++-
 .../plc4x/java/opcua/readwrite/GuidNodeId.java     |  3 ++
 .../plc4x/java/opcua/readwrite/GuidValue.java      |  3 ++
 .../plc4x/java/opcua/readwrite/HistoryData.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/HistoryEvent.java   |  5 ++-
 .../opcua/readwrite/HistoryEventFieldList.java     |  5 ++-
 .../java/opcua/readwrite/HistoryReadDetails.java   |  3 ++
 .../java/opcua/readwrite/HistoryReadRequest.java   |  5 ++-
 .../java/opcua/readwrite/HistoryReadResponse.java  |  7 +++--
 .../java/opcua/readwrite/HistoryReadResult.java    |  3 ++
 .../java/opcua/readwrite/HistoryReadValueId.java   |  3 ++
 .../java/opcua/readwrite/HistoryUpdateDetails.java |  3 ++
 .../java/opcua/readwrite/HistoryUpdateRequest.java |  5 ++-
 .../opcua/readwrite/HistoryUpdateResponse.java     |  7 +++--
 .../java/opcua/readwrite/HistoryUpdateResult.java  |  7 +++--
 .../opcua/readwrite/IdentityMappingRuleType.java   |  3 ++
 .../plc4x/java/opcua/readwrite/ImageBMP.java       |  3 ++
 .../plc4x/java/opcua/readwrite/ImageGIF.java       |  3 ++
 .../plc4x/java/opcua/readwrite/ImageJPG.java       |  3 ++
 .../plc4x/java/opcua/readwrite/ImagePNG.java       |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Index.java   |  3 ++
 .../plc4x/java/opcua/readwrite/IntegerId.java      |  3 ++
 .../java/opcua/readwrite/IssuedIdentityToken.java  |  3 ++
 .../plc4x/java/opcua/readwrite/KeyValuePair.java   |  3 ++
 .../plc4x/java/opcua/readwrite/LocaleId.java       |  3 ++
 .../plc4x/java/opcua/readwrite/LocalizedText.java  |  3 ++
 .../plc4x/java/opcua/readwrite/MessagePDU.java     |  3 ++
 .../readwrite/ModelChangeStructureDataType.java    |  3 ++
 .../java/opcua/readwrite/ModificationInfo.java     |  3 ++
 .../readwrite/ModifyMonitoredItemsRequest.java     |  5 ++-
 .../readwrite/ModifyMonitoredItemsResponse.java    |  7 +++--
 .../opcua/readwrite/ModifySubscriptionRequest.java |  3 ++
 .../readwrite/ModifySubscriptionResponse.java      |  3 ++
 .../readwrite/MonitoredItemCreateRequest.java      |  3 ++
 .../opcua/readwrite/MonitoredItemCreateResult.java |  3 ++
 .../readwrite/MonitoredItemModifyRequest.java      |  3 ++
 .../opcua/readwrite/MonitoredItemModifyResult.java |  3 ++
 .../opcua/readwrite/MonitoredItemNotification.java |  3 ++
 .../java/opcua/readwrite/MonitoringFilter.java     |  3 ++
 .../opcua/readwrite/MonitoringFilterResult.java    |  3 ++
 .../java/opcua/readwrite/MonitoringParameters.java |  3 ++
 .../opcua/readwrite/NetworkAddressDataType.java    |  3 ++
 .../java/opcua/readwrite/NetworkGroupDataType.java |  5 ++-
 .../apache/plc4x/java/opcua/readwrite/Node.java    |  9 ++++--
 .../plc4x/java/opcua/readwrite/NodeAttributes.java |  3 ++
 .../apache/plc4x/java/opcua/readwrite/NodeId.java  |  3 ++
 .../java/opcua/readwrite/NodeIdByteString.java     |  3 ++
 .../plc4x/java/opcua/readwrite/NodeIdFourByte.java |  3 ++
 .../plc4x/java/opcua/readwrite/NodeIdGuid.java     |  3 ++
 .../plc4x/java/opcua/readwrite/NodeIdNumeric.java  |  3 ++
 .../plc4x/java/opcua/readwrite/NodeIdString.java   |  3 ++
 .../plc4x/java/opcua/readwrite/NodeIdTwoByte.java  |  3 ++
 .../java/opcua/readwrite/NodeIdTypeDefinition.java |  3 ++
 .../plc4x/java/opcua/readwrite/NodeReference.java  |  5 ++-
 .../java/opcua/readwrite/NodeTypeDescription.java  |  5 ++-
 .../java/opcua/readwrite/NormalizedString.java     |  3 ++
 .../java/opcua/readwrite/NotificationData.java     |  3 ++
 .../java/opcua/readwrite/NotificationMessage.java  |  5 ++-
 .../plc4x/java/opcua/readwrite/NullExtension.java  |  3 ++
 .../plc4x/java/opcua/readwrite/NumericNodeId.java  |  3 ++
 .../plc4x/java/opcua/readwrite/NumericRange.java   |  3 ++
 .../plc4x/java/opcua/readwrite/OpcuaAPU.java       |  3 ++
 .../opcua/readwrite/OpcuaAcknowledgeResponse.java  |  3 ++
 .../java/opcua/readwrite/OpcuaCloseRequest.java    |  3 ++
 .../java/opcua/readwrite/OpcuaHelloRequest.java    |  3 ++
 .../java/opcua/readwrite/OpcuaMessageRequest.java  |  3 ++
 .../java/opcua/readwrite/OpcuaMessageResponse.java |  3 ++
 .../java/opcua/readwrite/OpcuaOpenRequest.java     |  3 ++
 .../java/opcua/readwrite/OpcuaOpenResponse.java    |  3 ++
 .../plc4x/java/opcua/readwrite/OpcuaVector.java    |  3 ++
 .../opcua/readwrite/OpenSecureChannelRequest.java  |  3 ++
 .../opcua/readwrite/OpenSecureChannelResponse.java |  3 ++
 .../plc4x/java/opcua/readwrite/OptionSet.java      |  3 ++
 .../plc4x/java/opcua/readwrite/Orientation.java    |  3 ++
 .../plc4x/java/opcua/readwrite/ParsingResult.java  |  7 +++--
 .../java/opcua/readwrite/PascalByteString.java     |  3 ++
 .../plc4x/java/opcua/readwrite/PascalString.java   |  3 ++
 .../readwrite/ProgramDiagnostic2DataType.java      | 11 ++++---
 .../opcua/readwrite/ProgramDiagnosticDataType.java |  7 +++--
 .../readwrite/PubSubConfigurationDataType.java     |  7 +++--
 .../opcua/readwrite/PubSubConnectionDataType.java  |  9 ++++--
 .../java/opcua/readwrite/PubSubGroupDataType.java  |  7 +++--
 .../plc4x/java/opcua/readwrite/PublishRequest.java |  5 ++-
 .../java/opcua/readwrite/PublishResponse.java      |  7 +++--
 .../readwrite/PublishedDataSetSourceDataType.java  |  3 ++
 .../opcua/readwrite/PublishedVariableDataType.java |  5 ++-
 .../plc4x/java/opcua/readwrite/QualifiedName.java  |  3 ++
 .../java/opcua/readwrite/QueryDataDescription.java |  3 ++
 .../plc4x/java/opcua/readwrite/QueryDataSet.java   |  5 ++-
 .../java/opcua/readwrite/QueryFirstRequest.java    |  5 ++-
 .../java/opcua/readwrite/QueryFirstResponse.java   |  9 ++++--
 .../java/opcua/readwrite/QueryNextRequest.java     |  3 ++
 .../java/opcua/readwrite/QueryNextResponse.java    |  5 ++-
 .../apache/plc4x/java/opcua/readwrite/Range.java   |  3 ++
 .../plc4x/java/opcua/readwrite/RationalNumber.java |  3 ++
 .../plc4x/java/opcua/readwrite/ReadRequest.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/ReadResponse.java   |  7 +++--
 .../plc4x/java/opcua/readwrite/ReadValueId.java    |  3 ++
 .../readwrite/ReaderGroupMessageDataType.java      |  3 ++
 .../readwrite/ReaderGroupTransportDataType.java    |  3 ++
 .../opcua/readwrite/RedundantServerDataType.java   |  3 ++
 .../java/opcua/readwrite/ReferenceDescription.java |  3 ++
 .../plc4x/java/opcua/readwrite/ReferenceNode.java  |  3 ++
 .../java/opcua/readwrite/RegisterNodesRequest.java |  5 ++-
 .../opcua/readwrite/RegisterNodesResponse.java     |  5 ++-
 .../opcua/readwrite/RegisterServer2Request.java    |  5 ++-
 .../opcua/readwrite/RegisterServer2Response.java   |  7 +++--
 .../opcua/readwrite/RegisterServerRequest.java     |  3 ++
 .../opcua/readwrite/RegisterServerResponse.java    |  3 ++
 .../java/opcua/readwrite/RegisteredServer.java     |  7 +++--
 .../plc4x/java/opcua/readwrite/RelativePath.java   |  5 ++-
 .../java/opcua/readwrite/RelativePathElement.java  |  3 ++
 .../java/opcua/readwrite/RepublishRequest.java     |  3 ++
 .../java/opcua/readwrite/RepublishResponse.java    |  3 ++
 .../plc4x/java/opcua/readwrite/RequestHeader.java  |  3 ++
 .../plc4x/java/opcua/readwrite/ResponseHeader.java |  5 ++-
 .../java/opcua/readwrite/RolePermissionType.java   |  3 ++
 .../java/opcua/readwrite/RsaEncryptedSecret.java   |  3 ++
 .../SamplingIntervalDiagnosticsDataType.java       |  3 ++
 .../readwrite/SemanticChangeStructureDataType.java |  3 ++
 .../ServerDiagnosticsSummaryDataType.java          |  3 ++
 .../java/opcua/readwrite/ServerOnNetwork.java      |  5 ++-
 .../java/opcua/readwrite/ServerStatusDataType.java |  3 ++
 .../opcua/readwrite/ServiceCounterDataType.java    |  3 ++
 .../plc4x/java/opcua/readwrite/ServiceFault.java   |  3 ++
 .../readwrite/SessionAuthenticationToken.java      |  3 ++
 .../readwrite/SessionDiagnosticsDataType.java      |  5 ++-
 .../SessionSecurityDiagnosticsDataType.java        |  5 ++-
 .../readwrite/SessionlessInvokeRequestType.java    |  9 ++++--
 .../readwrite/SessionlessInvokeResponseType.java   |  7 +++--
 .../opcua/readwrite/SetMonitoringModeRequest.java  |  3 ++
 .../opcua/readwrite/SetMonitoringModeResponse.java |  7 +++--
 .../opcua/readwrite/SetPublishingModeRequest.java  |  3 ++
 .../opcua/readwrite/SetPublishingModeResponse.java |  7 +++--
 .../java/opcua/readwrite/SetTriggeringRequest.java |  3 ++
 .../opcua/readwrite/SetTriggeringResponse.java     | 11 ++++---
 .../plc4x/java/opcua/readwrite/SignatureData.java  |  3 ++
 .../opcua/readwrite/SignedSoftwareCertificate.java |  3 ++
 .../opcua/readwrite/StatusChangeNotification.java  |  3 ++
 .../plc4x/java/opcua/readwrite/StatusCode.java     |  3 ++
 .../plc4x/java/opcua/readwrite/StatusResult.java   |  3 ++
 .../plc4x/java/opcua/readwrite/StringNodeId.java   |  3 ++
 .../plc4x/java/opcua/readwrite/Structure.java      |  3 ++
 .../plc4x/java/opcua/readwrite/StructureField.java |  3 ++
 .../opcua/readwrite/SubscribedDataSetDataType.java |  3 ++
 .../readwrite/SubscriptionAcknowledgement.java     |  3 ++
 .../readwrite/SubscriptionDiagnosticsDataType.java |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Time.java    |  3 ++
 .../plc4x/java/opcua/readwrite/TimeString.java     |  3 ++
 .../java/opcua/readwrite/TimeZoneDataType.java     |  3 ++
 .../plc4x/java/opcua/readwrite/TransferResult.java |  3 ++
 .../readwrite/TransferSubscriptionsRequest.java    |  3 ++
 .../readwrite/TransferSubscriptionsResponse.java   |  7 +++--
 .../TranslateBrowsePathsToNodeIdsRequest.java      |  5 ++-
 .../TranslateBrowsePathsToNodeIdsResponse.java     |  7 +++--
 .../java/opcua/readwrite/TrustListDataType.java    | 11 ++++---
 .../plc4x/java/opcua/readwrite/TwoByteNodeId.java  |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Union.java   |  3 ++
 .../opcua/readwrite/UnregisterNodesRequest.java    |  5 ++-
 .../opcua/readwrite/UnregisterNodesResponse.java   |  3 ++
 .../opcua/readwrite/UnsignedRationalNumber.java    |  3 ++
 .../java/opcua/readwrite/UserIdentityToken.java    |  3 ++
 .../readwrite/UserIdentityTokenDefinition.java     |  3 ++
 .../opcua/readwrite/UserNameIdentityToken.java     |  3 ++
 .../java/opcua/readwrite/UserTokenPolicy.java      |  3 ++
 .../apache/plc4x/java/opcua/readwrite/UtcTime.java |  3 ++
 .../apache/plc4x/java/opcua/readwrite/Variant.java |  3 ++
 .../plc4x/java/opcua/readwrite/VariantBoolean.java |  3 ++
 .../plc4x/java/opcua/readwrite/VariantByte.java    |  3 ++
 .../java/opcua/readwrite/VariantByteString.java    |  5 ++-
 .../java/opcua/readwrite/VariantDataValue.java     |  5 ++-
 .../java/opcua/readwrite/VariantDateTime.java      |  3 ++
 .../opcua/readwrite/VariantDiagnosticInfo.java     |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantDouble.java  |  3 ++
 .../opcua/readwrite/VariantExpandedNodeId.java     |  5 ++-
 .../opcua/readwrite/VariantExtensionObject.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantFloat.java   |  3 ++
 .../plc4x/java/opcua/readwrite/VariantGuid.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantInt16.java   |  3 ++
 .../plc4x/java/opcua/readwrite/VariantInt32.java   |  3 ++
 .../plc4x/java/opcua/readwrite/VariantInt64.java   |  3 ++
 .../java/opcua/readwrite/VariantLocalizedText.java |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantNodeId.java  |  5 ++-
 .../java/opcua/readwrite/VariantQualifiedName.java |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantSByte.java   |  3 ++
 .../java/opcua/readwrite/VariantStatusCode.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantString.java  |  5 ++-
 .../plc4x/java/opcua/readwrite/VariantUInt16.java  |  3 ++
 .../plc4x/java/opcua/readwrite/VariantUInt32.java  |  3 ++
 .../plc4x/java/opcua/readwrite/VariantUInt64.java  |  3 ++
 .../plc4x/java/opcua/readwrite/VariantVariant.java |  5 ++-
 .../java/opcua/readwrite/VariantXmlElement.java    |  5 ++-
 .../plc4x/java/opcua/readwrite/VersionTime.java    |  3 ++
 .../java/opcua/readwrite/ViewDescription.java      |  3 ++
 .../plc4x/java/opcua/readwrite/WriteRequest.java   |  5 ++-
 .../plc4x/java/opcua/readwrite/WriteResponse.java  |  7 +++--
 .../plc4x/java/opcua/readwrite/WriteValue.java     |  3 ++
 .../readwrite/WriterGroupMessageDataType.java      |  3 ++
 .../readwrite/WriterGroupTransportDataType.java    |  3 ++
 .../java/opcua/readwrite/X509IdentityToken.java    |  3 ++
 .../apache/plc4x/java/opcua/readwrite/XVType.java  |  3 ++
 .../plc4x/java/opcua/readwrite/XmlElement.java     |  3 ++
 .../java/openprotocol/readwrite/Constants.java     |  3 ++
 .../readwrite/OpenProtocolMessage.java             |  3 ++
 .../readwrite/OpenProtocolMessageAlarm.java        |  3 ++
 .../OpenProtocolMessageAlarmAcknowledge.java       |  3 ++
 .../OpenProtocolMessageAlarmAcknowledgeRev1.java   |  3 ++
 .../readwrite/OpenProtocolMessageAlarmRev1.java    |  3 ++
 .../readwrite/OpenProtocolMessageAlarmRev2.java    |  3 ++
 .../readwrite/OpenProtocolMessageAlarmStatus.java  |  3 ++
 .../OpenProtocolMessageAlarmStatusAcknowledge.java |  3 ++
 ...nProtocolMessageAlarmStatusAcknowledgeRev1.java |  3 ++
 .../OpenProtocolMessageAlarmStatusRev1.java        |  3 ++
 .../OpenProtocolMessageAlarmStatusRev2.java        |  3 ++
 .../OpenProtocolMessageAlarmSubscribe.java         |  3 ++
 .../OpenProtocolMessageAlarmSubscribeRev1.java     |  3 ++
 .../OpenProtocolMessageAlarmUnsubscribe.java       |  3 ++
 .../OpenProtocolMessageAlarmUnsubscribeRev1.java   |  3 ++
 ...nProtocolMessageApplicationCommandAccepted.java |  3 ++
 ...tocolMessageApplicationCommandAcceptedRev1.java |  3 ++
 ...OpenProtocolMessageApplicationCommandError.java |  3 ++
 ...ProtocolMessageApplicationCommandErrorRev1.java |  3 ++
 ...otocolMessageApplicationCommunicationStart.java |  3 ++
 ...geApplicationCommunicationStartAcknowledge.java |  3 ++
 ...plicationCommunicationStartAcknowledgeRev1.java |  3 ++
 ...plicationCommunicationStartAcknowledgeRev2.java |  3 ++
 ...plicationCommunicationStartAcknowledgeRev3.java |  3 ++
 ...plicationCommunicationStartAcknowledgeRev4.java |  3 ++
 ...plicationCommunicationStartAcknowledgeRev5.java |  3 ++
 ...plicationCommunicationStartAcknowledgeRev6.java |  3 ++
 ...rotocolMessageApplicationCommunicationStop.java |  3 ++
 ...otocolMessageApplicationGenericDataRequest.java |  3 ++
 ...olMessageApplicationGenericDataRequestRev1.java |  3 ++
 ...tocolMessageApplicationGenericSubscription.java |  3 ++
 ...lMessageApplicationGenericSubscriptionRev1.java |  3 ++
 ...otocolMessageApplicationGenericUnsubscribe.java |  3 ++
 ...olMessageApplicationGenericUnsubscribeRev1.java |  3 ++
 .../readwrite/OpenProtocolMessageDisableTool.java  |  3 ++
 .../OpenProtocolMessageDisableToolRev1.java        |  3 ++
 .../OpenProtocolMessageDynamicPsetSelection.java   |  3 ++
 ...penProtocolMessageDynamicPsetSelectionRev1.java |  5 ++-
 .../readwrite/OpenProtocolMessageEnableTool.java   |  3 ++
 .../OpenProtocolMessageEnableToolRev1.java         |  3 ++
 ...penProtocolMessageExecuteDynamicJobRequest.java |  3 ++
 ...rotocolMessageExecuteDynamicJobRequestRev1.java |  3 ++
 ...tocolMessageExecuteDynamicJobRequestRev999.java |  3 ++
 ...enProtocolMessageIdentifierDownloadRequest.java |  3 ++
 ...otocolMessageIdentifierDownloadRequestRev1.java |  3 ++
 ...lMessageKeepAliveOpenProtocolCommunication.java |  3 ++
 ...sageKeepAliveOpenProtocolCommunicationRev1.java |  3 ++
 ...penProtocolMessageLastTighteningResultData.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev1.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev2.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev3.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev4.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev5.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev6.java |  3 ++
 ...rotocolMessageLastTighteningResultDataRev7.java |  3 ++
 ...tocolMessageLastTighteningResultDataRev998.java |  5 ++-
 ...MessageLastTighteningResultDataRev999Light.java |  3 ++
 ...olMessageLastTighteningResultDataSubscribe.java |  3 ++
 ...ssageLastTighteningResultDataSubscribeRev1.java |  3 ++
 ...rotocolMessageLinkLevelNegativeAcknowledge.java |  3 ++
 ...colMessageLinkLevelNegativeAcknowledgeRev1.java |  3 ++
 ...rotocolMessageLinkLevelPositiveAcknowledge.java |  3 ++
 ...colMessageLinkLevelPositiveAcknowledgeRev1.java |  3 ++
 ...penProtocolMessageLockAtBatchDoneSubscribe.java |  3 ++
 ...rotocolMessageLockAtBatchDoneSubscribeRev1.java |  3 ++
 ...nProtocolMessageLockAtBatchDoneUnsubscribe.java |  3 ++
 ...tocolMessageLockAtBatchDoneUnsubscribeRev1.java |  3 ++
 .../OpenProtocolMessageLockAtBatchDoneUpload.java  |  3 ++
 ...colMessageLockAtBatchDoneUploadAcknowledge.java |  3 ++
 ...essageLockAtBatchDoneUploadAcknowledgeRev1.java |  3 ++
 ...enProtocolMessageLockAtBatchDoneUploadRev1.java |  3 ++
 ...ProtocolMessageParameterSetDataUploadReply.java |  3 ++
 ...ocolMessageParameterSetDataUploadReplyRev1.java |  3 ++
 ...ocolMessageParameterSetDataUploadReplyRev2.java |  3 ++
 ...otocolMessageParameterSetDataUploadRequest.java |  3 ++
 ...olMessageParameterSetDataUploadRequestRev1.java |  3 ++
 ...olMessageParameterSetDataUploadRequestRev2.java |  3 ++
 ...enProtocolMessageParameterSetIdUploadReply.java |  3 ++
 ...otocolMessageParameterSetIdUploadReplyRev1.java |  3 ++
 ...otocolMessageParameterSetIdUploadReplyRev2.java |  3 ++
 ...otocolMessageParameterSetIdUploadReplyRev3.java |  3 ++
 ...ProtocolMessageParameterSetIdUploadRequest.java |  3 ++
 ...ocolMessageParameterSetIdUploadRequestRev1.java |  3 ++
 .../OpenProtocolMessageParameterSetSelected.java   |  3 ++
 ...ocolMessageParameterSetSelectedAcknowledge.java |  3 ++
 ...MessageParameterSetSelectedAcknowledgeRev1.java |  3 ++
 ...penProtocolMessageParameterSetSelectedRev1.java |  3 ++
 ...penProtocolMessageParameterSetSelectedRev2.java |  3 ++
 ...otocolMessageParameterSetSelectedSubscribe.java |  3 ++
 ...olMessageParameterSetSelectedSubscribeRev1.java |  3 ++
 ...ocolMessageParameterSetSelectedUnsubscribe.java |  3 ++
 ...MessageParameterSetSelectedUnsubscribeRev1.java |  3 ++
 ...colMessageProgramPsetSelectionInDynamicJob.java |  3 ++
 ...essageProgramPsetSelectionInDynamicJobRev1.java |  3 ++
 ...otocolMessageResetParameterSetBatchCounter.java |  3 ++
 ...olMessageResetParameterSetBatchCounterRev1.java |  3 ++
 .../OpenProtocolMessageResultTracesCurve.java      |  3 ++
 ...enProtocolMessageResultTracesCurvePlotData.java |  3 ++
 ...otocolMessageResultTracesCurvePlotDataRev1.java |  5 ++-
 .../OpenProtocolMessageResultTracesCurveRev1.java  |  3 ++
 .../OpenProtocolMessageSelectParameterSet.java     |  3 ++
 .../OpenProtocolMessageSelectParameterSetRev1.java |  3 ++
 ...penProtocolMessageSetParameterSetBatchSize.java |  3 ++
 ...rotocolMessageSetParameterSetBatchSizeRev1.java |  3 ++
 .../readwrite/OpenProtocolMessageSetTime.java      |  3 ++
 .../readwrite/OpenProtocolMessageSetTimeRev1.java  |  3 ++
 .../java/openprotocol/readwrite/StageResult.java   |  3 ++
 .../openprotocol/readwrite/VariableDataField.java  |  3 ++
 .../java/plc4x/readwrite/Plc4xConnectRequest.java  |  3 ++
 .../java/plc4x/readwrite/Plc4xConnectResponse.java |  3 ++
 .../plc4x/java/plc4x/readwrite/Plc4xConstants.java |  3 ++
 .../plc4x/java/plc4x/readwrite/Plc4xMessage.java   |  3 ++
 .../java/plc4x/readwrite/Plc4xReadRequest.java     |  5 ++-
 .../java/plc4x/readwrite/Plc4xReadResponse.java    |  5 ++-
 .../plc4x/java/plc4x/readwrite/Plc4xTag.java       |  3 ++
 .../java/plc4x/readwrite/Plc4xTagRequest.java      |  3 ++
 .../java/plc4x/readwrite/Plc4xTagResponse.java     |  3 ++
 .../java/plc4x/readwrite/Plc4xTagValueRequest.java |  3 ++
 .../plc4x/readwrite/Plc4xTagValueResponse.java     |  3 ++
 .../java/plc4x/readwrite/Plc4xWriteRequest.java    |  5 ++-
 .../java/plc4x/readwrite/Plc4xWriteResponse.java   |  5 ++-
 .../profinet/readwrite/DceRpc_ActivityUuid.java    |  3 ++
 .../profinet/readwrite/DceRpc_InterfaceUuid.java   |  3 ++
 .../DceRpc_InterfaceUuid_ControllerInterface.java  |  3 ++
 .../DceRpc_InterfaceUuid_DeviceInterface.java      |  3 ++
 .../DceRpc_InterfaceUuid_ParameterInterface.java   |  3 ++
 .../DceRpc_InterfaceUuid_SupervisorInterface.java  |  3 ++
 .../java/profinet/readwrite/DceRpc_ObjectUuid.java |  3 ++
 .../java/profinet/readwrite/DceRpc_Packet.java     |  3 ++
 .../java/profinet/readwrite/Ethernet_Frame.java    |  3 ++
 .../profinet/readwrite/Ethernet_FramePayload.java  |  3 ++
 .../readwrite/Ethernet_FramePayload_IPv4.java      |  3 ++
 .../readwrite/Ethernet_FramePayload_PnDcp.java     |  3 ++
 .../Ethernet_FramePayload_VirtualLan.java          |  3 ++
 .../plc4x/java/profinet/readwrite/IpAddress.java   |  3 ++
 .../plc4x/java/profinet/readwrite/MacAddress.java  |  3 ++
 .../profinet/readwrite/PcDcp_Pdu_DelayReq.java     |  3 ++
 .../plc4x/java/profinet/readwrite/PnDcp_Block.java |  3 ++
 .../readwrite/PnDcp_Block_ALLSelector.java         |  3 ++
 .../PnDcp_Block_ControlOptionFactoryReset.java     |  3 ++
 .../PnDcp_Block_ControlOptionResetToFactory.java   |  3 ++
 .../PnDcp_Block_ControlOptionResponse.java         |  3 ++
 .../readwrite/PnDcp_Block_ControlOptionSignal.java |  3 ++
 .../readwrite/PnDcp_Block_ControlOptionStart.java  |  3 ++
 .../readwrite/PnDcp_Block_ControlOptionStop.java   |  3 ++
 .../PnDcp_Block_DeviceInitiativeOption.java        |  3 ++
 .../PnDcp_Block_DevicePropertiesAliasName.java     |  3 ++
 .../PnDcp_Block_DevicePropertiesDeviceId.java      |  3 ++
 ...PnDcp_Block_DevicePropertiesDeviceInstance.java |  3 ++
 .../PnDcp_Block_DevicePropertiesDeviceOptions.java |  3 ++
 .../PnDcp_Block_DevicePropertiesDeviceRole.java    |  3 ++
 .../PnDcp_Block_DevicePropertiesDeviceVendor.java  |  3 ++
 .../PnDcp_Block_DevicePropertiesNameOfStation.java |  3 ++
 .../PnDcp_Block_DevicePropertiesOemDeviceId.java   |  3 ++
 ...nDcp_Block_DevicePropertiesStandardGateway.java |  3 ++
 .../PnDcp_Block_DhcpOptionClassIdentifier.java     |  3 ++
 ...PnDcp_Block_DhcpOptionDhcpClientIdentifier.java |  3 ++
 ...p_Block_DhcpOptionFullyQualifiedDomainName.java |  3 ++
 .../readwrite/PnDcp_Block_DhcpOptionHostName.java  |  3 ++
 ...PnDcp_Block_DhcpOptionParameterRequestList.java |  3 ++
 .../PnDcp_Block_DhcpOptionServerIdentifier.java    |  3 ++
 .../PnDcp_Block_DhcpOptionUuidBasedClient.java     |  3 ++
 ..._Block_DhcpOptionVendorSpecificInformation.java |  3 ++
 .../readwrite/PnDcp_Block_FullIpSuite.java         |  3 ++
 .../readwrite/PnDcp_Block_IpMacAddress.java        |  3 ++
 .../readwrite/PnDcp_Block_IpParameter.java         |  3 ++
 .../plc4x/java/profinet/readwrite/PnDcp_Pdu.java   |  3 ++
 .../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java  |  3 ++
 .../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java  |  3 ++
 .../readwrite/PnDcp_Pdu_IdentifyRes_Payload.java   |  3 ++
 .../readwrite/PnDcp_Pdu_RealTimeCyclic.java        |  3 ++
 .../java/profinet/readwrite/PnDcp_ServiceType.java |  3 ++
 .../readwrite/PnDcp_SupportedDeviceOption.java     |  3 ++
 .../java/profinet/readwrite/PnIoCm_Block.java      |  3 ++
 .../readwrite/PnIoCm_Block_AlarmCrReq.java         |  3 ++
 .../readwrite/PnIoCm_Block_AlarmCrRes.java         |  3 ++
 .../profinet/readwrite/PnIoCm_Block_ArReq.java     |  3 ++
 .../profinet/readwrite/PnIoCm_Block_ArRes.java     |  3 ++
 .../profinet/readwrite/PnIoCm_Block_ArServer.java  |  3 ++
 .../PnIoCm_Block_ExpectedSubmoduleReq.java         |  5 ++-
 .../profinet/readwrite/PnIoCm_Block_IoCrReq.java   |  5 ++-
 .../profinet/readwrite/PnIoCm_Block_IoCrRes.java   |  3 ++
 .../readwrite/PnIoCm_Block_ModuleDiff.java         |  5 ++-
 .../PnIoCm_ExpectedSubmoduleBlockReqApi.java       |  5 ++-
 .../profinet/readwrite/PnIoCm_IoCrBlockReqApi.java |  7 +++--
 .../plc4x/java/profinet/readwrite/PnIoCm_IoCs.java |  3 ++
 .../profinet/readwrite/PnIoCm_IoDataObject.java    |  3 ++
 .../readwrite/PnIoCm_ModuleDiffBlockApi.java       |  5 ++-
 .../PnIoCm_ModuleDiffBlockApi_Module.java          |  5 ++-
 .../PnIoCm_ModuleDiffBlockApi_Submodule.java       |  3 ++
 .../java/profinet/readwrite/PnIoCm_Packet.java     |  3 ++
 .../java/profinet/readwrite/PnIoCm_Packet_Rej.java |  3 ++
 .../java/profinet/readwrite/PnIoCm_Packet_Req.java |  3 ++
 .../java/profinet/readwrite/PnIoCm_Packet_Res.java |  3 ++
 .../java/profinet/readwrite/PnIoCm_Submodule.java  |  3 ++
 .../PnIoCm_Submodule_InputAndOutputData.java       |  3 ++
 .../PnIoCm_Submodule_NoInputNoOutputData.java      |  3 ++
 .../apache/plc4x/java/profinet/readwrite/Uuid.java |  3 ++
 .../readwrite/AlarmMessageAckObjectPushType.java   |  3 ++
 .../java/s7/readwrite/AlarmMessageAckPushType.java |  5 ++-
 .../s7/readwrite/AlarmMessageAckResponseType.java  |  3 ++
 .../java/s7/readwrite/AlarmMessageAckType.java     |  5 ++-
 .../s7/readwrite/AlarmMessageObjectAckType.java    |  3 ++
 .../s7/readwrite/AlarmMessageObjectPushType.java   |  5 ++-
 .../s7/readwrite/AlarmMessageObjectQueryType.java  |  3 ++
 .../java/s7/readwrite/AlarmMessagePushType.java    |  5 ++-
 .../java/s7/readwrite/AlarmMessageQueryType.java   |  5 ++-
 .../java/s7/readwrite/AssociatedValueType.java     |  3 ++
 .../apache/plc4x/java/s7/readwrite/COTPPacket.java |  3 ++
 .../s7/readwrite/COTPPacketConnectionRequest.java  |  3 ++
 .../s7/readwrite/COTPPacketConnectionResponse.java |  3 ++
 .../plc4x/java/s7/readwrite/COTPPacketData.java    |  3 ++
 .../s7/readwrite/COTPPacketDisconnectRequest.java  |  3 ++
 .../s7/readwrite/COTPPacketDisconnectResponse.java |  3 ++
 .../java/s7/readwrite/COTPPacketTpduError.java     |  3 ++
 .../plc4x/java/s7/readwrite/COTPParameter.java     |  3 ++
 .../java/s7/readwrite/COTPParameterCalledTsap.java |  3 ++
 .../s7/readwrite/COTPParameterCallingTsap.java     |  3 ++
 .../java/s7/readwrite/COTPParameterChecksum.java   |  3 ++
 ...TPParameterDisconnectAdditionalInformation.java |  3 ++
 .../java/s7/readwrite/COTPParameterTpduSize.java   |  3 ++
 .../plc4x/java/s7/readwrite/DateAndTime.java       |  3 ++
 .../apache/plc4x/java/s7/readwrite/S7Address.java  |  3 ++
 .../plc4x/java/s7/readwrite/S7AddressAny.java      |  3 ++
 .../java/s7/readwrite/S7DataAlarmMessage.java      |  3 ++
 .../apache/plc4x/java/s7/readwrite/S7Message.java  |  3 ++
 .../java/s7/readwrite/S7MessageObjectRequest.java  |  3 ++
 .../java/s7/readwrite/S7MessageObjectResponse.java |  3 ++
 .../plc4x/java/s7/readwrite/S7MessageRequest.java  |  3 ++
 .../plc4x/java/s7/readwrite/S7MessageResponse.java |  3 ++
 .../java/s7/readwrite/S7MessageResponseData.java   |  3 ++
 .../plc4x/java/s7/readwrite/S7MessageUserData.java |  3 ++
 .../plc4x/java/s7/readwrite/S7Parameter.java       |  3 ++
 .../s7/readwrite/S7ParameterModeTransition.java    |  3 ++
 .../s7/readwrite/S7ParameterReadVarRequest.java    |  5 ++-
 .../s7/readwrite/S7ParameterReadVarResponse.java   |  3 ++
 .../readwrite/S7ParameterSetupCommunication.java   |  3 ++
 .../java/s7/readwrite/S7ParameterUserData.java     |  5 ++-
 .../java/s7/readwrite/S7ParameterUserDataItem.java |  3 ++
 .../S7ParameterUserDataItemCPUFunctions.java       |  3 ++
 .../s7/readwrite/S7ParameterWriteVarRequest.java   |  5 ++-
 .../s7/readwrite/S7ParameterWriteVarResponse.java  |  3 ++
 .../apache/plc4x/java/s7/readwrite/S7Payload.java  |  3 ++
 .../plc4x/java/s7/readwrite/S7PayloadAlarm8.java   |  3 ++
 .../java/s7/readwrite/S7PayloadAlarmAckInd.java    |  3 ++
 .../plc4x/java/s7/readwrite/S7PayloadAlarmS.java   |  3 ++
 .../plc4x/java/s7/readwrite/S7PayloadAlarmSC.java  |  3 ++
 .../plc4x/java/s7/readwrite/S7PayloadAlarmSQ.java  |  3 ++
 .../s7/readwrite/S7PayloadDiagnosticMessage.java   |  3 ++
 .../plc4x/java/s7/readwrite/S7PayloadNotify.java   |  3 ++
 .../plc4x/java/s7/readwrite/S7PayloadNotify8.java  |  3 ++
 .../s7/readwrite/S7PayloadReadVarResponse.java     |  5 ++-
 .../plc4x/java/s7/readwrite/S7PayloadUserData.java |  5 ++-
 .../java/s7/readwrite/S7PayloadUserDataItem.java   |  3 ++
 .../S7PayloadUserDataItemCpuFunctionAlarmAck.java  |  5 ++-
 ...oadUserDataItemCpuFunctionAlarmAckResponse.java |  3 ++
 ...S7PayloadUserDataItemCpuFunctionAlarmQuery.java |  3 ++
 ...dUserDataItemCpuFunctionAlarmQueryResponse.java |  3 ++
 ...loadUserDataItemCpuFunctionMsgSubscription.java |  3 ++
 ...temCpuFunctionMsgSubscriptionAlarmResponse.java |  3 ++
 ...DataItemCpuFunctionMsgSubscriptionResponse.java |  3 ++
 ...aItemCpuFunctionMsgSubscriptionSysResponse.java |  3 ++
 ...yloadUserDataItemCpuFunctionReadSzlRequest.java |  3 ++
 ...loadUserDataItemCpuFunctionReadSzlResponse.java |  5 ++-
 .../s7/readwrite/S7PayloadWriteVarRequest.java     |  5 ++-
 .../s7/readwrite/S7PayloadWriteVarResponse.java    |  5 ++-
 .../java/s7/readwrite/S7VarPayloadDataItem.java    | 13 ++++++--
 .../java/s7/readwrite/S7VarPayloadStatusItem.java  |  3 ++
 .../s7/readwrite/S7VarRequestParameterItem.java    |  3 ++
 .../S7VarRequestParameterItemAddress.java          |  3 ++
 .../org/apache/plc4x/java/s7/readwrite/State.java  |  3 ++
 .../plc4x/java/s7/readwrite/SzlDataTreeItem.java   |  3 ++
 .../org/apache/plc4x/java/s7/readwrite/SzlId.java  |  3 ++
 .../apache/plc4x/java/s7/readwrite/TPKTPacket.java |  3 ++
 plc4j/drivers/s7/src/test/java/S7IoTest.java       | 36 ++++++++--------------
 .../plc4x/java/simulated/readwrite/Dummy.java      |  3 ++
 .../plc4x/java/spi/codegen/ThreadLocalHelper.java  | 25 +++++++++++++++
 .../java/spi/codegen/fields/FieldReaderArray.java  |  2 ++
 .../java/spi/codegen/fields/FieldWriterArray.java  |  9 ++++--
 .../java/plc4x/readwrite/Plc4xConnectRequest.java  |  3 ++
 .../java/plc4x/readwrite/Plc4xConnectResponse.java |  3 ++
 .../plc4x/java/plc4x/readwrite/Plc4xConstants.java |  3 ++
 .../plc4x/java/plc4x/readwrite/Plc4xMessage.java   |  3 ++
 .../java/plc4x/readwrite/Plc4xReadRequest.java     |  5 ++-
 .../java/plc4x/readwrite/Plc4xReadResponse.java    |  5 ++-
 .../plc4x/java/plc4x/readwrite/Plc4xTag.java       |  3 ++
 .../java/plc4x/readwrite/Plc4xTagRequest.java      |  3 ++
 .../java/plc4x/readwrite/Plc4xTagResponse.java     |  3 ++
 .../java/plc4x/readwrite/Plc4xTagValueRequest.java |  3 ++
 .../plc4x/readwrite/Plc4xTagValueResponse.java     |  3 ++
 .../java/plc4x/readwrite/Plc4xWriteRequest.java    |  5 ++-
 .../java/plc4x/readwrite/Plc4xWriteResponse.java   |  5 ++-
 .../java/socketcan/readwrite/SocketCANFrame.java   |  3 ++
 .../s7/src/main/resources/protocols/s7/s7.mspec    |  7 ++---
 .../resources/protocols/s7/DriverTestsuite.xml     |  3 +-
 .../protocols/s7/ParserSerializerTestsuite.xml     | 14 ++++-----
 2608 files changed, 8094 insertions(+), 269 deletions(-)

diff --git a/code-generation/language-java/src/main/resources/templates/java/complex-type-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/complex-type-template.java.ftlh
index a0ea49881c..aa33c7e9a0 100644
--- a/code-generation/language-java/src/main/resources/templates/java/complex-type-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/complex-type-template.java.ftlh
@@ -253,6 +253,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
         <#if helper.hasFieldOfType("unknown")>
             throw new SerializationException("Unknown field not serializable");
         <#else>
+            boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
             int startPos = positionAware.getPos();
             writeBuffer.pushContext("${type.name}");
             <#assign reservedFieldIndex=0>
@@ -403,7 +404,8 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
     public int getLengthInBits() {
         int lengthInBits = <#if type.parentType.isPresent()>super.getLengthInBits()<#else>0</#if>;
         ${type.name} _value  = this;
-<#list type.fields as field>
+        boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
+    <#list type.fields as field>
 <#switch field.typeName>
     <#case "array">
         <#assign arrayField = field.asArrayField().orElseThrow()>
@@ -418,7 +420,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
             int i=0;
             <#assign nonSimpleTypeReference = arrayElementTypeReference.asNonSimpleTypeReference().orElseThrow()>
             for(${nonSimpleTypeReference.name} element : ${arrayField.name}) {
-                boolean last = ++i >= ${arrayField.name}.size();
+                ThreadLocalHelper.lastItemThreadLocal.set(++i >= ${arrayField.name}.size());
                 lengthInBits += element.getLengthInBits();
             }
         <#else>
@@ -610,6 +612,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
         PositionAware positionAware = readBuffer;
         int startPos = positionAware.getPos();
         int curPos;
+        boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     <#assign reservedFieldIndex=0>
     <#list type.fields as field>
         <#switch field.typeName>
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionRequest.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionRequest.java
index 8b9ca92549..0f1c8cefe9 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionRequest.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionRequest.java
@@ -51,6 +51,7 @@ public class CIPEncapsulationConnectionRequest extends CIPEncapsulationPacket im
   protected void serializeCIPEncapsulationPacketChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("CIPEncapsulationConnectionRequest");
 
@@ -66,6 +67,7 @@ public class CIPEncapsulationConnectionRequest extends CIPEncapsulationPacket im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     CIPEncapsulationConnectionRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -76,6 +78,7 @@ public class CIPEncapsulationConnectionRequest extends CIPEncapsulationPacket im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("CIPEncapsulationConnectionRequest");
     // Create the instance
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionResponse.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionResponse.java
index b910d4d18c..18141a32c3 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionResponse.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationConnectionResponse.java
@@ -51,6 +51,7 @@ public class CIPEncapsulationConnectionResponse extends CIPEncapsulationPacket i
   protected void serializeCIPEncapsulationPacketChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("CIPEncapsulationConnectionResponse");
 
@@ -66,6 +67,7 @@ public class CIPEncapsulationConnectionResponse extends CIPEncapsulationPacket i
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     CIPEncapsulationConnectionResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -76,6 +78,7 @@ public class CIPEncapsulationConnectionResponse extends CIPEncapsulationPacket i
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("CIPEncapsulationConnectionResponse");
     // Create the instance
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationPacket.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationPacket.java
index 1a95811263..bcbe27edfd 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationPacket.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationPacket.java
@@ -76,6 +76,7 @@ public abstract class CIPEncapsulationPacket implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("CIPEncapsulationPacket");
 
@@ -145,6 +146,7 @@ public abstract class CIPEncapsulationPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     CIPEncapsulationPacket _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Discriminator Field (commandType)
     lengthInBits += 16;
@@ -185,6 +187,7 @@ public abstract class CIPEncapsulationPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int commandType =
         readDiscriminatorField(
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadRequest.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadRequest.java
index 37c73c3e15..aa6d1a4be9 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadRequest.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadRequest.java
@@ -63,6 +63,7 @@ public class CIPEncapsulationReadRequest extends CIPEncapsulationPacket implemen
   protected void serializeCIPEncapsulationPacketChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("CIPEncapsulationReadRequest");
 
@@ -85,6 +86,7 @@ public class CIPEncapsulationReadRequest extends CIPEncapsulationPacket implemen
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     CIPEncapsulationReadRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (request)
     lengthInBits += request.getLengthInBits();
@@ -98,6 +100,7 @@ public class CIPEncapsulationReadRequest extends CIPEncapsulationPacket implemen
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     DF1RequestMessage request =
         readSimpleField(
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadResponse.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadResponse.java
index 1eea1f0bdd..2ad1ca5952 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadResponse.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/CIPEncapsulationReadResponse.java
@@ -63,6 +63,7 @@ public class CIPEncapsulationReadResponse extends CIPEncapsulationPacket impleme
   protected void serializeCIPEncapsulationPacketChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("CIPEncapsulationReadResponse");
 
@@ -85,6 +86,7 @@ public class CIPEncapsulationReadResponse extends CIPEncapsulationPacket impleme
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     CIPEncapsulationReadResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (response)
     lengthInBits += response.getLengthInBits();
@@ -98,6 +100,7 @@ public class CIPEncapsulationReadResponse extends CIPEncapsulationPacket impleme
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     DF1ResponseMessage response =
         readSimpleField(
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandRequestMessage.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandRequestMessage.java
index a08633c7f0..8d9378bed1 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandRequestMessage.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandRequestMessage.java
@@ -63,6 +63,7 @@ public class DF1CommandRequestMessage extends DF1RequestMessage implements Messa
   protected void serializeDF1RequestMessageChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1CommandRequestMessage");
 
@@ -81,6 +82,7 @@ public class DF1CommandRequestMessage extends DF1RequestMessage implements Messa
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1CommandRequestMessage _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (command)
     lengthInBits += command.getLengthInBits();
@@ -94,6 +96,7 @@ public class DF1CommandRequestMessage extends DF1RequestMessage implements Messa
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     DF1RequestCommand command =
         readSimpleField(
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandResponseMessageProtectedTypedLogicalRead.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandResponseMessageProtectedTypedLogicalRead.java
index df7ea442b5..c16fdf591c 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandResponseMessageProtectedTypedLogicalRead.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1CommandResponseMessageProtectedTypedLogicalRead.java
@@ -64,6 +64,7 @@ public class DF1CommandResponseMessageProtectedTypedLogicalRead extends DF1Respo
   protected void serializeDF1ResponseMessageChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1CommandResponseMessageProtectedTypedLogicalRead");
 
@@ -82,6 +83,7 @@ public class DF1CommandResponseMessageProtectedTypedLogicalRead extends DF1Respo
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1CommandResponseMessageProtectedTypedLogicalRead _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (data != null) {
@@ -97,6 +99,7 @@ public class DF1CommandResponseMessageProtectedTypedLogicalRead extends DF1Respo
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<Short> data =
         readLengthArrayField("data", readUnsignedShort(readBuffer, 8), (payloadLength) - (8));
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestCommand.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestCommand.java
index e4880c1ab1..c2e9cecb00 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestCommand.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestCommand.java
@@ -49,6 +49,7 @@ public abstract class DF1RequestCommand implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1RequestCommand");
 
@@ -70,6 +71,7 @@ public abstract class DF1RequestCommand implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     DF1RequestCommand _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Discriminator Field (functionCode)
     lengthInBits += 8;
@@ -90,6 +92,7 @@ public abstract class DF1RequestCommand implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short functionCode = readDiscriminatorField("functionCode", readUnsignedShort(readBuffer, 8));
 
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestMessage.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestMessage.java
index 07c90024d4..f0b81a1644 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestMessage.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestMessage.java
@@ -76,6 +76,7 @@ public abstract class DF1RequestMessage implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1RequestMessage");
 
@@ -112,6 +113,7 @@ public abstract class DF1RequestMessage implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     DF1RequestMessage _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (destinationAddress)
     lengthInBits += 8;
@@ -147,6 +149,7 @@ public abstract class DF1RequestMessage implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short destinationAddress =
         readSimpleField("destinationAddress", readUnsignedShort(readBuffer, 8));
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestProtectedTypedLogicalRead.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestProtectedTypedLogicalRead.java
index 019b292208..33e6e15c6c 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestProtectedTypedLogicalRead.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1RequestProtectedTypedLogicalRead.java
@@ -87,6 +87,7 @@ public class DF1RequestProtectedTypedLogicalRead extends DF1RequestCommand imple
   protected void serializeDF1RequestCommandChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1RequestProtectedTypedLogicalRead");
 
@@ -117,6 +118,7 @@ public class DF1RequestProtectedTypedLogicalRead extends DF1RequestCommand imple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1RequestProtectedTypedLogicalRead _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (byteSize)
     lengthInBits += 8;
@@ -142,6 +144,7 @@ public class DF1RequestProtectedTypedLogicalRead extends DF1RequestCommand imple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short byteSize = readSimpleField("byteSize", readUnsignedShort(readBuffer, 8));
 
diff --git a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1ResponseMessage.java b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1ResponseMessage.java
index ce68c672e6..bded10751c 100644
--- a/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1ResponseMessage.java
+++ b/plc4j/drivers/ab-eth/src/main/generated/org/apache/plc4x/java/abeth/readwrite/DF1ResponseMessage.java
@@ -76,6 +76,7 @@ public abstract class DF1ResponseMessage implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1ResponseMessage");
 
@@ -115,6 +116,7 @@ public abstract class DF1ResponseMessage implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     DF1ResponseMessage _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 8;
@@ -168,6 +170,7 @@ public abstract class DF1ResponseMessage implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Short reservedField0 =
         readReservedField("reserved", readUnsignedShort(readBuffer, 8), (short) 0x00);
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscovery.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscovery.java
index ff9e9f7464..676e814895 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscovery.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscovery.java
@@ -87,6 +87,7 @@ public class AdsDiscovery implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscovery");
 
@@ -154,6 +155,7 @@ public class AdsDiscovery implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsDiscovery _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Const Field (header)
     lengthInBits += 32;
@@ -177,7 +179,7 @@ public class AdsDiscovery implements Message {
     if (blocks != null) {
       int i = 0;
       for (AdsDiscoveryBlock element : blocks) {
-        boolean last = ++i >= blocks.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= blocks.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -196,6 +198,7 @@ public class AdsDiscovery implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long header =
         readConstField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlock.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlock.java
index f18d683201..fb7dc91891 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlock.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlock.java
@@ -49,6 +49,7 @@ public abstract class AdsDiscoveryBlock implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlock");
 
@@ -77,6 +78,7 @@ public abstract class AdsDiscoveryBlock implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsDiscoveryBlock _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Discriminator Field (blockType)
     lengthInBits += 16;
@@ -97,6 +99,7 @@ public abstract class AdsDiscoveryBlock implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     AdsDiscoveryBlockType blockType =
         readDiscriminatorField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockAmsNetId.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockAmsNetId.java
index a7bf1e3044..64d3bf4f81 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockAmsNetId.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockAmsNetId.java
@@ -65,6 +65,7 @@ public class AdsDiscoveryBlockAmsNetId extends AdsDiscoveryBlock implements Mess
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockAmsNetId");
 
@@ -86,6 +87,7 @@ public class AdsDiscoveryBlockAmsNetId extends AdsDiscoveryBlock implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockAmsNetId _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Const Field (amsNetIdLength)
     lengthInBits += 16;
@@ -102,6 +104,7 @@ public class AdsDiscoveryBlockAmsNetId extends AdsDiscoveryBlock implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int amsNetIdLength =
         readConstField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockFingerprint.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockFingerprint.java
index 19ce41d129..c8445ffe51 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockFingerprint.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockFingerprint.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockFingerprint extends AdsDiscoveryBlock implements M
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockFingerprint");
 
@@ -81,6 +82,7 @@ public class AdsDiscoveryBlockFingerprint extends AdsDiscoveryBlock implements M
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockFingerprint _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Implicit Field (dataLen)
     lengthInBits += 16;
@@ -99,6 +101,7 @@ public class AdsDiscoveryBlockFingerprint extends AdsDiscoveryBlock implements M
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int dataLen = readImplicitField("dataLen", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockHostName.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockHostName.java
index 9c2c980441..9201477f0a 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockHostName.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockHostName.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockHostName extends AdsDiscoveryBlock implements Mess
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockHostName");
 
@@ -76,6 +77,7 @@ public class AdsDiscoveryBlockHostName extends AdsDiscoveryBlock implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockHostName _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (hostName)
     lengthInBits += hostName.getLengthInBits();
@@ -89,6 +91,7 @@ public class AdsDiscoveryBlockHostName extends AdsDiscoveryBlock implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     AmsString hostName =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockOsData.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockOsData.java
index 77a07aba38..48f6b4146a 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockOsData.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockOsData.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockOsData extends AdsDiscoveryBlock implements Messag
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockOsData");
 
@@ -81,6 +82,7 @@ public class AdsDiscoveryBlockOsData extends AdsDiscoveryBlock implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockOsData _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Implicit Field (osDataLen)
     lengthInBits += 16;
@@ -99,6 +101,7 @@ public class AdsDiscoveryBlockOsData extends AdsDiscoveryBlock implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int osDataLen = readImplicitField("osDataLen", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockPassword.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockPassword.java
index 13c7985b80..3ec4cad5c1 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockPassword.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockPassword.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockPassword extends AdsDiscoveryBlock implements Mess
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockPassword");
 
@@ -76,6 +77,7 @@ public class AdsDiscoveryBlockPassword extends AdsDiscoveryBlock implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockPassword _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (password)
     lengthInBits += password.getLengthInBits();
@@ -89,6 +91,7 @@ public class AdsDiscoveryBlockPassword extends AdsDiscoveryBlock implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     AmsString password =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockRouteName.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockRouteName.java
index 0c21c5e3cb..127118f5ba 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockRouteName.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockRouteName.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockRouteName extends AdsDiscoveryBlock implements Mes
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockRouteName");
 
@@ -76,6 +77,7 @@ public class AdsDiscoveryBlockRouteName extends AdsDiscoveryBlock implements Mes
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockRouteName _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (routeName)
     lengthInBits += routeName.getLengthInBits();
@@ -89,6 +91,7 @@ public class AdsDiscoveryBlockRouteName extends AdsDiscoveryBlock implements Mes
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     AmsString routeName =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockStatus.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockStatus.java
index 65d0bab01c..19f63b7a71 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockStatus.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockStatus.java
@@ -65,6 +65,7 @@ public class AdsDiscoveryBlockStatus extends AdsDiscoveryBlock implements Messag
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockStatus");
 
@@ -91,6 +92,7 @@ public class AdsDiscoveryBlockStatus extends AdsDiscoveryBlock implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockStatus _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Const Field (statusLength)
     lengthInBits += 16;
@@ -107,6 +109,7 @@ public class AdsDiscoveryBlockStatus extends AdsDiscoveryBlock implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int statusLength =
         readConstField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockUserName.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockUserName.java
index 4bda99ddcc..90d7732add 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockUserName.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockUserName.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockUserName extends AdsDiscoveryBlock implements Mess
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockUserName");
 
@@ -76,6 +77,7 @@ public class AdsDiscoveryBlockUserName extends AdsDiscoveryBlock implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockUserName _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (userName)
     lengthInBits += userName.getLengthInBits();
@@ -89,6 +91,7 @@ public class AdsDiscoveryBlockUserName extends AdsDiscoveryBlock implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     AmsString userName =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockVersion.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockVersion.java
index bdd94f5c81..c42d9d636d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockVersion.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryBlockVersion.java
@@ -58,6 +58,7 @@ public class AdsDiscoveryBlockVersion extends AdsDiscoveryBlock implements Messa
   protected void serializeAdsDiscoveryBlockChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryBlockVersion");
 
@@ -81,6 +82,7 @@ public class AdsDiscoveryBlockVersion extends AdsDiscoveryBlock implements Messa
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDiscoveryBlockVersion _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Implicit Field (versionDataLen)
     lengthInBits += 16;
@@ -99,6 +101,7 @@ public class AdsDiscoveryBlockVersion extends AdsDiscoveryBlock implements Messa
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int versionDataLen = readImplicitField("versionDataLen", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryConstants.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryConstants.java
index 731e7ec9d8..0e0bccc184 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryConstants.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AdsDiscoveryConstants.java
@@ -50,6 +50,7 @@ public class AdsDiscoveryConstants implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDiscoveryConstants");
 
@@ -71,6 +72,7 @@ public class AdsDiscoveryConstants implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsDiscoveryConstants _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Const Field (adsDiscoveryUdpDefaultPort)
     lengthInBits += 16;
@@ -89,6 +91,7 @@ public class AdsDiscoveryConstants implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int adsDiscoveryUdpDefaultPort =
         readConstField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsNetId.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsNetId.java
index 4409b5212a..b463e4387f 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsNetId.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsNetId.java
@@ -82,6 +82,7 @@ public class AmsNetId implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsNetId");
 
@@ -115,6 +116,7 @@ public class AmsNetId implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsNetId _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (octet1)
     lengthInBits += 8;
@@ -147,6 +149,7 @@ public class AmsNetId implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short octet1 = readSimpleField("octet1", readUnsignedShort(readBuffer, 8));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsString.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsString.java
index 76c91cbe2d..1d24491d5b 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsString.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/discovery/readwrite/AmsString.java
@@ -51,6 +51,7 @@ public class AmsString implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsString");
 
@@ -81,6 +82,7 @@ public class AmsString implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Implicit Field (strLen)
     lengthInBits += 16;
@@ -104,6 +106,7 @@ public class AmsString implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int strLen = readImplicitField("strLen", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationRequest.java
index ce4a992d4e..283dbc8ac2 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationRequest.java
@@ -104,6 +104,7 @@ public class AdsAddDeviceNotificationRequest extends AmsPacket implements Messag
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsAddDeviceNotificationRequest");
 
@@ -150,6 +151,7 @@ public class AdsAddDeviceNotificationRequest extends AmsPacket implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsAddDeviceNotificationRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (indexGroup)
     lengthInBits += 32;
@@ -184,6 +186,7 @@ public class AdsAddDeviceNotificationRequest extends AmsPacket implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long indexGroup = readSimpleField("indexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationResponse.java
index d0429544aa..ce272e4367 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsAddDeviceNotificationResponse.java
@@ -75,6 +75,7 @@ public class AdsAddDeviceNotificationResponse extends AmsPacket implements Messa
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsAddDeviceNotificationResponse");
 
@@ -101,6 +102,7 @@ public class AdsAddDeviceNotificationResponse extends AmsPacket implements Messa
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsAddDeviceNotificationResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -117,6 +119,7 @@ public class AdsAddDeviceNotificationResponse extends AmsPacket implements Messa
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsConstants.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsConstants.java
index cb2d236b4e..aea593960f 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsConstants.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsConstants.java
@@ -50,6 +50,7 @@ public class AdsConstants implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsConstants");
 
@@ -68,6 +69,7 @@ public class AdsConstants implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsConstants _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Const Field (adsTcpDefaultPort)
     lengthInBits += 16;
@@ -86,6 +88,7 @@ public class AdsConstants implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int adsTcpDefaultPort =
         readConstField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeArrayInfo.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeArrayInfo.java
index 9d8f6e4071..097061cd03 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeArrayInfo.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeArrayInfo.java
@@ -61,6 +61,7 @@ public class AdsDataTypeArrayInfo implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDataTypeArrayInfo");
 
@@ -94,6 +95,7 @@ public class AdsDataTypeArrayInfo implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsDataTypeArrayInfo _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (lowerBound)
     lengthInBits += 32;
@@ -117,6 +119,7 @@ public class AdsDataTypeArrayInfo implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long lowerBound =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableChildEntry.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableChildEntry.java
index e8c284ca82..2e34d7fa5d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableChildEntry.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableChildEntry.java
@@ -174,6 +174,7 @@ public class AdsDataTypeTableChildEntry implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDataTypeTableChildEntry");
 
@@ -343,6 +344,7 @@ public class AdsDataTypeTableChildEntry implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsDataTypeTableChildEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (entryLength)
     lengthInBits += 32;
@@ -405,7 +407,7 @@ public class AdsDataTypeTableChildEntry implements Message {
     if (arrayInfo != null) {
       int i = 0;
       for (AdsDataTypeArrayInfo element : arrayInfo) {
-        boolean last = ++i >= arrayInfo.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= arrayInfo.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -414,7 +416,7 @@ public class AdsDataTypeTableChildEntry implements Message {
     if (children != null) {
       int i = 0;
       for (AdsDataTypeTableEntry element : children) {
-        boolean last = ++i >= children.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= children.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -439,6 +441,7 @@ public class AdsDataTypeTableChildEntry implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long entryLength =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableEntry.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableEntry.java
index e905c258ce..88e50c835d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableEntry.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataTypeTableEntry.java
@@ -174,6 +174,7 @@ public class AdsDataTypeTableEntry implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDataTypeTableEntry");
 
@@ -343,6 +344,7 @@ public class AdsDataTypeTableEntry implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsDataTypeTableEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (entryLength)
     lengthInBits += 32;
@@ -405,7 +407,7 @@ public class AdsDataTypeTableEntry implements Message {
     if (arrayInfo != null) {
       int i = 0;
       for (AdsDataTypeArrayInfo element : arrayInfo) {
-        boolean last = ++i >= arrayInfo.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= arrayInfo.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -414,7 +416,7 @@ public class AdsDataTypeTableEntry implements Message {
     if (children != null) {
       int i = 0;
       for (AdsDataTypeTableChildEntry element : children) {
-        boolean last = ++i >= children.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= children.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -438,6 +440,7 @@ public class AdsDataTypeTableEntry implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long entryLength =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationRequest.java
index ced2a34049..c8eaf62b4d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationRequest.java
@@ -68,6 +68,7 @@ public class AdsDeleteDeviceNotificationRequest extends AmsPacket implements Mes
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDeleteDeviceNotificationRequest");
 
@@ -86,6 +87,7 @@ public class AdsDeleteDeviceNotificationRequest extends AmsPacket implements Mes
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDeleteDeviceNotificationRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (notificationHandle)
     lengthInBits += 32;
@@ -99,6 +101,7 @@ public class AdsDeleteDeviceNotificationRequest extends AmsPacket implements Mes
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long notificationHandle =
         readSimpleField("notificationHandle", readUnsignedLong(readBuffer, 32));
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationResponse.java
index d9a3b3c704..a1438028a1 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeleteDeviceNotificationResponse.java
@@ -68,6 +68,7 @@ public class AdsDeleteDeviceNotificationResponse extends AmsPacket implements Me
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDeleteDeviceNotificationResponse");
 
@@ -91,6 +92,7 @@ public class AdsDeleteDeviceNotificationResponse extends AmsPacket implements Me
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDeleteDeviceNotificationResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -104,6 +106,7 @@ public class AdsDeleteDeviceNotificationResponse extends AmsPacket implements Me
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationRequest.java
index 8e64342845..87d85e32e0 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationRequest.java
@@ -82,6 +82,7 @@ public class AdsDeviceNotificationRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDeviceNotificationRequest");
 
@@ -106,6 +107,7 @@ public class AdsDeviceNotificationRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDeviceNotificationRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (length)
     lengthInBits += 32;
@@ -117,7 +119,7 @@ public class AdsDeviceNotificationRequest extends AmsPacket implements Message {
     if (adsStampHeaders != null) {
       int i = 0;
       for (AdsStampHeader element : adsStampHeaders) {
-        boolean last = ++i >= adsStampHeaders.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= adsStampHeaders.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -131,6 +133,7 @@ public class AdsDeviceNotificationRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long length = readSimpleField("length", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationResponse.java
index 15485bca8e..fa9dd18ae6 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDeviceNotificationResponse.java
@@ -59,6 +59,7 @@ public class AdsDeviceNotificationResponse extends AmsPacket implements Message
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsDeviceNotificationResponse");
 
@@ -74,6 +75,7 @@ public class AdsDeviceNotificationResponse extends AmsPacket implements Message
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsDeviceNotificationResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -84,6 +86,7 @@ public class AdsDeviceNotificationResponse extends AmsPacket implements Message
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("AdsDeviceNotificationResponse");
     // Create the instance
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidRequest.java
index 1ce23cb9dc..d1a0656cc8 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidRequest.java
@@ -59,6 +59,7 @@ public class AdsInvalidRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsInvalidRequest");
 
@@ -74,6 +75,7 @@ public class AdsInvalidRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsInvalidRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -84,6 +86,7 @@ public class AdsInvalidRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("AdsInvalidRequest");
     // Create the instance
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidResponse.java
index a127176f84..0c01134611 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsInvalidResponse.java
@@ -59,6 +59,7 @@ public class AdsInvalidResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsInvalidResponse");
 
@@ -74,6 +75,7 @@ public class AdsInvalidResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsInvalidResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -84,6 +86,7 @@ public class AdsInvalidResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("AdsInvalidResponse");
     // Create the instance
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItem.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItem.java
index 52714e1fb3..67077f0e37 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItem.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItem.java
@@ -49,6 +49,7 @@ public abstract class AdsMultiRequestItem implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsMultiRequestItem");
 
@@ -67,6 +68,7 @@ public abstract class AdsMultiRequestItem implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsMultiRequestItem _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Length of sub-type elements will be added by sub-type...
 
@@ -99,6 +101,7 @@ public abstract class AdsMultiRequestItem implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
     AdsMultiRequestItemBuilder builder = null;
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemRead.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemRead.java
index b021cb0830..8c8107d879 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemRead.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemRead.java
@@ -70,6 +70,7 @@ public class AdsMultiRequestItemRead extends AdsMultiRequestItem implements Mess
   protected void serializeAdsMultiRequestItemChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsMultiRequestItemRead");
 
@@ -94,6 +95,7 @@ public class AdsMultiRequestItemRead extends AdsMultiRequestItem implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsMultiRequestItemRead _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (itemIndexGroup)
     lengthInBits += 32;
@@ -113,6 +115,7 @@ public class AdsMultiRequestItemRead extends AdsMultiRequestItem implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long itemIndexGroup = readSimpleField("itemIndexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemReadWrite.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemReadWrite.java
index 992de98625..c00fd9ade4 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemReadWrite.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemReadWrite.java
@@ -77,6 +77,7 @@ public class AdsMultiRequestItemReadWrite extends AdsMultiRequestItem implements
   protected void serializeAdsMultiRequestItemChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsMultiRequestItemReadWrite");
 
@@ -104,6 +105,7 @@ public class AdsMultiRequestItemReadWrite extends AdsMultiRequestItem implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsMultiRequestItemReadWrite _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (itemIndexGroup)
     lengthInBits += 32;
@@ -126,6 +128,7 @@ public class AdsMultiRequestItemReadWrite extends AdsMultiRequestItem implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long itemIndexGroup = readSimpleField("itemIndexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemWrite.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemWrite.java
index 36fac24adc..6c24417991 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemWrite.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsMultiRequestItemWrite.java
@@ -70,6 +70,7 @@ public class AdsMultiRequestItemWrite extends AdsMultiRequestItem implements Mes
   protected void serializeAdsMultiRequestItemChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsMultiRequestItemWrite");
 
@@ -94,6 +95,7 @@ public class AdsMultiRequestItemWrite extends AdsMultiRequestItem implements Mes
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsMultiRequestItemWrite _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (itemIndexGroup)
     lengthInBits += 32;
@@ -113,6 +115,7 @@ public class AdsMultiRequestItemWrite extends AdsMultiRequestItem implements Mes
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long itemIndexGroup = readSimpleField("itemIndexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsNotificationSample.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsNotificationSample.java
index bffe1106da..bf1cd66e26 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsNotificationSample.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsNotificationSample.java
@@ -63,6 +63,7 @@ public class AdsNotificationSample implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsNotificationSample");
 
@@ -87,6 +88,7 @@ public class AdsNotificationSample implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsNotificationSample _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (notificationHandle)
     lengthInBits += 32;
@@ -113,6 +115,7 @@ public class AdsNotificationSample implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long notificationHandle =
         readSimpleField("notificationHandle", readUnsignedLong(readBuffer, 32));
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoRequest.java
index 73f1472634..5107a90fc3 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoRequest.java
@@ -59,6 +59,7 @@ public class AdsReadDeviceInfoRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadDeviceInfoRequest");
 
@@ -74,6 +75,7 @@ public class AdsReadDeviceInfoRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadDeviceInfoRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -84,6 +86,7 @@ public class AdsReadDeviceInfoRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("AdsReadDeviceInfoRequest");
     // Create the instance
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoResponse.java
index 87200ffeeb..9a056602d9 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadDeviceInfoResponse.java
@@ -96,6 +96,7 @@ public class AdsReadDeviceInfoResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadDeviceInfoResponse");
 
@@ -131,6 +132,7 @@ public class AdsReadDeviceInfoResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadDeviceInfoResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -158,6 +160,7 @@ public class AdsReadDeviceInfoResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadRequest.java
index da4fa9263f..e8aab10075 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadRequest.java
@@ -82,6 +82,7 @@ public class AdsReadRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadRequest");
 
@@ -106,6 +107,7 @@ public class AdsReadRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (indexGroup)
     lengthInBits += 32;
@@ -125,6 +127,7 @@ public class AdsReadRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long indexGroup = readSimpleField("indexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadResponse.java
index d8724af1f9..7c5578ebe9 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadResponse.java
@@ -75,6 +75,7 @@ public class AdsReadResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadResponse");
 
@@ -106,6 +107,7 @@ public class AdsReadResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -127,6 +129,7 @@ public class AdsReadResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateRequest.java
index ae430275c8..17d031c6e8 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateRequest.java
@@ -59,6 +59,7 @@ public class AdsReadStateRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadStateRequest");
 
@@ -74,6 +75,7 @@ public class AdsReadStateRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadStateRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -84,6 +86,7 @@ public class AdsReadStateRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("AdsReadStateRequest");
     // Create the instance
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateResponse.java
index 1b2beec369..41e3292095 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadStateResponse.java
@@ -82,6 +82,7 @@ public class AdsReadStateResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadStateResponse");
 
@@ -111,6 +112,7 @@ public class AdsReadStateResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadStateResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -130,6 +132,7 @@ public class AdsReadStateResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteRequest.java
index dc0b3f7409..a341ae2ccf 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteRequest.java
@@ -96,6 +96,7 @@ public class AdsReadWriteRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadWriteRequest");
 
@@ -134,6 +135,7 @@ public class AdsReadWriteRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadWriteRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (indexGroup)
     lengthInBits += 32;
@@ -151,7 +153,7 @@ public class AdsReadWriteRequest extends AmsPacket implements Message {
     if (items != null) {
       int i = 0;
       for (AdsMultiRequestItem element : items) {
-        boolean last = ++i >= items.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= items.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -170,6 +172,7 @@ public class AdsReadWriteRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long indexGroup = readSimpleField("indexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteResponse.java
index 874621bba8..72e12d2d2f 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsReadWriteResponse.java
@@ -75,6 +75,7 @@ public class AdsReadWriteResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsReadWriteResponse");
 
@@ -106,6 +107,7 @@ public class AdsReadWriteResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsReadWriteResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -127,6 +129,7 @@ public class AdsReadWriteResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsStampHeader.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsStampHeader.java
index 8a25bed578..e025cd5af7 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsStampHeader.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsStampHeader.java
@@ -65,6 +65,7 @@ public class AdsStampHeader implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsStampHeader");
 
@@ -89,6 +90,7 @@ public class AdsStampHeader implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsStampHeader _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (timestamp)
     lengthInBits += 64;
@@ -100,7 +102,7 @@ public class AdsStampHeader implements Message {
     if (adsNotificationSamples != null) {
       int i = 0;
       for (AdsNotificationSample element : adsNotificationSamples) {
-        boolean last = ++i >= adsNotificationSamples.size();
+        ThreadLocalHelper.lastItemThreadLocal.set(++i >= adsNotificationSamples.size());
         lengthInBits += element.getLengthInBits();
       }
     }
@@ -119,6 +121,7 @@ public class AdsStampHeader implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BigInteger timestamp = readSimpleField("timestamp", readUnsignedBigInteger(readBuffer, 64));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsSymbolTableEntry.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsSymbolTableEntry.java
index 325a3b1542..936732fc1d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsSymbolTableEntry.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsSymbolTableEntry.java
@@ -216,6 +216,7 @@ public class AdsSymbolTableEntry implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsSymbolTableEntry");
 
@@ -447,6 +448,7 @@ public class AdsSymbolTableEntry implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsSymbolTableEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (entryLength)
     lengthInBits += 32;
@@ -554,6 +556,7 @@ public class AdsSymbolTableEntry implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long entryLength =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsTableSizes.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsTableSizes.java
index 654beec4c6..9ab29fe003 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsTableSizes.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsTableSizes.java
@@ -87,6 +87,7 @@ public class AdsTableSizes implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsTableSizes");
 
@@ -144,6 +145,7 @@ public class AdsTableSizes implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AdsTableSizes _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (symbolCount)
     lengthInBits += 32;
@@ -177,6 +179,7 @@ public class AdsTableSizes implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long symbolCount =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlRequest.java
index 7d4deb08fc..96f848d7a4 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlRequest.java
@@ -82,6 +82,7 @@ public class AdsWriteControlRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsWriteControlRequest");
 
@@ -111,6 +112,7 @@ public class AdsWriteControlRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsWriteControlRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (adsState)
     lengthInBits += 16;
@@ -135,6 +137,7 @@ public class AdsWriteControlRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int adsState = readSimpleField("adsState", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlResponse.java
index 833b667954..5d47566f82 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteControlResponse.java
@@ -68,6 +68,7 @@ public class AdsWriteControlResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsWriteControlResponse");
 
@@ -91,6 +92,7 @@ public class AdsWriteControlResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsWriteControlResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -104,6 +106,7 @@ public class AdsWriteControlResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteRequest.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteRequest.java
index 0be5166091..57a15d8c42 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteRequest.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteRequest.java
@@ -82,6 +82,7 @@ public class AdsWriteRequest extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsWriteRequest");
 
@@ -111,6 +112,7 @@ public class AdsWriteRequest extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsWriteRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (indexGroup)
     lengthInBits += 32;
@@ -135,6 +137,7 @@ public class AdsWriteRequest extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     long indexGroup = readSimpleField("indexGroup", readUnsignedLong(readBuffer, 32));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteResponse.java
index 97288814bd..2c77754a4d 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsWriteResponse.java
@@ -68,6 +68,7 @@ public class AdsWriteResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AdsWriteResponse");
 
@@ -91,6 +92,7 @@ public class AdsWriteResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     AdsWriteResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (result)
     lengthInBits += 32;
@@ -104,6 +106,7 @@ public class AdsWriteResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ReturnCode result =
         readEnumField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsNetId.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsNetId.java
index 3f35fe55ae..fa7f985763 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsNetId.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsNetId.java
@@ -82,6 +82,7 @@ public class AmsNetId implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsNetId");
 
@@ -115,6 +116,7 @@ public class AmsNetId implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsNetId _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (octet1)
     lengthInBits += 8;
@@ -147,6 +149,7 @@ public class AmsNetId implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short octet1 = readSimpleField("octet1", readUnsignedShort(readBuffer, 8));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java
index 2f3578ead5..f7a0924856 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsPacket.java
@@ -137,6 +137,7 @@ public abstract class AmsPacket implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsPacket");
 
@@ -216,6 +217,7 @@ public abstract class AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsPacket _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (targetAmsNetId)
     lengthInBits += targetAmsNetId.getLengthInBits();
@@ -286,6 +288,7 @@ public abstract class AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     AmsNetId targetAmsNetId =
         readSimpleField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialAcknowledgeFrame.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialAcknowledgeFrame.java
index 0e13d9c199..5d79671f69 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialAcknowledgeFrame.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialAcknowledgeFrame.java
@@ -87,6 +87,7 @@ public class AmsSerialAcknowledgeFrame implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsSerialAcknowledgeFrame");
 
@@ -120,6 +121,7 @@ public class AmsSerialAcknowledgeFrame implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsSerialAcknowledgeFrame _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (magicCookie)
     lengthInBits += 16;
@@ -153,6 +155,7 @@ public class AmsSerialAcknowledgeFrame implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int magicCookie = readSimpleField("magicCookie", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialFrame.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialFrame.java
index 06db538520..8ef9c8ff11 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialFrame.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialFrame.java
@@ -94,6 +94,7 @@ public class AmsSerialFrame implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsSerialFrame");
 
@@ -130,6 +131,7 @@ public class AmsSerialFrame implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsSerialFrame _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (magicCookie)
     lengthInBits += 16;
@@ -166,6 +168,7 @@ public class AmsSerialFrame implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int magicCookie = readSimpleField("magicCookie", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialResetFrame.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialResetFrame.java
index b647436562..25c8c46e20 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialResetFrame.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsSerialResetFrame.java
@@ -87,6 +87,7 @@ public class AmsSerialResetFrame implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsSerialResetFrame");
 
@@ -120,6 +121,7 @@ public class AmsSerialResetFrame implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsSerialResetFrame _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (magicCookie)
     lengthInBits += 16;
@@ -153,6 +155,7 @@ public class AmsSerialResetFrame implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int magicCookie = readSimpleField("magicCookie", readUnsignedInt(readBuffer, 16));
 
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsTCPPacket.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsTCPPacket.java
index ae65ab5235..526bc6d196 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsTCPPacket.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AmsTCPPacket.java
@@ -51,6 +51,7 @@ public class AmsTCPPacket implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("AmsTCPPacket");
 
@@ -89,6 +90,7 @@ public class AmsTCPPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     AmsTCPPacket _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 16;
@@ -113,6 +115,7 @@ public class AmsTCPPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Integer reservedField0 =
         readReservedField(
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/ErrorResponse.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/ErrorResponse.java
index ef7e25738f..e47ef4d38a 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/ErrorResponse.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/ErrorResponse.java
@@ -59,6 +59,7 @@ public class ErrorResponse extends AmsPacket implements Message {
   @Override
   protected void serializeAmsPacketChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("ErrorResponse");
 
@@ -74,6 +75,7 @@ public class ErrorResponse extends AmsPacket implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     ErrorResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -84,6 +86,7 @@ public class ErrorResponse extends AmsPacket implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("ErrorResponse");
     // Create the instance
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDU.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDU.java
index a4369eb68c..616a732d70 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDU.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDU.java
@@ -52,6 +52,7 @@ public abstract class APDU implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDU");
 
@@ -78,6 +79,7 @@ public abstract class APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     APDU _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Discriminator Field (apduType)
     lengthInBits += 4;
@@ -111,6 +113,7 @@ public abstract class APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     ApduType apduType =
         readDiscriminatorField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUAbort.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUAbort.java
index 773c85a20b..3040568025 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUAbort.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUAbort.java
@@ -79,6 +79,7 @@ public class APDUAbort extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUAbort");
 
@@ -109,6 +110,7 @@ public class APDUAbort extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUAbort _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 3;
@@ -131,6 +133,7 @@ public class APDUAbort extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Byte reservedField0 =
         readReservedField("reserved", readUnsignedByte(readBuffer, 3), (byte) 0x00);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUComplexAck.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUComplexAck.java
index 57083a3330..91cf727674 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUComplexAck.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUComplexAck.java
@@ -125,6 +125,7 @@ public class APDUComplexAck extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUComplexAck");
 
@@ -198,6 +199,7 @@ public class APDUComplexAck extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUComplexAck _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (segmentedMessage)
     lengthInBits += 1;
@@ -249,6 +251,7 @@ public class APDUComplexAck extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     boolean segmentedMessage = readSimpleField("segmentedMessage", readBoolean(readBuffer));
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUConfirmedRequest.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUConfirmedRequest.java
index c446e5c070..6dca082028 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUConfirmedRequest.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUConfirmedRequest.java
@@ -146,6 +146,7 @@ public class APDUConfirmedRequest extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUConfirmedRequest");
 
@@ -243,6 +244,7 @@ public class APDUConfirmedRequest extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUConfirmedRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (segmentedMessage)
     lengthInBits += 1;
@@ -303,6 +305,7 @@ public class APDUConfirmedRequest extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     boolean segmentedMessage = readSimpleField("segmentedMessage", readBoolean(readBuffer));
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUError.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUError.java
index dd164ef889..71b17b0de0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUError.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUError.java
@@ -79,6 +79,7 @@ public class APDUError extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUError");
 
@@ -116,6 +117,7 @@ public class APDUError extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUError _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 4;
@@ -138,6 +140,7 @@ public class APDUError extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Byte reservedField0 =
         readReservedField("reserved", readUnsignedByte(readBuffer, 4), (byte) 0x00);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUReject.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUReject.java
index 8a4f744ea0..8c6db428ae 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUReject.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUReject.java
@@ -70,6 +70,7 @@ public class APDUReject extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUReject");
 
@@ -97,6 +98,7 @@ public class APDUReject extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUReject _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 4;
@@ -116,6 +118,7 @@ public class APDUReject extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Byte reservedField0 =
         readReservedField("reserved", readUnsignedByte(readBuffer, 4), (byte) 0x00);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSegmentAck.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSegmentAck.java
index 0ea92058df..7d9be925dd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSegmentAck.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSegmentAck.java
@@ -93,6 +93,7 @@ public class APDUSegmentAck extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUSegmentAck");
 
@@ -129,6 +130,7 @@ public class APDUSegmentAck extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUSegmentAck _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 2;
@@ -157,6 +159,7 @@ public class APDUSegmentAck extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Byte reservedField0 =
         readReservedField("reserved", readUnsignedByte(readBuffer, 2), (byte) 0x00);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSimpleAck.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSimpleAck.java
index 47109f3f70..ef321f4a01 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSimpleAck.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUSimpleAck.java
@@ -70,6 +70,7 @@ public class APDUSimpleAck extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUSimpleAck");
 
@@ -104,6 +105,7 @@ public class APDUSimpleAck extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUSimpleAck _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 4;
@@ -123,6 +125,7 @@ public class APDUSimpleAck extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Byte reservedField0 = readReservedField("reserved", readUnsignedByte(readBuffer, 4), (byte) 0);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnconfirmedRequest.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnconfirmedRequest.java
index d7be54f08d..4661ba0e90 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnconfirmedRequest.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnconfirmedRequest.java
@@ -64,6 +64,7 @@ public class APDUUnconfirmedRequest extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUUnconfirmedRequest");
 
@@ -88,6 +89,7 @@ public class APDUUnconfirmedRequest extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUUnconfirmedRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Reserved Field (reserved)
     lengthInBits += 4;
@@ -104,6 +106,7 @@ public class APDUUnconfirmedRequest extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     Byte reservedField0 = readReservedField("reserved", readUnsignedByte(readBuffer, 4), (byte) 0);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnknown.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnknown.java
index f73ddf10aa..53e98a9216 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnknown.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/APDUUnknown.java
@@ -67,6 +67,7 @@ public class APDUUnknown extends APDU implements Message {
   @Override
   protected void serializeAPDUChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("APDUUnknown");
 
@@ -88,6 +89,7 @@ public class APDUUnknown extends APDU implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     APDUUnknown _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (unknownTypeRest)
     lengthInBits += 4;
@@ -106,6 +108,7 @@ public class APDUUnknown extends APDU implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     byte unknownTypeRest = readSimpleField("unknownTypeRest", readUnsignedByte(readBuffer, 4));
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAbortReasonTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAbortReasonTagged.java
index e228f788f0..59096e3ce4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAbortReasonTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAbortReasonTagged.java
@@ -66,6 +66,7 @@ public class BACnetAbortReasonTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAbortReasonTagged");
 
@@ -101,6 +102,7 @@ public class BACnetAbortReasonTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAbortReasonTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Manual Field (value)
     lengthInBits += ((_value.getIsProprietary()) ? 0 : ((actualLength) * (8)));
@@ -139,6 +141,7 @@ public class BACnetAbortReasonTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAbortReason value =
         readManualField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessAuthenticationFactorDisableTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessAuthenticationFactorDisableTagged.java
index bec74cb0a2..3ae9988b7d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessAuthenticationFactorDisableTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessAuthenticationFactorDisableTagged.java
@@ -79,6 +79,7 @@ public class BACnetAccessAuthenticationFactorDisableTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessAuthenticationFactorDisableTagged");
 
@@ -117,6 +118,7 @@ public class BACnetAccessAuthenticationFactorDisableTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessAuthenticationFactorDisableTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -168,6 +170,7 @@ public class BACnetAccessAuthenticationFactorDisableTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableReasonTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableReasonTagged.java
index fe0c8fbd31..1777225555 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableReasonTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableReasonTagged.java
@@ -79,6 +79,7 @@ public class BACnetAccessCredentialDisableReasonTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessCredentialDisableReasonTagged");
 
@@ -117,6 +118,7 @@ public class BACnetAccessCredentialDisableReasonTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessCredentialDisableReasonTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -168,6 +170,7 @@ public class BACnetAccessCredentialDisableReasonTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableTagged.java
index a0de3dd9e3..793fd66bf1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessCredentialDisableTagged.java
@@ -78,6 +78,7 @@ public class BACnetAccessCredentialDisableTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessCredentialDisableTagged");
 
@@ -116,6 +117,7 @@ public class BACnetAccessCredentialDisableTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessCredentialDisableTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetAccessCredentialDisableTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessEventTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessEventTagged.java
index 770e3c797a..919c9f01b1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessEventTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessEventTagged.java
@@ -78,6 +78,7 @@ public class BACnetAccessEventTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessEventTagged");
 
@@ -116,6 +117,7 @@ public class BACnetAccessEventTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessEventTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetAccessEventTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessPassbackModeTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessPassbackModeTagged.java
index 87a005c5e3..f569d35ef9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessPassbackModeTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessPassbackModeTagged.java
@@ -64,6 +64,7 @@ public class BACnetAccessPassbackModeTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessPassbackModeTagged");
 
@@ -90,6 +91,7 @@ public class BACnetAccessPassbackModeTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessPassbackModeTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -136,6 +138,7 @@ public class BACnetAccessPassbackModeTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRule.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRule.java
index 7bab329e3b..78d17ebc3b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRule.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRule.java
@@ -80,6 +80,7 @@ public class BACnetAccessRule implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessRule");
 
@@ -120,6 +121,7 @@ public class BACnetAccessRule implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessRule _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (timeRangeSpecifier)
     lengthInBits += timeRangeSpecifier.getLengthInBits();
@@ -154,6 +156,7 @@ public class BACnetAccessRule implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAccessRuleTimeRangeSpecifierTagged timeRangeSpecifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleLocationSpecifierTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleLocationSpecifierTagged.java
index 956ff5cc4b..6d92b332fe 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleLocationSpecifierTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleLocationSpecifierTagged.java
@@ -67,6 +67,7 @@ public class BACnetAccessRuleLocationSpecifierTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessRuleLocationSpecifierTagged");
 
@@ -93,6 +94,7 @@ public class BACnetAccessRuleLocationSpecifierTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessRuleLocationSpecifierTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -139,6 +141,7 @@ public class BACnetAccessRuleLocationSpecifierTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleTimeRangeSpecifierTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleTimeRangeSpecifierTagged.java
index 84faefcbd3..b43c2de2e7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleTimeRangeSpecifierTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessRuleTimeRangeSpecifierTagged.java
@@ -67,6 +67,7 @@ public class BACnetAccessRuleTimeRangeSpecifierTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessRuleTimeRangeSpecifierTagged");
 
@@ -93,6 +94,7 @@ public class BACnetAccessRuleTimeRangeSpecifierTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessRuleTimeRangeSpecifierTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -139,6 +141,7 @@ public class BACnetAccessRuleTimeRangeSpecifierTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessThreatLevel.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessThreatLevel.java
index cce22ea3a1..e04c09e4fa 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessThreatLevel.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessThreatLevel.java
@@ -51,6 +51,7 @@ public class BACnetAccessThreatLevel implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessThreatLevel");
 
@@ -69,6 +70,7 @@ public class BACnetAccessThreatLevel implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessThreatLevel _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (threatLevel)
     lengthInBits += threatLevel.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetAccessThreatLevel implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger threatLevel =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessUserTypeTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessUserTypeTagged.java
index 7d1f0f95ef..c35f4f568b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessUserTypeTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessUserTypeTagged.java
@@ -78,6 +78,7 @@ public class BACnetAccessUserTypeTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessUserTypeTagged");
 
@@ -116,6 +117,7 @@ public class BACnetAccessUserTypeTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessUserTypeTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetAccessUserTypeTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessZoneOccupancyStateTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessZoneOccupancyStateTagged.java
index 067cfc947f..afef910f78 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessZoneOccupancyStateTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccessZoneOccupancyStateTagged.java
@@ -78,6 +78,7 @@ public class BACnetAccessZoneOccupancyStateTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccessZoneOccupancyStateTagged");
 
@@ -116,6 +117,7 @@ public class BACnetAccessZoneOccupancyStateTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccessZoneOccupancyStateTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetAccessZoneOccupancyStateTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecord.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecord.java
index 81c1ce0bdc..661a9611f7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecord.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecord.java
@@ -73,6 +73,7 @@ public class BACnetAccumulatorRecord implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccumulatorRecord");
 
@@ -102,6 +103,7 @@ public class BACnetAccumulatorRecord implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccumulatorRecord _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (timestamp)
     lengthInBits += timestamp.getLengthInBits();
@@ -129,6 +131,7 @@ public class BACnetAccumulatorRecord implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDateTimeEnclosed timestamp =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecordAccumulatorStatusTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecordAccumulatorStatusTagged.java
index 17ac1f7a56..0e27c0ffc9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecordAccumulatorStatusTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAccumulatorRecordAccumulatorStatusTagged.java
@@ -67,6 +67,7 @@ public class BACnetAccumulatorRecordAccumulatorStatusTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAccumulatorRecordAccumulatorStatusTagged");
 
@@ -93,6 +94,7 @@ public class BACnetAccumulatorRecordAccumulatorStatusTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAccumulatorRecordAccumulatorStatusTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -139,6 +141,7 @@ public class BACnetAccumulatorRecordAccumulatorStatusTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionCommand.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionCommand.java
index f8fd3a743b..98eba65d0b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionCommand.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionCommand.java
@@ -108,6 +108,7 @@ public class BACnetActionCommand implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetActionCommand");
 
@@ -154,6 +155,7 @@ public class BACnetActionCommand implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetActionCommand _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Optional Field (deviceIdentifier)
     if (deviceIdentifier != null) {
@@ -206,6 +208,7 @@ public class BACnetActionCommand implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier deviceIdentifier =
         readOptionalField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionList.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionList.java
index 77cb8691d1..5cc0f8e275 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionList.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionList.java
@@ -66,6 +66,7 @@ public class BACnetActionList implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetActionList");
 
@@ -92,6 +93,7 @@ public class BACnetActionList implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetActionList _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (innerOpeningTag)
     lengthInBits += innerOpeningTag.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetActionList implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag innerOpeningTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionTagged.java
index 543cffa718..d8286c1dfa 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetActionTagged.java
@@ -64,6 +64,7 @@ public class BACnetActionTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetActionTagged");
 
@@ -90,6 +91,7 @@ public class BACnetActionTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetActionTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -136,6 +138,7 @@ public class BACnetActionTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddress.java
index 49e1f538fd..2688faf1d0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddress.java
@@ -74,6 +74,7 @@ public class BACnetAddress implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAddress");
 
@@ -107,6 +108,7 @@ public class BACnetAddress implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAddress _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (networkNumber)
     lengthInBits += networkNumber.getLengthInBits();
@@ -134,6 +136,7 @@ public class BACnetAddress implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger networkNumber =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressBinding.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressBinding.java
index c6e3cfa554..67af8236f4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressBinding.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressBinding.java
@@ -58,6 +58,7 @@ public class BACnetAddressBinding implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAddressBinding");
 
@@ -80,6 +81,7 @@ public class BACnetAddressBinding implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAddressBinding _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (deviceIdentifier)
     lengthInBits += deviceIdentifier.getLengthInBits();
@@ -101,6 +103,7 @@ public class BACnetAddressBinding implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagObjectIdentifier deviceIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressEnclosed.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressEnclosed.java
index 4ecfa18e9e..3ed6e7718a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressEnclosed.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAddressEnclosed.java
@@ -71,6 +71,7 @@ public class BACnetAddressEnclosed implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAddressEnclosed");
 
@@ -95,6 +96,7 @@ public class BACnetAddressEnclosed implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAddressEnclosed _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -134,6 +136,7 @@ public class BACnetAddressEnclosed implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTag.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTag.java
index 24af8bf8f4..522b64221d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTag.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTag.java
@@ -64,6 +64,7 @@ public abstract class BACnetApplicationTag implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTag");
 
@@ -93,6 +94,7 @@ public abstract class BACnetApplicationTag implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetApplicationTag _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -117,6 +119,7 @@ public abstract class BACnetApplicationTag implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBitString.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBitString.java
index cda5a9f0df..aa968c2c00 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBitString.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBitString.java
@@ -55,6 +55,7 @@ public class BACnetApplicationTagBitString extends BACnetApplicationTag implemen
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagBitString");
 
@@ -73,6 +74,7 @@ public class BACnetApplicationTagBitString extends BACnetApplicationTag implemen
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagBitString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -86,6 +88,7 @@ public class BACnetApplicationTagBitString extends BACnetApplicationTag implemen
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadBitString payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBoolean.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBoolean.java
index 6e8cbe1289..2904a1d95b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBoolean.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagBoolean.java
@@ -59,6 +59,7 @@ public class BACnetApplicationTagBoolean extends BACnetApplicationTag implements
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagBoolean");
 
@@ -81,6 +82,7 @@ public class BACnetApplicationTagBoolean extends BACnetApplicationTag implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagBoolean _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -96,6 +98,7 @@ public class BACnetApplicationTagBoolean extends BACnetApplicationTag implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadBoolean payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagCharacterString.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagCharacterString.java
index 0d1d6fd9dd..ee79b645c2 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagCharacterString.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagCharacterString.java
@@ -60,6 +60,7 @@ public class BACnetApplicationTagCharacterString extends BACnetApplicationTag im
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagCharacterString");
 
@@ -82,6 +83,7 @@ public class BACnetApplicationTagCharacterString extends BACnetApplicationTag im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagCharacterString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -97,6 +99,7 @@ public class BACnetApplicationTagCharacterString extends BACnetApplicationTag im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadCharacterString payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDate.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDate.java
index 79a9df5c0a..71fa0aab47 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDate.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDate.java
@@ -55,6 +55,7 @@ public class BACnetApplicationTagDate extends BACnetApplicationTag implements Me
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagDate");
 
@@ -73,6 +74,7 @@ public class BACnetApplicationTagDate extends BACnetApplicationTag implements Me
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagDate _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -86,6 +88,7 @@ public class BACnetApplicationTagDate extends BACnetApplicationTag implements Me
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadDate payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDouble.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDouble.java
index 8ad49d773b..a5ffd6f790 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDouble.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagDouble.java
@@ -59,6 +59,7 @@ public class BACnetApplicationTagDouble extends BACnetApplicationTag implements
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagDouble");
 
@@ -81,6 +82,7 @@ public class BACnetApplicationTagDouble extends BACnetApplicationTag implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagDouble _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -96,6 +98,7 @@ public class BACnetApplicationTagDouble extends BACnetApplicationTag implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadDouble payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagEnumerated.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagEnumerated.java
index 3db2426e89..bb63122351 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagEnumerated.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagEnumerated.java
@@ -60,6 +60,7 @@ public class BACnetApplicationTagEnumerated extends BACnetApplicationTag impleme
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagEnumerated");
 
@@ -82,6 +83,7 @@ public class BACnetApplicationTagEnumerated extends BACnetApplicationTag impleme
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagEnumerated _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -97,6 +99,7 @@ public class BACnetApplicationTagEnumerated extends BACnetApplicationTag impleme
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadEnumerated payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagNull.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagNull.java
index 6826306848..81ea4f16b3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagNull.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagNull.java
@@ -47,6 +47,7 @@ public class BACnetApplicationTagNull extends BACnetApplicationTag implements Me
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagNull");
 
@@ -62,6 +63,7 @@ public class BACnetApplicationTagNull extends BACnetApplicationTag implements Me
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagNull _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -72,6 +74,7 @@ public class BACnetApplicationTagNull extends BACnetApplicationTag implements Me
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("BACnetApplicationTagNull");
     // Create the instance
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagObjectIdentifier.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagObjectIdentifier.java
index 52c64c65d8..0200019d7b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagObjectIdentifier.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagObjectIdentifier.java
@@ -64,6 +64,7 @@ public class BACnetApplicationTagObjectIdentifier extends BACnetApplicationTag i
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagObjectIdentifier");
 
@@ -90,6 +91,7 @@ public class BACnetApplicationTagObjectIdentifier extends BACnetApplicationTag i
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagObjectIdentifier _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -107,6 +109,7 @@ public class BACnetApplicationTagObjectIdentifier extends BACnetApplicationTag i
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadObjectIdentifier payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagOctetString.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagOctetString.java
index 763e845d30..7aa3d933f3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagOctetString.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagOctetString.java
@@ -56,6 +56,7 @@ public class BACnetApplicationTagOctetString extends BACnetApplicationTag implem
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagOctetString");
 
@@ -74,6 +75,7 @@ public class BACnetApplicationTagOctetString extends BACnetApplicationTag implem
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagOctetString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetApplicationTagOctetString extends BACnetApplicationTag implem
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadOctetString payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagReal.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagReal.java
index fd9a69798b..abe1c2a441 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagReal.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagReal.java
@@ -59,6 +59,7 @@ public class BACnetApplicationTagReal extends BACnetApplicationTag implements Me
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagReal");
 
@@ -81,6 +82,7 @@ public class BACnetApplicationTagReal extends BACnetApplicationTag implements Me
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagReal _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -96,6 +98,7 @@ public class BACnetApplicationTagReal extends BACnetApplicationTag implements Me
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadReal payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagSignedInteger.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagSignedInteger.java
index 0e87f62b5c..0473413532 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagSignedInteger.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagSignedInteger.java
@@ -63,6 +63,7 @@ public class BACnetApplicationTagSignedInteger extends BACnetApplicationTag impl
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagSignedInteger");
 
@@ -85,6 +86,7 @@ public class BACnetApplicationTagSignedInteger extends BACnetApplicationTag impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagSignedInteger _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -100,6 +102,7 @@ public class BACnetApplicationTagSignedInteger extends BACnetApplicationTag impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadSignedInteger payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagTime.java
index 5f9b74193f..c470df38d1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagTime.java
@@ -55,6 +55,7 @@ public class BACnetApplicationTagTime extends BACnetApplicationTag implements Me
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagTime");
 
@@ -73,6 +74,7 @@ public class BACnetApplicationTagTime extends BACnetApplicationTag implements Me
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -86,6 +88,7 @@ public class BACnetApplicationTagTime extends BACnetApplicationTag implements Me
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadTime payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagUnsignedInteger.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagUnsignedInteger.java
index c39b32c648..27404bd1b9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagUnsignedInteger.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetApplicationTagUnsignedInteger.java
@@ -63,6 +63,7 @@ public class BACnetApplicationTagUnsignedInteger extends BACnetApplicationTag im
   protected void serializeBACnetApplicationTagChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetApplicationTagUnsignedInteger");
 
@@ -85,6 +86,7 @@ public class BACnetApplicationTagUnsignedInteger extends BACnetApplicationTag im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetApplicationTagUnsignedInteger _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (payload)
     lengthInBits += payload.getLengthInBits();
@@ -100,6 +102,7 @@ public class BACnetApplicationTagUnsignedInteger extends BACnetApplicationTag im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagPayloadUnsignedInteger payload =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedAccessRights.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedAccessRights.java
index 7a2a29ab72..fb8e0b05db 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedAccessRights.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedAccessRights.java
@@ -58,6 +58,7 @@ public class BACnetAssignedAccessRights implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAssignedAccessRights");
 
@@ -80,6 +81,7 @@ public class BACnetAssignedAccessRights implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAssignedAccessRights _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (assignedAccessRights)
     lengthInBits += assignedAccessRights.getLengthInBits();
@@ -102,6 +104,7 @@ public class BACnetAssignedAccessRights implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDeviceObjectReferenceEnclosed assignedAccessRights =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCalls.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCalls.java
index 2c10ff55dd..d940e2ca63 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCalls.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCalls.java
@@ -51,6 +51,7 @@ public class BACnetAssignedLandingCalls implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAssignedLandingCalls");
 
@@ -69,6 +70,7 @@ public class BACnetAssignedLandingCalls implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAssignedLandingCalls _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (landingCalls)
     lengthInBits += landingCalls.getLengthInBits();
@@ -88,6 +90,7 @@ public class BACnetAssignedLandingCalls implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAssignedLandingCallsLandingCallsList landingCalls =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsList.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsList.java
index ccd8dae15f..4b9dcc914d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsList.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsList.java
@@ -71,6 +71,7 @@ public class BACnetAssignedLandingCallsLandingCallsList implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAssignedLandingCallsLandingCallsList");
 
@@ -95,6 +96,7 @@ public class BACnetAssignedLandingCallsLandingCallsList implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAssignedLandingCallsLandingCallsList _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -138,6 +140,7 @@ public class BACnetAssignedLandingCallsLandingCallsList implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsListEntry.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsListEntry.java
index d99afbef7a..aeaf40f5c7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsListEntry.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAssignedLandingCallsLandingCallsListEntry.java
@@ -58,6 +58,7 @@ public class BACnetAssignedLandingCallsLandingCallsListEntry implements Message
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAssignedLandingCallsLandingCallsListEntry");
 
@@ -79,6 +80,7 @@ public class BACnetAssignedLandingCallsLandingCallsListEntry implements Message
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAssignedLandingCallsLandingCallsListEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (floorNumber)
     lengthInBits += floorNumber.getLengthInBits();
@@ -101,6 +103,7 @@ public class BACnetAssignedLandingCallsLandingCallsListEntry implements Message
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger floorNumber =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactor.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactor.java
index 1874f96a5e..f6be6ce609 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactor.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactor.java
@@ -66,6 +66,7 @@ public class BACnetAuthenticationFactor implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationFactor");
 
@@ -90,6 +91,7 @@ public class BACnetAuthenticationFactor implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationFactor _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (formatType)
     lengthInBits += formatType.getLengthInBits();
@@ -115,6 +117,7 @@ public class BACnetAuthenticationFactor implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAuthenticationFactorTypeTagged formatType =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorEnclosed.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorEnclosed.java
index 054b4a5a77..eeeece8d1a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorEnclosed.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorEnclosed.java
@@ -71,6 +71,7 @@ public class BACnetAuthenticationFactorEnclosed implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationFactorEnclosed");
 
@@ -96,6 +97,7 @@ public class BACnetAuthenticationFactorEnclosed implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationFactorEnclosed _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -135,6 +137,7 @@ public class BACnetAuthenticationFactorEnclosed implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorFormat.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorFormat.java
index 1e0e79dc4c..aedf93c587 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorFormat.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorFormat.java
@@ -66,6 +66,7 @@ public class BACnetAuthenticationFactorFormat implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationFactorFormat");
 
@@ -90,6 +91,7 @@ public class BACnetAuthenticationFactorFormat implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationFactorFormat _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (formatType)
     lengthInBits += formatType.getLengthInBits();
@@ -119,6 +121,7 @@ public class BACnetAuthenticationFactorFormat implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAuthenticationFactorTypeTagged formatType =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorTypeTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorTypeTagged.java
index ad3da6cd24..313c717185 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorTypeTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationFactorTypeTagged.java
@@ -67,6 +67,7 @@ public class BACnetAuthenticationFactorTypeTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationFactorTypeTagged");
 
@@ -93,6 +94,7 @@ public class BACnetAuthenticationFactorTypeTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationFactorTypeTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -139,6 +141,7 @@ public class BACnetAuthenticationFactorTypeTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicy.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicy.java
index 24e9ae8eab..32f4af964e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicy.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicy.java
@@ -66,6 +66,7 @@ public class BACnetAuthenticationPolicy implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationPolicy");
 
@@ -90,6 +91,7 @@ public class BACnetAuthenticationPolicy implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationPolicy _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (policy)
     lengthInBits += policy.getLengthInBits();
@@ -115,6 +117,7 @@ public class BACnetAuthenticationPolicy implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAuthenticationPolicyList policy =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyList.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyList.java
index a42261e9e8..2ed802b666 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyList.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyList.java
@@ -71,6 +71,7 @@ public class BACnetAuthenticationPolicyList implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationPolicyList");
 
@@ -95,6 +96,7 @@ public class BACnetAuthenticationPolicyList implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationPolicyList _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -138,6 +140,7 @@ public class BACnetAuthenticationPolicyList implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyListEntry.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyListEntry.java
index 5b8639c5e2..7e8cd97d0c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyListEntry.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationPolicyListEntry.java
@@ -59,6 +59,7 @@ public class BACnetAuthenticationPolicyListEntry implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationPolicyListEntry");
 
@@ -81,6 +82,7 @@ public class BACnetAuthenticationPolicyListEntry implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationPolicyListEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (credentialDataInput)
     lengthInBits += credentialDataInput.getLengthInBits();
@@ -103,6 +105,7 @@ public class BACnetAuthenticationPolicyListEntry implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDeviceObjectReferenceEnclosed credentialDataInput =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationStatusTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationStatusTagged.java
index 085a1f79fc..6666f90f0e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationStatusTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthenticationStatusTagged.java
@@ -67,6 +67,7 @@ public class BACnetAuthenticationStatusTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthenticationStatusTagged");
 
@@ -93,6 +94,7 @@ public class BACnetAuthenticationStatusTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthenticationStatusTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -139,6 +141,7 @@ public class BACnetAuthenticationStatusTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationExemptionTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationExemptionTagged.java
index cd593dcabe..eb66d6fc37 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationExemptionTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationExemptionTagged.java
@@ -78,6 +78,7 @@ public class BACnetAuthorizationExemptionTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthorizationExemptionTagged");
 
@@ -116,6 +117,7 @@ public class BACnetAuthorizationExemptionTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthorizationExemptionTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetAuthorizationExemptionTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationModeTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationModeTagged.java
index 408ad73390..37336eb385 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationModeTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetAuthorizationModeTagged.java
@@ -78,6 +78,7 @@ public class BACnetAuthorizationModeTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetAuthorizationModeTagged");
 
@@ -116,6 +117,7 @@ public class BACnetAuthorizationModeTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetAuthorizationModeTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetAuthorizationModeTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBDTEntry.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBDTEntry.java
index b488f79559..c60798661a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBDTEntry.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBDTEntry.java
@@ -58,6 +58,7 @@ public class BACnetBDTEntry implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetBDTEntry");
 
@@ -79,6 +80,7 @@ public class BACnetBDTEntry implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetBDTEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (bbmdAddress)
     lengthInBits += bbmdAddress.getLengthInBits();
@@ -102,6 +104,7 @@ public class BACnetBDTEntry implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetHostNPortEnclosed bbmdAddress =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBackupStateTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBackupStateTagged.java
index fc8b6cbdd2..12010e69ca 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBackupStateTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBackupStateTagged.java
@@ -64,6 +64,7 @@ public class BACnetBackupStateTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetBackupStateTagged");
 
@@ -90,6 +91,7 @@ public class BACnetBackupStateTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetBackupStateTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -136,6 +138,7 @@ public class BACnetBackupStateTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryLightingPVTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryLightingPVTagged.java
index fbf8df5519..bbc450492d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryLightingPVTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryLightingPVTagged.java
@@ -78,6 +78,7 @@ public class BACnetBinaryLightingPVTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetBinaryLightingPVTagged");
 
@@ -116,6 +117,7 @@ public class BACnetBinaryLightingPVTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetBinaryLightingPVTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -167,6 +169,7 @@ public class BACnetBinaryLightingPVTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryPVTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryPVTagged.java
index 2ad57233d4..73779e687b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryPVTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetBinaryPVTagged.java
@@ -64,6 +64,7 @@ public class BACnetBinaryPVTagged implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetBinaryPVTagged");
 
@@ -90,6 +91,7 @@ public class BACnetBinaryPVTagged implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetBinaryPVTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -136,6 +138,7 @@ public class BACnetBinaryPVTagged implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscription.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscription.java
index ea59a78f65..39455bfc2e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscription.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscription.java
@@ -83,6 +83,7 @@ public class BACnetCOVMultipleSubscription implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCOVMultipleSubscription");
 
@@ -120,6 +121,7 @@ public class BACnetCOVMultipleSubscription implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetCOVMultipleSubscription _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (recipient)
     lengthInBits += recipient.getLengthInBits();
@@ -151,6 +153,7 @@ public class BACnetCOVMultipleSubscription implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetRecipientProcessEnclosed recipient =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.java
index 7e8d3730fe..0139ac0e7e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.java
@@ -74,6 +74,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification imp
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification");
 
@@ -101,6 +102,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification imp
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -144,6 +146,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification imp
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry.java
index dff33764c7..4ebbfda2ec 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry.java
@@ -64,6 +64,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry");
 
@@ -89,6 +90,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (monitoredObjectIdentifier)
     lengthInBits += monitoredObjectIdentifier.getLengthInBits();
@@ -111,6 +113,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.java
index 1cc378b969..9c048cb20b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences.java
@@ -78,6 +78,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences");
@@ -105,6 +106,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
     int lengthInBits = 0;
     BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences _value =
         this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -151,6 +153,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry.java
index c4f378d860..3fb1287019 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry.java
@@ -69,6 +69,7 @@ class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOf
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry");
@@ -97,6 +98,7 @@ class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOf
     int lengthInBits = 0;
     BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry
         _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (monitoredProperty)
     lengthInBits += monitoredProperty.getLengthInBits();
@@ -127,6 +129,7 @@ class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOf
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetPropertyReferenceEnclosed monitoredProperty =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVSubscription.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVSubscription.java
index 312029540f..349f9ad9a6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVSubscription.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCOVSubscription.java
@@ -80,6 +80,7 @@ public class BACnetCOVSubscription implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCOVSubscription");
 
@@ -116,6 +117,7 @@ public class BACnetCOVSubscription implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetCOVSubscription _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (recipient)
     lengthInBits += recipient.getLengthInBits();
@@ -148,6 +150,7 @@ public class BACnetCOVSubscription implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetRecipientProcessEnclosed recipient =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntry.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntry.java
index 99e06bbd76..7acd30b39a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntry.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntry.java
@@ -60,6 +60,7 @@ public abstract class BACnetCalendarEntry implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCalendarEntry");
 
@@ -82,6 +83,7 @@ public abstract class BACnetCalendarEntry implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetCalendarEntry _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -101,6 +103,7 @@ public abstract class BACnetCalendarEntry implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDate.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDate.java
index 25b3794865..62514ea851 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDate.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDate.java
@@ -55,6 +55,7 @@ public class BACnetCalendarEntryDate extends BACnetCalendarEntry implements Mess
   protected void serializeBACnetCalendarEntryChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCalendarEntryDate");
 
@@ -73,6 +74,7 @@ public class BACnetCalendarEntryDate extends BACnetCalendarEntry implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetCalendarEntryDate _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (dateValue)
     lengthInBits += dateValue.getLengthInBits();
@@ -86,6 +88,7 @@ public class BACnetCalendarEntryDate extends BACnetCalendarEntry implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagDate dateValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDateRange.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDateRange.java
index a80368abb1..6f93014f72 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDateRange.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryDateRange.java
@@ -56,6 +56,7 @@ public class BACnetCalendarEntryDateRange extends BACnetCalendarEntry implements
   protected void serializeBACnetCalendarEntryChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCalendarEntryDateRange");
 
@@ -74,6 +75,7 @@ public class BACnetCalendarEntryDateRange extends BACnetCalendarEntry implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetCalendarEntryDateRange _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (dateRange)
     lengthInBits += dateRange.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetCalendarEntryDateRange extends BACnetCalendarEntry implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDateRangeEnclosed dateRange =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryEnclosed.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryEnclosed.java
index 3064644a06..5f006dd2c9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryEnclosed.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryEnclosed.java
@@ -71,6 +71,7 @@ public class BACnetCalendarEntryEnclosed implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCalendarEntryEnclosed");
 
@@ -95,6 +96,7 @@ public class BACnetCalendarEntryEnclosed implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetCalendarEntryEnclosed _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -134,6 +136,7 @@ public class BACnetCalendarEntryEnclosed implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryWeekNDay.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryWeekNDay.java
index b5722c4de7..e76ecec53a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryWeekNDay.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetCalendarEntryWeekNDay.java
@@ -56,6 +56,7 @@ public class BACnetCalendarEntryWeekNDay extends BACnetCalendarEntry implements
   protected void serializeBACnetCalendarEntryChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetCalendarEntryWeekNDay");
 
@@ -74,6 +75,7 @@ public class BACnetCalendarEntryWeekNDay extends BACnetCalendarEntry implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetCalendarEntryWeekNDay _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (weekNDay)
     lengthInBits += weekNDay.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetCalendarEntryWeekNDay extends BACnetCalendarEntry implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetWeekNDayTagged weekNDay =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValue.java
index 4c5dc90945..6cad5bbec9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValue.java
@@ -64,6 +64,7 @@ public abstract class BACnetChannelValue implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValue");
 
@@ -90,6 +91,7 @@ public abstract class BACnetChannelValue implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetChannelValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -111,6 +113,7 @@ public abstract class BACnetChannelValue implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBitString.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBitString.java
index bf1ddc2ef6..4aab0b966a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBitString.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBitString.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueBitString extends BACnetChannelValue implements M
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueBitString");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueBitString extends BACnetChannelValue implements M
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueBitString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (bitStringValue)
     lengthInBits += bitStringValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueBitString extends BACnetChannelValue implements M
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagBitString bitStringValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBoolean.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBoolean.java
index cca4b56bd7..b7efeffdc9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBoolean.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueBoolean.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueBoolean extends BACnetChannelValue implements Mes
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueBoolean");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueBoolean extends BACnetChannelValue implements Mes
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueBoolean _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (booleanValue)
     lengthInBits += booleanValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueBoolean extends BACnetChannelValue implements Mes
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagBoolean booleanValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueCharacterString.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueCharacterString.java
index 3c1b7c4234..d030e7d266 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueCharacterString.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueCharacterString.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueCharacterString extends BACnetChannelValue implem
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueCharacterString");
 
@@ -75,6 +76,7 @@ public class BACnetChannelValueCharacterString extends BACnetChannelValue implem
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueCharacterString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (characterStringValue)
     lengthInBits += characterStringValue.getLengthInBits();
@@ -88,6 +90,7 @@ public class BACnetChannelValueCharacterString extends BACnetChannelValue implem
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagCharacterString characterStringValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDate.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDate.java
index 1988e25827..fb3a4aef40 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDate.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDate.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueDate extends BACnetChannelValue implements Messag
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueDate");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueDate extends BACnetChannelValue implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueDate _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (dateValue)
     lengthInBits += dateValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueDate extends BACnetChannelValue implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagDate dateValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDouble.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDouble.java
index 216b4ecacf..68e0aea0b8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDouble.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueDouble.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueDouble extends BACnetChannelValue implements Mess
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueDouble");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueDouble extends BACnetChannelValue implements Mess
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueDouble _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (doubleValue)
     lengthInBits += doubleValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueDouble extends BACnetChannelValue implements Mess
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagDouble doubleValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueEnumerated.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueEnumerated.java
index 4d6a67ed91..e77c386d9c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueEnumerated.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueEnumerated.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueEnumerated extends BACnetChannelValue implements
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueEnumerated");
 
@@ -75,6 +76,7 @@ public class BACnetChannelValueEnumerated extends BACnetChannelValue implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueEnumerated _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (enumeratedValue)
     lengthInBits += enumeratedValue.getLengthInBits();
@@ -88,6 +90,7 @@ public class BACnetChannelValueEnumerated extends BACnetChannelValue implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagEnumerated enumeratedValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueInteger.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueInteger.java
index 546c3ca4a5..79ae94192c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueInteger.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueInteger.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueInteger extends BACnetChannelValue implements Mes
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueInteger");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueInteger extends BACnetChannelValue implements Mes
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueInteger _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (integerValue)
     lengthInBits += integerValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueInteger extends BACnetChannelValue implements Mes
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagSignedInteger integerValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueLightingCommand.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueLightingCommand.java
index 12b9e764fb..457649c44c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueLightingCommand.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueLightingCommand.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueLightingCommand extends BACnetChannelValue implem
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueLightingCommand");
 
@@ -75,6 +76,7 @@ public class BACnetChannelValueLightingCommand extends BACnetChannelValue implem
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueLightingCommand _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (ligthingCommandValue)
     lengthInBits += ligthingCommandValue.getLengthInBits();
@@ -88,6 +90,7 @@ public class BACnetChannelValueLightingCommand extends BACnetChannelValue implem
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetLightingCommandEnclosed ligthingCommandValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueNull.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueNull.java
index 2d9a54cedf..500c5b55a0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueNull.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueNull.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueNull extends BACnetChannelValue implements Messag
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueNull");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueNull extends BACnetChannelValue implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueNull _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (nullValue)
     lengthInBits += nullValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueNull extends BACnetChannelValue implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagNull nullValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueObjectidentifier.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueObjectidentifier.java
index 3599070e62..56581b6be3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueObjectidentifier.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueObjectidentifier.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueObjectidentifier extends BACnetChannelValue imple
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueObjectidentifier");
 
@@ -77,6 +78,7 @@ public class BACnetChannelValueObjectidentifier extends BACnetChannelValue imple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueObjectidentifier _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectidentifierValue)
     lengthInBits += objectidentifierValue.getLengthInBits();
@@ -90,6 +92,7 @@ public class BACnetChannelValueObjectidentifier extends BACnetChannelValue imple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagObjectIdentifier objectidentifierValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueOctetString.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueOctetString.java
index df5758f47b..24b8653b20 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueOctetString.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueOctetString.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueOctetString extends BACnetChannelValue implements
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueOctetString");
 
@@ -75,6 +76,7 @@ public class BACnetChannelValueOctetString extends BACnetChannelValue implements
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueOctetString _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (octetStringValue)
     lengthInBits += octetStringValue.getLengthInBits();
@@ -88,6 +90,7 @@ public class BACnetChannelValueOctetString extends BACnetChannelValue implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagOctetString octetStringValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueReal.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueReal.java
index 8b0a32ac98..d5f6602c14 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueReal.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueReal.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueReal extends BACnetChannelValue implements Messag
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueReal");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueReal extends BACnetChannelValue implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueReal _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (realValue)
     lengthInBits += realValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueReal extends BACnetChannelValue implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagReal realValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueTime.java
index aa24cee810..475b5849a7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueTime.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueTime extends BACnetChannelValue implements Messag
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueTime");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueTime extends BACnetChannelValue implements Messag
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (timeValue)
     lengthInBits += timeValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueTime extends BACnetChannelValue implements Messag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagTime timeValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueUnsigned.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueUnsigned.java
index a2d0d8af3f..6f9be7a737 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueUnsigned.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetChannelValueUnsigned.java
@@ -56,6 +56,7 @@ public class BACnetChannelValueUnsigned extends BACnetChannelValue implements Me
   protected void serializeBACnetChannelValueChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetChannelValueUnsigned");
 
@@ -74,6 +75,7 @@ public class BACnetChannelValueUnsigned extends BACnetChannelValue implements Me
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetChannelValueUnsigned _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (unsignedValue)
     lengthInBits += unsignedValue.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetChannelValueUnsigned extends BACnetChannelValue implements Me
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger unsignedValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOV.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOV.java
index e33a6cac49..2e1902c2f4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOV.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOV.java
@@ -60,6 +60,7 @@ public abstract class BACnetClientCOV implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetClientCOV");
 
@@ -82,6 +83,7 @@ public abstract class BACnetClientCOV implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetClientCOV _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -101,6 +103,7 @@ public abstract class BACnetClientCOV implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVNone.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVNone.java
index 848c576e87..9e180ca4d7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVNone.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVNone.java
@@ -56,6 +56,7 @@ public class BACnetClientCOVNone extends BACnetClientCOV implements Message {
   protected void serializeBACnetClientCOVChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetClientCOVNone");
 
@@ -75,6 +76,7 @@ public class BACnetClientCOVNone extends BACnetClientCOV implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetClientCOVNone _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (defaultIncrement)
     lengthInBits += defaultIncrement.getLengthInBits();
@@ -88,6 +90,7 @@ public class BACnetClientCOVNone extends BACnetClientCOV implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagNull defaultIncrement =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVObject.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVObject.java
index d66e5eac26..d9298eef60 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVObject.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClientCOVObject.java
@@ -56,6 +56,7 @@ public class BACnetClientCOVObject extends BACnetClientCOV implements Message {
   protected void serializeBACnetClientCOVChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetClientCOVObject");
 
@@ -74,6 +75,7 @@ public class BACnetClientCOVObject extends BACnetClientCOV implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetClientCOVObject _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (realIncrement)
     lengthInBits += realIncrement.getLengthInBits();
@@ -87,6 +89,7 @@ public class BACnetClientCOVObject extends BACnetClientCOV implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagReal realIncrement =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClosingTag.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClosingTag.java
index aabedb124a..0f983e7a3f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClosingTag.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetClosingTag.java
@@ -55,6 +55,7 @@ public class BACnetClosingTag implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetClosingTag");
 
@@ -73,6 +74,7 @@ public class BACnetClosingTag implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetClosingTag _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -106,6 +108,7 @@ public class BACnetClosingTag implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequest.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequest.java
index 2288cac36f..7d98f07777 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequest.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequest.java
@@ -57,6 +57,7 @@ public abstract class BACnetConfirmedServiceRequest implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequest");
 
@@ -89,6 +90,7 @@ public abstract class BACnetConfirmedServiceRequest implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Discriminator Field (serviceChoice)
     lengthInBits += 8;
@@ -126,6 +128,7 @@ public abstract class BACnetConfirmedServiceRequest implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetConfirmedServiceChoice serviceChoice =
         readDiscriminatorField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAcknowledgeAlarm.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAcknowledgeAlarm.java
index 5d2635c85c..10789b82ae 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAcknowledgeAlarm.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAcknowledgeAlarm.java
@@ -100,6 +100,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAcknowledgeAlarm");
 
@@ -144,6 +145,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAcknowledgeAlarm _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (acknowledgingProcessIdentifier)
     lengthInBits += acknowledgingProcessIdentifier.getLengthInBits();
@@ -173,6 +175,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger acknowledgingProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAddListElement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAddListElement.java
index d485f7a9e1..cf8b392cd6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAddListElement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAddListElement.java
@@ -86,6 +86,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAddListElement");
 
@@ -116,6 +117,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAddListElement _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectIdentifier)
     lengthInBits += objectIdentifier.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFile.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFile.java
index 2cf92c44eb..0eed784a8f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFile.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFile.java
@@ -72,6 +72,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFile extends BACnetConfirmed
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAtomicReadFile");
 
@@ -93,6 +94,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFile extends BACnetConfirmed
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAtomicReadFile _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (fileIdentifier)
     lengthInBits += fileIdentifier.getLengthInBits();
@@ -110,6 +112,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFile extends BACnetConfirmed
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagObjectIdentifier fileIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileRecord.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileRecord.java
index c335eb7469..29dc18fdd9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileRecord.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileRecord.java
@@ -67,6 +67,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileRecord
   protected void serializeBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordChild(
       WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAtomicReadFileRecord");
 
@@ -90,6 +91,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileRecord
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAtomicReadFileRecord _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (fileStartRecord)
     lengthInBits += fileStartRecord.getLengthInBits();
@@ -107,6 +109,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileRecord
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagSignedInteger fileStartRecord =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStream.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStream.java
index 7ba1b1af93..99b9e6ba57 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStream.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStream.java
@@ -67,6 +67,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileStream
   protected void serializeBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordChild(
       WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAtomicReadFileStream");
 
@@ -90,6 +91,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileStream
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAtomicReadFileStream _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (fileStartPosition)
     lengthInBits += fileStartPosition.getLengthInBits();
@@ -107,6 +109,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileStream
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagSignedInteger fileStartPosition =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.java
index 1b8f706bfb..38e0a4a9e0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.java
@@ -73,6 +73,7 @@ public abstract class BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord");
 
@@ -101,6 +102,7 @@ public abstract class BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -127,6 +129,7 @@ public abstract class BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicWriteFile.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicWriteFile.java
index 05c4fe9ce4..e119816ebe 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicWriteFile.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAtomicWriteFile.java
@@ -93,6 +93,7 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAtomicWriteFile");
 
@@ -125,6 +126,7 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAtomicWriteFile _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (deviceIdentifier)
     lengthInBits += deviceIdentifier.getLengthInBits();
@@ -155,6 +157,7 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagObjectIdentifier deviceIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAuthenticate.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAuthenticate.java
index 92caa3572b..828b3ea5c7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAuthenticate.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestAuthenticate.java
@@ -66,6 +66,7 @@ public class BACnetConfirmedServiceRequestAuthenticate extends BACnetConfirmedSe
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestAuthenticate");
 
@@ -85,6 +86,7 @@ public class BACnetConfirmedServiceRequestAuthenticate extends BACnetConfirmedSe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestAuthenticate _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (bytesOfRemovedService != null) {
@@ -102,6 +104,7 @@ public class BACnetConfirmedServiceRequestAuthenticate extends BACnetConfirmedSe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     byte[] bytesOfRemovedService =
         readBuffer.readByteArray(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotification.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotification.java
index cdfb10138c..89a1a60cea 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotification.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotification.java
@@ -93,6 +93,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedCOVNotification");
 
@@ -133,6 +134,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedCOVNotification _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (subscriberProcessIdentifier)
     lengthInBits += subscriberProcessIdentifier.getLengthInBits();
@@ -159,6 +161,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.java
index 031461307f..253666a2ef 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.java
@@ -93,6 +93,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple");
 
@@ -132,6 +133,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (subscriberProcessIdentifier)
     lengthInBits += subscriberProcessIdentifier.getLengthInBits();
@@ -160,6 +162,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedEventNotification.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedEventNotification.java
index 0a4dce271e..1fb9e9ad55 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedEventNotification.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedEventNotification.java
@@ -149,6 +149,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedEventNotification");
 
@@ -211,6 +212,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedEventNotification _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (processIdentifier)
     lengthInBits += processIdentifier.getLengthInBits();
@@ -269,6 +271,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger processIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.java
index 4ae22aeffc..00e34862fd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.java
@@ -79,6 +79,7 @@ public class BACnetConfirmedServiceRequestConfirmedPrivateTransfer
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedPrivateTransfer");
 
@@ -104,6 +105,7 @@ public class BACnetConfirmedServiceRequestConfirmedPrivateTransfer
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedPrivateTransfer _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (vendorId)
     lengthInBits += vendorId.getLengthInBits();
@@ -126,6 +128,7 @@ public class BACnetConfirmedServiceRequestConfirmedPrivateTransfer
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetVendorIdTagged vendorId =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessage.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessage.java
index 2f33a46b91..a46df1a8a6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessage.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessage.java
@@ -88,6 +88,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedTextMessage");
 
@@ -119,6 +120,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedTextMessage _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (textMessageSourceDevice)
     lengthInBits += textMessageSourceDevice.getLengthInBits();
@@ -144,6 +146,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier textMessageSourceDevice =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.java
index 151d2ae3eb..a4ad0750af 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.java
@@ -82,6 +82,7 @@ public abstract class BACnetConfirmedServiceRequestConfirmedTextMessageMessageCl
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass");
 
@@ -110,6 +111,7 @@ public abstract class BACnetConfirmedServiceRequestConfirmedTextMessageMessageCl
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -150,6 +152,7 @@ public abstract class BACnetConfirmedServiceRequestConfirmedTextMessageMessageCl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.java
index fbfaad6d32..ba6ae6909f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.java
@@ -65,6 +65,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharac
   protected void serializeBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild(
       WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter");
@@ -85,6 +86,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharac
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (characterValue)
     lengthInBits += characterValue.getLengthInBits();
@@ -100,6 +102,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharac
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagCharacterString characterValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.java
index 6722a5b517..70e91dbd4d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.java
@@ -65,6 +65,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeri
   protected void serializeBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild(
       WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric");
 
@@ -83,6 +84,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeri
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (numericValue)
     lengthInBits += numericValue.getLengthInBits();
@@ -97,6 +99,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeri
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger numericValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.java
index ebee9c2d26..3a109dcfb0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTag
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged");
@@ -96,6 +97,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTag
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTag
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObject.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObject.java
index 3d08a39d05..4fade76058 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObject.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObject.java
@@ -72,6 +72,7 @@ public class BACnetConfirmedServiceRequestCreateObject extends BACnetConfirmedSe
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestCreateObject");
 
@@ -94,6 +95,7 @@ public class BACnetConfirmedServiceRequestCreateObject extends BACnetConfirmedSe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestCreateObject _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectSpecifier)
     lengthInBits += objectSpecifier.getLengthInBits();
@@ -113,6 +115,7 @@ public class BACnetConfirmedServiceRequestCreateObject extends BACnetConfirmedSe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetConfirmedServiceRequestCreateObjectObjectSpecifier objectSpecifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObjectObjectSpecifier.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObjectObjectSpecifier.java
index 6aba818581..bcf2851de6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObjectObjectSpecifier.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestCreateObjectObjectSpecifier.java
@@ -92,6 +92,7 @@ public class BACnetConfirmedServiceRequestCreateObjectObjectSpecifier implements
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestCreateObjectObjectSpecifier");
 
@@ -132,6 +133,7 @@ public class BACnetConfirmedServiceRequestCreateObjectObjectSpecifier implements
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestCreateObjectObjectSpecifier _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -184,6 +186,7 @@ public class BACnetConfirmedServiceRequestCreateObjectObjectSpecifier implements
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeleteObject.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeleteObject.java
index 3dd0bfd8e6..e6efaba2c6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeleteObject.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeleteObject.java
@@ -64,6 +64,7 @@ public class BACnetConfirmedServiceRequestDeleteObject extends BACnetConfirmedSe
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestDeleteObject");
 
@@ -83,6 +84,7 @@ public class BACnetConfirmedServiceRequestDeleteObject extends BACnetConfirmedSe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestDeleteObject _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectIdentifier)
     lengthInBits += objectIdentifier.getLengthInBits();
@@ -97,6 +99,7 @@ public class BACnetConfirmedServiceRequestDeleteObject extends BACnetConfirmedSe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagObjectIdentifier objectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControl.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControl.java
index 9f0f816319..99d5952c46 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControl.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControl.java
@@ -81,6 +81,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControl
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestDeviceCommunicationControl");
 
@@ -105,6 +106,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestDeviceCommunicationControl _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Optional Field (timeDuration)
     if (timeDuration != null) {
@@ -129,6 +131,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger timeDuration =
         readOptionalField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.java
index 6badfeab60..00fb4b8f90 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisabl
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged");
@@ -96,6 +97,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisabl
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisabl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummary.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummary.java
index 74fb09bf61..54bd509421 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummary.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummary.java
@@ -105,6 +105,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestGetEnrollmentSummary");
 
@@ -146,6 +147,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestGetEnrollmentSummary _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (acknowledgmentFilter)
     lengthInBits += acknowledgmentFilter.getLengthInBits();
@@ -185,6 +187,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged
         acknowledgmentFilter =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged.java
index 1f72d5160e..0b21661d0e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFil
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged");
@@ -96,6 +97,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFil
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFil
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged.java
index fe8e327350..7cd8a39e7f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTa
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged");
@@ -96,6 +97,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTa
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTa
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter.java
index 503008262b..b12adafd22 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter.java
@@ -78,6 +78,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter imp
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter");
 
@@ -105,6 +106,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter imp
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -147,6 +149,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter imp
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEventInformation.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEventInformation.java
index 5a4d93ea1b..efea1191df 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEventInformation.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestGetEventInformation.java
@@ -64,6 +64,7 @@ public class BACnetConfirmedServiceRequestGetEventInformation extends BACnetConf
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestGetEventInformation");
 
@@ -85,6 +86,7 @@ public class BACnetConfirmedServiceRequestGetEventInformation extends BACnetConf
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestGetEventInformation _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Optional Field (lastReceivedObjectIdentifier)
     if (lastReceivedObjectIdentifier != null) {
@@ -101,6 +103,7 @@ public class BACnetConfirmedServiceRequestGetEventInformation extends BACnetConf
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier lastReceivedObjectIdentifier =
         readOptionalField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestLifeSafetyOperation.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestLifeSafetyOperation.java
index 89d5b9f732..45a08756e5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestLifeSafetyOperation.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestLifeSafetyOperation.java
@@ -86,6 +86,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestLifeSafetyOperation");
 
@@ -118,6 +119,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestLifeSafetyOperation _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (requestingProcessIdentifier)
     lengthInBits += requestingProcessIdentifier.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger requestingProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadProperty.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadProperty.java
index 4f25cb7a36..8378d0053b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadProperty.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadProperty.java
@@ -79,6 +79,7 @@ public class BACnetConfirmedServiceRequestReadProperty extends BACnetConfirmedSe
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadProperty");
 
@@ -105,6 +106,7 @@ public class BACnetConfirmedServiceRequestReadProperty extends BACnetConfirmedSe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadProperty _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectIdentifier)
     lengthInBits += objectIdentifier.getLengthInBits();
@@ -127,6 +129,7 @@ public class BACnetConfirmedServiceRequestReadProperty extends BACnetConfirmedSe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyConditional.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyConditional.java
index 9e59a2ebc3..e94b55e562 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyConditional.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyConditional.java
@@ -66,6 +66,7 @@ public class BACnetConfirmedServiceRequestReadPropertyConditional
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadPropertyConditional");
 
@@ -85,6 +86,7 @@ public class BACnetConfirmedServiceRequestReadPropertyConditional
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadPropertyConditional _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (bytesOfRemovedService != null) {
@@ -102,6 +104,7 @@ public class BACnetConfirmedServiceRequestReadPropertyConditional
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     byte[] bytesOfRemovedService =
         readBuffer.readByteArray(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyMultiple.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyMultiple.java
index 79442bf50f..86881d61d0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyMultiple.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadPropertyMultiple.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestReadPropertyMultiple extends BACnetCon
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadPropertyMultiple");
 
@@ -86,6 +87,7 @@ public class BACnetConfirmedServiceRequestReadPropertyMultiple extends BACnetCon
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadPropertyMultiple _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (data != null) {
@@ -105,6 +107,7 @@ public class BACnetConfirmedServiceRequestReadPropertyMultiple extends BACnetCon
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetReadAccessSpecification> data =
         readLengthArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRange.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRange.java
index fa5cf4b499..759697e7bf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRange.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRange.java
@@ -86,6 +86,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadRange");
 
@@ -116,6 +117,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadRange _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectIdentifier)
     lengthInBits += objectIdentifier.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRange.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRange.java
index 36444cd792..eb49020bc1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRange.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRange.java
@@ -73,6 +73,7 @@ public abstract class BACnetConfirmedServiceRequestReadRangeRange implements Mes
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadRangeRange");
 
@@ -101,6 +102,7 @@ public abstract class BACnetConfirmedServiceRequestReadRangeRange implements Mes
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestReadRangeRange _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -127,6 +129,7 @@ public abstract class BACnetConfirmedServiceRequestReadRangeRange implements Mes
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByPosition.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByPosition.java
index cefb48e3c4..034be48df4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByPosition.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByPosition.java
@@ -67,6 +67,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByPosition
   protected void serializeBACnetConfirmedServiceRequestReadRangeRangeChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadRangeRangeByPosition");
 
@@ -88,6 +89,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByPosition
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadRangeRangeByPosition _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (referenceIndex)
     lengthInBits += referenceIndex.getLengthInBits();
@@ -105,6 +107,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByPosition
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger referenceIndex =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber.java
index 160149193b..e623037513 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber.java
@@ -67,6 +67,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber
   protected void serializeBACnetConfirmedServiceRequestReadRangeRangeChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber");
 
@@ -91,6 +92,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (referenceSequenceNumber)
     lengthInBits += referenceSequenceNumber.getLengthInBits();
@@ -108,6 +110,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger referenceSequenceNumber =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByTime.java
index ec0a27fe6c..7a9440ae95 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReadRangeRangeByTime.java
@@ -67,6 +67,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByTime
   protected void serializeBACnetConfirmedServiceRequestReadRangeRangeChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReadRangeRangeByTime");
 
@@ -88,6 +89,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByTime
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReadRangeRangeByTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (referenceTime)
     lengthInBits += referenceTime.getLengthInBits();
@@ -105,6 +107,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByTime
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDateTime referenceTime =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDevice.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDevice.java
index 00858fbee5..5bd1662e75 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDevice.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDevice.java
@@ -75,6 +75,7 @@ public class BACnetConfirmedServiceRequestReinitializeDevice extends BACnetConfi
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestReinitializeDevice");
 
@@ -99,6 +100,7 @@ public class BACnetConfirmedServiceRequestReinitializeDevice extends BACnetConfi
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestReinitializeDevice _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (reinitializedStateOfDevice)
     lengthInBits += reinitializedStateOfDevice.getLengthInBits();
@@ -118,6 +120,7 @@ public class BACnetConfirmedServiceRequestReinitializeDevice extends BACnetConfi
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged
         reinitializedStateOfDevice =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged.java
index 86379fbbea..d13edbf95f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOf
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged");
@@ -96,6 +97,7 @@ public class BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOf
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (header)
     lengthInBits += header.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOf
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTagHeader header =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRemoveListElement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRemoveListElement.java
index e2c27775ac..487e90cab6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRemoveListElement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRemoveListElement.java
@@ -86,6 +86,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestRemoveListElement");
 
@@ -116,6 +117,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestRemoveListElement _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectIdentifier)
     lengthInBits += objectIdentifier.getLengthInBits();
@@ -143,6 +145,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRequestKey.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRequestKey.java
index 0a8eeaa2ff..0dc4a74955 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRequestKey.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestRequestKey.java
@@ -66,6 +66,7 @@ public class BACnetConfirmedServiceRequestRequestKey extends BACnetConfirmedServ
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestRequestKey");
 
@@ -85,6 +86,7 @@ public class BACnetConfirmedServiceRequestRequestKey extends BACnetConfirmedServ
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestRequestKey _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (bytesOfRemovedService != null) {
@@ -102,6 +104,7 @@ public class BACnetConfirmedServiceRequestRequestKey extends BACnetConfirmedServ
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     byte[] bytesOfRemovedService =
         readBuffer.readByteArray(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOV.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOV.java
index 031a9949fd..2d5d9607b6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOV.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOV.java
@@ -86,6 +86,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestSubscribeCOV");
 
@@ -121,6 +122,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestSubscribeCOV _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (subscriberProcessIdentifier)
     lengthInBits += subscriberProcessIdentifier.getLengthInBits();
@@ -148,6 +150,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVProperty.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVProperty.java
index ddcb28c9e7..1f90db2e8d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVProperty.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVProperty.java
@@ -100,6 +100,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestSubscribeCOVProperty");
 
@@ -145,6 +146,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestSubscribeCOVProperty _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (subscriberProcessIdentifier)
     lengthInBits += subscriberProcessIdentifier.getLengthInBits();
@@ -180,6 +182,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.java
index 93b62d42a5..c7536875a5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.java
@@ -98,6 +98,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple");
 
@@ -138,6 +139,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (subscriberProcessIdentifier)
     lengthInBits += subscriberProcessIdentifier.getLengthInBits();
@@ -170,6 +172,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.java
index bcb43210f4..223d71d543 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications.java
@@ -82,6 +82,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications");
@@ -115,6 +116,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications
         _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (monitoredObjectIdentifier)
     lengthInBits += monitoredObjectIdentifier.getLengthInBits();
@@ -150,6 +152,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.java
index b73d6e71a1..710d47032f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList.java
@@ -80,6 +80,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList");
@@ -107,6 +108,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList
         _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -153,6 +155,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference.java
index 8c255bd963..fc020a5769 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference.java
@@ -69,6 +69,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext(
         "BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference");
@@ -97,6 +98,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     int lengthInBits = 0;
     BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference
         _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (monitoredProperty)
     lengthInBits += monitoredProperty.getLengthInBits();
@@ -127,6 +129,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetPropertyReferenceEnclosed monitoredProperty =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestUnknown.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestUnknown.java
index 95e238e185..b9fe937356 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestUnknown.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestUnknown.java
@@ -66,6 +66,7 @@ public class BACnetConfirmedServiceRequestUnknown extends BACnetConfirmedService
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestUnknown");
 
@@ -84,6 +85,7 @@ public class BACnetConfirmedServiceRequestUnknown extends BACnetConfirmedService
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestUnknown _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (unknownBytes != null) {
@@ -101,6 +103,7 @@ public class BACnetConfirmedServiceRequestUnknown extends BACnetConfirmedService
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     byte[] unknownBytes =
         readBuffer.readByteArray("unknownBytes", Math.toIntExact(serviceRequestPayloadLength));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTClose.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTClose.java
index ec196dd118..97c06cf0b8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTClose.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTClose.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestVTClose extends BACnetConfirmedService
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestVTClose");
 
@@ -87,6 +88,7 @@ public class BACnetConfirmedServiceRequestVTClose extends BACnetConfirmedService
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestVTClose _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (listOfRemoteVtSessionIdentifiers != null) {
@@ -106,6 +108,7 @@ public class BACnetConfirmedServiceRequestVTClose extends BACnetConfirmedService
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetApplicationTagUnsignedInteger> listOfRemoteVtSessionIdentifiers =
         readLengthArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTData.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTData.java
index d77cfa1218..94fbf590d7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTData.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTData.java
@@ -79,6 +79,7 @@ public class BACnetConfirmedServiceRequestVTData extends BACnetConfirmedServiceR
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestVTData");
 
@@ -104,6 +105,7 @@ public class BACnetConfirmedServiceRequestVTData extends BACnetConfirmedServiceR
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestVTData _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (vtSessionIdentifier)
     lengthInBits += vtSessionIdentifier.getLengthInBits();
@@ -124,6 +126,7 @@ public class BACnetConfirmedServiceRequestVTData extends BACnetConfirmedServiceR
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger vtSessionIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTOpen.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTOpen.java
index fd2ed3dc68..5f95f4f489 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTOpen.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestVTOpen.java
@@ -72,6 +72,7 @@ public class BACnetConfirmedServiceRequestVTOpen extends BACnetConfirmedServiceR
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestVTOpen");
 
@@ -96,6 +97,7 @@ public class BACnetConfirmedServiceRequestVTOpen extends BACnetConfirmedServiceR
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestVTOpen _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (vtClass)
     lengthInBits += vtClass.getLengthInBits();
@@ -113,6 +115,7 @@ public class BACnetConfirmedServiceRequestVTOpen extends BACnetConfirmedServiceR
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetVTClassTagged vtClass =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWriteProperty.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWriteProperty.java
index 162e2cd519..fcb54f4297 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWriteProperty.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWriteProperty.java
@@ -93,6 +93,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestWriteProperty");
 
@@ -125,6 +126,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestWriteProperty _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (objectIdentifier)
     lengthInBits += objectIdentifier.getLengthInBits();
@@ -155,6 +157,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWritePropertyMultiple.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWritePropertyMultiple.java
index 696faef176..b7f3c6e49d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWritePropertyMultiple.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConfirmedServiceRequestWritePropertyMultiple.java
@@ -68,6 +68,7 @@ public class BACnetConfirmedServiceRequestWritePropertyMultiple
   protected void serializeBACnetConfirmedServiceRequestChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConfirmedServiceRequestWritePropertyMultiple");
 
@@ -86,6 +87,7 @@ public class BACnetConfirmedServiceRequestWritePropertyMultiple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConfirmedServiceRequestWritePropertyMultiple _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (data != null) {
@@ -105,6 +107,7 @@ public class BACnetConfirmedServiceRequestWritePropertyMultiple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetWriteAccessSpecification> data =
         readLengthArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedData.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedData.java
index 4d72ac8cfc..c959dd491c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedData.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedData.java
@@ -86,6 +86,7 @@ public abstract class BACnetConstructedData implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedData");
 
@@ -114,6 +115,7 @@ public abstract class BACnetConstructedData implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     BACnetConstructedData _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (openingTag)
     lengthInBits += openingTag.getLengthInBits();
@@ -191,6 +193,7 @@ public abstract class BACnetConstructedData implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetOpeningTag openingTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDULength.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDULength.java
index 0754d8e2dc..518fc6e14d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDULength.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDULength.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAPDULength extends BACnetConstructedData imple
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAPDULength");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAPDULength extends BACnetConstructedData imple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAPDULength _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (apduLength)
     lengthInBits += apduLength.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAPDULength extends BACnetConstructedData imple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger apduLength =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUSegmentTimeout.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUSegmentTimeout.java
index 1bb4d3ec4e..9ba09baa9a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUSegmentTimeout.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUSegmentTimeout.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAPDUSegmentTimeout extends BACnetConstructedDa
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAPDUSegmentTimeout");
 
@@ -102,6 +103,7 @@ public class BACnetConstructedDataAPDUSegmentTimeout extends BACnetConstructedDa
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAPDUSegmentTimeout _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (apduSegmentTimeout)
     lengthInBits += apduSegmentTimeout.getLengthInBits();
@@ -122,6 +124,7 @@ public class BACnetConstructedDataAPDUSegmentTimeout extends BACnetConstructedDa
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger apduSegmentTimeout =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUTimeout.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUTimeout.java
index 788f677fe8..69ab017428 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUTimeout.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAPDUTimeout.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAPDUTimeout extends BACnetConstructedData impl
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAPDUTimeout");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAPDUTimeout extends BACnetConstructedData impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAPDUTimeout _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (apduTimeout)
     lengthInBits += apduTimeout.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAPDUTimeout extends BACnetConstructedData impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger apduTimeout =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAbsenteeLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAbsenteeLimit.java
index 8cd7c7fbae..91eea6738b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAbsenteeLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAbsenteeLimit.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAbsenteeLimit extends BACnetConstructedData im
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAbsenteeLimit");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAbsenteeLimit extends BACnetConstructedData im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAbsenteeLimit _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (absenteeLimit)
     lengthInBits += absenteeLimit.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAbsenteeLimit extends BACnetConstructedData im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger absenteeLimit =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAcceptedModes.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAcceptedModes.java
index 3298b60693..a96942b45c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAcceptedModes.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAcceptedModes.java
@@ -74,6 +74,7 @@ public class BACnetConstructedDataAcceptedModes extends BACnetConstructedData im
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAcceptedModes");
 
@@ -92,6 +93,7 @@ public class BACnetConstructedDataAcceptedModes extends BACnetConstructedData im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAcceptedModes _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (acceptedModes != null) {
@@ -114,6 +116,7 @@ public class BACnetConstructedDataAcceptedModes extends BACnetConstructedData im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetLifeSafetyModeTagged> acceptedModes =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessAlarmEvents.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessAlarmEvents.java
index 7a1400cc80..cc05f75a13 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessAlarmEvents.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessAlarmEvents.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataAccessAlarmEvents extends BACnetConstructedDat
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessAlarmEvents");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataAccessAlarmEvents extends BACnetConstructedDat
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessAlarmEvents _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (accessAlarmEvents != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataAccessAlarmEvents extends BACnetConstructedDat
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetAccessEventTagged> accessAlarmEvents =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessCredentialAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessCredentialAll.java
index 4e8b77d7d5..1148db6b15 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessCredentialAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessCredentialAll.java
@@ -66,6 +66,7 @@ public class BACnetConstructedDataAccessCredentialAll extends BACnetConstructedD
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessCredentialAll");
 
@@ -81,6 +82,7 @@ public class BACnetConstructedDataAccessCredentialAll extends BACnetConstructedD
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessCredentialAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -96,6 +98,7 @@ public class BACnetConstructedDataAccessCredentialAll extends BACnetConstructedD
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAlarmValues.java
index bd4852248b..ca6d59249c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAlarmValues.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataAccessDoorAlarmValues extends BACnetConstructe
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessDoorAlarmValues");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataAccessDoorAlarmValues extends BACnetConstructe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessDoorAlarmValues _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (alarmValues != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataAccessDoorAlarmValues extends BACnetConstructe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetDoorAlarmStateTagged> alarmValues =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAll.java
index a9eefc259c..5372662e55 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorAll.java
@@ -65,6 +65,7 @@ public class BACnetConstructedDataAccessDoorAll extends BACnetConstructedData im
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessDoorAll");
 
@@ -80,6 +81,7 @@ public class BACnetConstructedDataAccessDoorAll extends BACnetConstructedData im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessDoorAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -95,6 +97,7 @@ public class BACnetConstructedDataAccessDoorAll extends BACnetConstructedData im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorFaultValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorFaultValues.java
index 5dc1599ee6..0877d3ec6b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorFaultValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorFaultValues.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataAccessDoorFaultValues extends BACnetConstructe
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessDoorFaultValues");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataAccessDoorFaultValues extends BACnetConstructe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessDoorFaultValues _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (faultValues != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataAccessDoorFaultValues extends BACnetConstructe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetDoorAlarmStateTagged> faultValues =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorPresentValue.java
index e88d3303f5..c809e9546a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorPresentValue.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccessDoorPresentValue extends BACnetConstruct
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessDoorPresentValue");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccessDoorPresentValue extends BACnetConstruct
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessDoorPresentValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (presentValue)
     lengthInBits += presentValue.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccessDoorPresentValue extends BACnetConstruct
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDoorValueTagged presentValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorRelinquishDefault.java
index 37f4c7291b..88c585469e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoorRelinquishDefault.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccessDoorRelinquishDefault extends BACnetCons
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessDoorRelinquishDefault");
 
@@ -102,6 +103,7 @@ public class BACnetConstructedDataAccessDoorRelinquishDefault extends BACnetCons
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessDoorRelinquishDefault _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (relinquishDefault)
     lengthInBits += relinquishDefault.getLengthInBits();
@@ -122,6 +124,7 @@ public class BACnetConstructedDataAccessDoorRelinquishDefault extends BACnetCons
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDoorValueTagged relinquishDefault =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoors.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoors.java
index 1ccad4eb01..3006b34f2e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoors.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessDoors.java
@@ -88,6 +88,7 @@ public class BACnetConstructedDataAccessDoors extends BACnetConstructedData impl
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessDoors");
 
@@ -117,6 +118,7 @@ public class BACnetConstructedDataAccessDoors extends BACnetConstructedData impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessDoors _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -146,6 +148,7 @@ public class BACnetConstructedDataAccessDoors extends BACnetConstructedData impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     BigInteger zero = readVirtualField("zero", BigInteger.class, 0L);
 
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEvent.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEvent.java
index d3e15dc244..332e25c222 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEvent.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEvent.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAccessEvent extends BACnetConstructedData impl
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessEvent");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAccessEvent extends BACnetConstructedData impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessEvent _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accessEvent)
     lengthInBits += accessEvent.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAccessEvent extends BACnetConstructedData impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAccessEventTagged accessEvent =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventAuthenticationFactor.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventAuthenticationFactor.java
index f938453c81..a0a46a372a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventAuthenticationFactor.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventAuthenticationFactor.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccessEventAuthenticationFactor extends BACnet
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessEventAuthenticationFactor");
 
@@ -104,6 +105,7 @@ public class BACnetConstructedDataAccessEventAuthenticationFactor extends BACnet
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessEventAuthenticationFactor _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accessEventAuthenticationFactor)
     lengthInBits += accessEventAuthenticationFactor.getLengthInBits();
@@ -124,6 +126,7 @@ public class BACnetConstructedDataAccessEventAuthenticationFactor extends BACnet
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetAuthenticationFactor accessEventAuthenticationFactor =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventCredential.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventCredential.java
index 2af7097638..90c1155851 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventCredential.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventCredential.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccessEventCredential extends BACnetConstructe
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessEventCredential");
 
@@ -104,6 +105,7 @@ public class BACnetConstructedDataAccessEventCredential extends BACnetConstructe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessEventCredential _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accessEventCredential)
     lengthInBits += accessEventCredential.getLengthInBits();
@@ -124,6 +126,7 @@ public class BACnetConstructedDataAccessEventCredential extends BACnetConstructe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDeviceObjectReference accessEventCredential =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTag.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTag.java
index 17ca039561..dca34bb500 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTag.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTag.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAccessEventTag extends BACnetConstructedData i
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessEventTag");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAccessEventTag extends BACnetConstructedData i
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessEventTag _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accessEventTag)
     lengthInBits += accessEventTag.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAccessEventTag extends BACnetConstructedData i
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger accessEventTag =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTime.java
index cf469acf03..53c9516e80 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessEventTime.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAccessEventTime extends BACnetConstructedData
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessEventTime");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccessEventTime extends BACnetConstructedData
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessEventTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accessEventTime)
     lengthInBits += accessEventTime.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccessEventTime extends BACnetConstructedData
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetTimeStamp accessEventTime =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessPointAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessPointAll.java
index 10c265f5ed..a163802314 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessPointAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessPointAll.java
@@ -65,6 +65,7 @@ public class BACnetConstructedDataAccessPointAll extends BACnetConstructedData i
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessPointAll");
 
@@ -80,6 +81,7 @@ public class BACnetConstructedDataAccessPointAll extends BACnetConstructedData i
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessPointAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -95,6 +97,7 @@ public class BACnetConstructedDataAccessPointAll extends BACnetConstructedData i
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessRightsAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessRightsAll.java
index da8b26a3af..b40c5060fe 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessRightsAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessRightsAll.java
@@ -65,6 +65,7 @@ public class BACnetConstructedDataAccessRightsAll extends BACnetConstructedData
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessRightsAll");
 
@@ -80,6 +81,7 @@ public class BACnetConstructedDataAccessRightsAll extends BACnetConstructedData
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessRightsAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -95,6 +97,7 @@ public class BACnetConstructedDataAccessRightsAll extends BACnetConstructedData
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessTransactionEvents.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessTransactionEvents.java
index 8dc3846276..5d9a47c9db 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessTransactionEvents.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessTransactionEvents.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataAccessTransactionEvents extends BACnetConstruc
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessTransactionEvents");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataAccessTransactionEvents extends BACnetConstruc
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessTransactionEvents _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (accessTransactionEvents != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataAccessTransactionEvents extends BACnetConstruc
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetAccessEventTagged> accessTransactionEvents =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessUserAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessUserAll.java
index 7ddb00cacf..fa7df4bf8f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessUserAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessUserAll.java
@@ -65,6 +65,7 @@ public class BACnetConstructedDataAccessUserAll extends BACnetConstructedData im
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessUserAll");
 
@@ -80,6 +81,7 @@ public class BACnetConstructedDataAccessUserAll extends BACnetConstructedData im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessUserAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -95,6 +97,7 @@ public class BACnetConstructedDataAccessUserAll extends BACnetConstructedData im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAdjustValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAdjustValue.java
index 964dac8b53..ec549a0ef5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAdjustValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAdjustValue.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccessZoneAdjustValue extends BACnetConstructe
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessZoneAdjustValue");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccessZoneAdjustValue extends BACnetConstructe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessZoneAdjustValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (adjustValue)
     lengthInBits += adjustValue.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccessZoneAdjustValue extends BACnetConstructe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagSignedInteger adjustValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAlarmValues.java
index e8d165b33d..812c26425f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAlarmValues.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataAccessZoneAlarmValues extends BACnetConstructe
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessZoneAlarmValues");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataAccessZoneAlarmValues extends BACnetConstructe
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessZoneAlarmValues _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (alarmValues != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataAccessZoneAlarmValues extends BACnetConstructe
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetAccessZoneOccupancyStateTagged> alarmValues =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAll.java
index bd73a322f1..aa600d059e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccessZoneAll.java
@@ -65,6 +65,7 @@ public class BACnetConstructedDataAccessZoneAll extends BACnetConstructedData im
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccessZoneAll");
 
@@ -80,6 +81,7 @@ public class BACnetConstructedDataAccessZoneAll extends BACnetConstructedData im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccessZoneAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -95,6 +97,7 @@ public class BACnetConstructedDataAccessZoneAll extends BACnetConstructedData im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompaniment.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompaniment.java
index 58f5758fb6..ae5a238970 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompaniment.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompaniment.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAccompaniment extends BACnetConstructedData im
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccompaniment");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAccompaniment extends BACnetConstructedData im
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccompaniment _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accompaniment)
     lengthInBits += accompaniment.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAccompaniment extends BACnetConstructedData im
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDeviceObjectReference accompaniment =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompanimentTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompanimentTime.java
index 1e417b7b3f..cef28e8308 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompanimentTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccompanimentTime.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccompanimentTime extends BACnetConstructedDat
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccompanimentTime");
 
@@ -102,6 +103,7 @@ public class BACnetConstructedDataAccompanimentTime extends BACnetConstructedDat
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccompanimentTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (accompanimentTime)
     lengthInBits += accompanimentTime.getLengthInBits();
@@ -122,6 +124,7 @@ public class BACnetConstructedDataAccompanimentTime extends BACnetConstructedDat
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger accompanimentTime =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorAll.java
index 9d75642ff6..c7a3b10651 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorAll.java
@@ -65,6 +65,7 @@ public class BACnetConstructedDataAccumulatorAll extends BACnetConstructedData i
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorAll");
 
@@ -80,6 +81,7 @@ public class BACnetConstructedDataAccumulatorAll extends BACnetConstructedData i
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -95,6 +97,7 @@ public class BACnetConstructedDataAccumulatorAll extends BACnetConstructedData i
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultHighLimit.java
index 7456d4e5ad..e984170e87 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultHighLimit.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccumulatorFaultHighLimit extends BACnetConstr
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorFaultHighLimit");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccumulatorFaultHighLimit extends BACnetConstr
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorFaultHighLimit _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (faultHighLimit)
     lengthInBits += faultHighLimit.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccumulatorFaultHighLimit extends BACnetConstr
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger faultHighLimit =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultLowLimit.java
index aaa2a5391b..a1231a164d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorFaultLowLimit.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccumulatorFaultLowLimit extends BACnetConstru
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorFaultLowLimit");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccumulatorFaultLowLimit extends BACnetConstru
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorFaultLowLimit _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (faultLowLimit)
     lengthInBits += faultLowLimit.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccumulatorFaultLowLimit extends BACnetConstru
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger faultLowLimit =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorHighLimit.java
index 5b25519bf5..a4370df0bf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorHighLimit.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccumulatorHighLimit extends BACnetConstructed
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorHighLimit");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccumulatorHighLimit extends BACnetConstructed
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorHighLimit _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (highLimit)
     lengthInBits += highLimit.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccumulatorHighLimit extends BACnetConstructed
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger highLimit =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorLowLimit.java
index 781cca8f21..a7cdf8c5ff 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorLowLimit.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccumulatorLowLimit extends BACnetConstructedD
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorLowLimit");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccumulatorLowLimit extends BACnetConstructedD
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorLowLimit _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (lowLimit)
     lengthInBits += lowLimit.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccumulatorLowLimit extends BACnetConstructedD
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger lowLimit =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMaxPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMaxPresValue.java
index 15ab77c153..43424d195f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMaxPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMaxPresValue.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccumulatorMaxPresValue extends BACnetConstruc
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorMaxPresValue");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccumulatorMaxPresValue extends BACnetConstruc
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorMaxPresValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (maxPresValue)
     lengthInBits += maxPresValue.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccumulatorMaxPresValue extends BACnetConstruc
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger maxPresValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMinPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMinPresValue.java
index 1887af2f5b..76fa2126cc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMinPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAccumulatorMinPresValue.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAccumulatorMinPresValue extends BACnetConstruc
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAccumulatorMinPresValue");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAccumulatorMinPresValue extends BACnetConstruc
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAccumulatorMinPresValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (minPresValue)
     lengthInBits += minPresValue.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataAccumulatorMinPresValue extends BACnetConstruc
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger minPresValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckRequired.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckRequired.java
index 056f1913a0..325b44323b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckRequired.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckRequired.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAckRequired extends BACnetConstructedData impl
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAckRequired");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAckRequired extends BACnetConstructedData impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAckRequired _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (ackRequired)
     lengthInBits += ackRequired.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAckRequired extends BACnetConstructedData impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetEventTransitionBitsTagged ackRequired =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckedTransitions.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckedTransitions.java
index 66564375aa..610acac179 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckedTransitions.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAckedTransitions.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAckedTransitions extends BACnetConstructedData
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAckedTransitions");
 
@@ -102,6 +103,7 @@ public class BACnetConstructedDataAckedTransitions extends BACnetConstructedData
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAckedTransitions _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (ackedTransitions)
     lengthInBits += ackedTransitions.getLengthInBits();
@@ -122,6 +124,7 @@ public class BACnetConstructedDataAckedTransitions extends BACnetConstructedData
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetEventTransitionBitsTagged ackedTransitions =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAction.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAction.java
index ce96d96c72..e59ef3fefb 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAction.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAction.java
@@ -88,6 +88,7 @@ public class BACnetConstructedDataAction extends BACnetConstructedData implement
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAction");
 
@@ -117,6 +118,7 @@ public class BACnetConstructedDataAction extends BACnetConstructedData implement
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAction _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -146,6 +148,7 @@ public class BACnetConstructedDataAction extends BACnetConstructedData implement
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     BigInteger zero = readVirtualField("zero", BigInteger.class, 0L);
 
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActionText.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActionText.java
index abb1963e15..5b34bdb3a1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActionText.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActionText.java
@@ -88,6 +88,7 @@ public class BACnetConstructedDataActionText extends BACnetConstructedData imple
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActionText");
 
@@ -117,6 +118,7 @@ public class BACnetConstructedDataActionText extends BACnetConstructedData imple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActionText _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -146,6 +148,7 @@ public class BACnetConstructedDataActionText extends BACnetConstructedData imple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     BigInteger zero = readVirtualField("zero", BigInteger.class, 0L);
 
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActivationTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActivationTime.java
index 40366d968f..25badfc51a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActivationTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActivationTime.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataActivationTime extends BACnetConstructedData i
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActivationTime");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataActivationTime extends BACnetConstructedData i
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActivationTime _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (activationTime)
     lengthInBits += activationTime.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataActivationTime extends BACnetConstructedData i
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetDateTime activationTime =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveAuthenticationPolicy.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveAuthenticationPolicy.java
index 1fc8c8b8c4..0e3e136161 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveAuthenticationPolicy.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveAuthenticationPolicy.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataActiveAuthenticationPolicy extends BACnetConst
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActiveAuthenticationPolicy");
 
@@ -104,6 +105,7 @@ public class BACnetConstructedDataActiveAuthenticationPolicy extends BACnetConst
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActiveAuthenticationPolicy _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (activeAuthenticationPolicy)
     lengthInBits += activeAuthenticationPolicy.getLengthInBits();
@@ -124,6 +126,7 @@ public class BACnetConstructedDataActiveAuthenticationPolicy extends BACnetConst
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagUnsignedInteger activeAuthenticationPolicy =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVMultipleSubscriptions.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVMultipleSubscriptions.java
index f99ef3b8bf..261961797f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVMultipleSubscriptions.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVMultipleSubscriptions.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataActiveCOVMultipleSubscriptions extends BACnetC
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActiveCOVMultipleSubscriptions");
 
@@ -94,6 +95,7 @@ public class BACnetConstructedDataActiveCOVMultipleSubscriptions extends BACnetC
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActiveCOVMultipleSubscriptions _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (activeCOVMultipleSubscriptions != null) {
@@ -116,6 +118,7 @@ public class BACnetConstructedDataActiveCOVMultipleSubscriptions extends BACnetC
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetCOVMultipleSubscription> activeCOVMultipleSubscriptions =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVSubscriptions.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVSubscriptions.java
index 51d7f55a73..06c2a54cb5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVSubscriptions.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveCOVSubscriptions.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataActiveCOVSubscriptions extends BACnetConstruct
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActiveCOVSubscriptions");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataActiveCOVSubscriptions extends BACnetConstruct
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActiveCOVSubscriptions _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (activeCOVSubscriptions != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataActiveCOVSubscriptions extends BACnetConstruct
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetCOVSubscription> activeCOVSubscriptions =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveText.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveText.java
index b1470d2a14..1392efcdfa 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveText.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveText.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataActiveText extends BACnetConstructedData imple
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActiveText");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataActiveText extends BACnetConstructedData imple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActiveText _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (activeText)
     lengthInBits += activeText.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataActiveText extends BACnetConstructedData imple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagCharacterString activeText =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveVTSessions.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveVTSessions.java
index 2fc3ce01b3..c2037c2a09 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveVTSessions.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActiveVTSessions.java
@@ -75,6 +75,7 @@ public class BACnetConstructedDataActiveVTSessions extends BACnetConstructedData
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActiveVTSessions");
 
@@ -93,6 +94,7 @@ public class BACnetConstructedDataActiveVTSessions extends BACnetConstructedData
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActiveVTSessions _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Array field
     if (activeVTSession != null) {
@@ -115,6 +117,7 @@ public class BACnetConstructedDataActiveVTSessions extends BACnetConstructedData
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     List<BACnetVTSession> activeVTSession =
         readTerminatedArrayField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActualShedLevel.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActualShedLevel.java
index b6e351affd..cbf76ed6fc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActualShedLevel.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataActualShedLevel.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataActualShedLevel extends BACnetConstructedData
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataActualShedLevel");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataActualShedLevel extends BACnetConstructedData
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataActualShedLevel _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (actualShedLevel)
     lengthInBits += actualShedLevel.getLengthInBits();
@@ -121,6 +123,7 @@ public class BACnetConstructedDataActualShedLevel extends BACnetConstructedData
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetShedLevel actualShedLevel =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAdjustValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAdjustValue.java
index 99b6bf379b..ea11465e25 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAdjustValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAdjustValue.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAdjustValue extends BACnetConstructedData impl
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAdjustValue");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAdjustValue extends BACnetConstructedData impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAdjustValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (adjustValue)
     lengthInBits += adjustValue.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAdjustValue extends BACnetConstructedData impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetApplicationTagSignedInteger adjustValue =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValue.java
index 8c747b1207..f1e92ebcad 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValue.java
@@ -78,6 +78,7 @@ public class BACnetConstructedDataAlarmValue extends BACnetConstructedData imple
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAlarmValue");
 
@@ -100,6 +101,7 @@ public class BACnetConstructedDataAlarmValue extends BACnetConstructedData imple
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAlarmValue _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (binaryPv)
     lengthInBits += binaryPv.getLengthInBits();
@@ -120,6 +122,7 @@ public class BACnetConstructedDataAlarmValue extends BACnetConstructedData imple
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     BACnetBinaryPVTagged binaryPv =
         readSimpleField(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValues.java
index 56859d17af..0f1c28d8ee 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlarmValues.java
@@ -88,6 +88,7 @@ public class BACnetConstructedDataAlarmValues extends BACnetConstructedData impl
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAlarmValues");
 
@@ -117,6 +118,7 @@ public class BACnetConstructedDataAlarmValues extends BACnetConstructedData impl
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAlarmValues _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // A virtual field doesn't have any in- or output.
 
@@ -146,6 +148,7 @@ public class BACnetConstructedDataAlarmValues extends BACnetConstructedData impl
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     BigInteger zero = readVirtualField("zero", BigInteger.class, 0L);
 
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentAll.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentAll.java
index b84da5c1be..89892981b7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentAll.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentAll.java
@@ -66,6 +66,7 @@ public class BACnetConstructedDataAlertEnrollmentAll extends BACnetConstructedDa
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAlertEnrollmentAll");
 
@@ -81,6 +82,7 @@ public class BACnetConstructedDataAlertEnrollmentAll extends BACnetConstructedDa
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     BACnetConstructedDataAlertEnrollmentAll _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -96,6 +98,7 @@ public class BACnetConstructedDataAlertEnrollmentAll extends BACnetConstructedDa
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     // Validation
     if (!((1) == (2))) {
       throw new ParseValidationException(
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentPresentValue.java
index 97e80c0c85..de64f9f3df 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlertEnrollmentPresentValue.java
@@ -79,6 +79,7 @@ public class BACnetConstructedDataAlertEnrollmentPresentValue extends BACnetCons
   protected void serializeBACnetConstructedDataChild(WriteBuffer writeBuffer)
       throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("BACnetConstructedDataAlertEnrollmentPresentValue");
 
@@ -101,6 +102,7 @@ public class BACnetConstructedDataAlertEnrollmentPresentValue extends BACnetCons
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
... 67835 lines suppressed ...