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

(plc4x) 01/02: feat(code-gen/java): use new readComplex factory function

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

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

commit ca49d7f9994d3705b3bc219c943ff3fcc1ae2ae1
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Aug 30 11:19:11 2024 +0200

    feat(code-gen/java): use new readComplex factory function
---
 .../language/cs/CsLanguageTemplateHelper.java      |  2 +-
 .../language/java/JavaLanguageTemplateHelper.java  |  2 +-
 .../readwrite/CIPEncapsulationReadRequest.java     |  3 +-
 .../readwrite/CIPEncapsulationReadResponse.java    |  2 +-
 .../abeth/readwrite/DF1CommandRequestMessage.java  |  4 +-
 .../java/ads/discovery/readwrite/AdsDiscovery.java |  5 +-
 .../readwrite/AdsDiscoveryBlockAmsNetId.java       |  3 +-
 .../readwrite/AdsDiscoveryBlockHostName.java       |  3 +-
 .../readwrite/AdsDiscoveryBlockPassword.java       |  3 +-
 .../readwrite/AdsDiscoveryBlockRouteName.java      |  3 +-
 .../readwrite/AdsDiscoveryBlockUserName.java       |  3 +-
 .../ads/readwrite/AdsDataTypeTableChildEntry.java  |  6 +-
 .../java/ads/readwrite/AdsDataTypeTableEntry.java  |  6 +-
 .../readwrite/AdsDeviceNotificationRequest.java    |  3 +-
 .../java/ads/readwrite/AdsReadWriteRequest.java    |  2 +-
 .../plc4x/java/ads/readwrite/AdsStampHeader.java   |  3 +-
 .../apache/plc4x/java/ads/readwrite/AmsPacket.java |  6 +-
 .../plc4x/java/ads/readwrite/AmsSerialFrame.java   |  3 +-
 .../plc4x/java/ads/readwrite/AmsTCPPacket.java     |  2 +-
 .../plc4x/java/bacnetip/readwrite/APDUAbort.java   |  2 +-
 .../java/bacnetip/readwrite/APDUComplexAck.java    |  2 +-
 .../bacnetip/readwrite/APDUConfirmedRequest.java   |  2 +-
 .../plc4x/java/bacnetip/readwrite/APDUError.java   |  2 +-
 .../plc4x/java/bacnetip/readwrite/APDUReject.java  |  2 +-
 .../bacnetip/readwrite/APDUUnconfirmedRequest.java |  2 +-
 ...netAccessAuthenticationFactorDisableTagged.java |  4 +-
 .../BACnetAccessCredentialDisableReasonTagged.java |  4 +-
 .../BACnetAccessCredentialDisableTagged.java       |  4 +-
 .../readwrite/BACnetAccessEventTagged.java         |  4 +-
 .../readwrite/BACnetAccessPassbackModeTagged.java  |  4 +-
 .../java/bacnetip/readwrite/BACnetAccessRule.java  | 10 +--
 .../BACnetAccessRuleLocationSpecifierTagged.java   |  4 +-
 .../BACnetAccessRuleTimeRangeSpecifierTagged.java  |  4 +-
 .../readwrite/BACnetAccessThreatLevel.java         |  2 +-
 .../readwrite/BACnetAccessUserTypeTagged.java      |  4 +-
 .../BACnetAccessZoneOccupancyStateTagged.java      |  4 +-
 .../readwrite/BACnetAccumulatorRecord.java         |  8 +--
 ...etAccumulatorRecordAccumulatorStatusTagged.java |  4 +-
 .../bacnetip/readwrite/BACnetActionCommand.java    | 18 +++---
 .../java/bacnetip/readwrite/BACnetActionList.java  |  9 +--
 .../bacnetip/readwrite/BACnetActionTagged.java     |  4 +-
 .../java/bacnetip/readwrite/BACnetAddress.java     |  4 +-
 .../bacnetip/readwrite/BACnetAddressBinding.java   |  6 +-
 .../bacnetip/readwrite/BACnetAddressEnclosed.java  |  8 +--
 .../bacnetip/readwrite/BACnetApplicationTag.java   |  4 +-
 .../readwrite/BACnetApplicationTagBitString.java   |  2 +-
 .../readwrite/BACnetApplicationTagBoolean.java     |  2 +-
 .../BACnetApplicationTagCharacterString.java       |  2 +-
 .../readwrite/BACnetApplicationTagDate.java        |  4 +-
 .../readwrite/BACnetApplicationTagDouble.java      |  3 +-
 .../readwrite/BACnetApplicationTagEnumerated.java  |  2 +-
 .../BACnetApplicationTagObjectIdentifier.java      |  2 +-
 .../readwrite/BACnetApplicationTagOctetString.java |  2 +-
 .../readwrite/BACnetApplicationTagReal.java        |  4 +-
 .../BACnetApplicationTagSignedInteger.java         |  2 +-
 .../readwrite/BACnetApplicationTagTime.java        |  4 +-
 .../BACnetApplicationTagUnsignedInteger.java       |  2 +-
 .../readwrite/BACnetAssignedAccessRights.java      |  4 +-
 .../readwrite/BACnetAssignedLandingCalls.java      |  2 +-
 ...BACnetAssignedLandingCallsLandingCallsList.java |  6 +-
 ...tAssignedLandingCallsLandingCallsListEntry.java |  4 +-
 .../readwrite/BACnetAuthenticationFactor.java      |  6 +-
 .../BACnetAuthenticationFactorEnclosed.java        |  7 +-
 .../BACnetAuthenticationFactorFormat.java          |  6 +-
 .../BACnetAuthenticationFactorTypeTagged.java      |  4 +-
 .../readwrite/BACnetAuthenticationPolicy.java      |  6 +-
 .../readwrite/BACnetAuthenticationPolicyList.java  |  6 +-
 .../BACnetAuthenticationPolicyListEntry.java       |  4 +-
 .../BACnetAuthenticationStatusTagged.java          |  4 +-
 .../BACnetAuthorizationExemptionTagged.java        |  4 +-
 .../readwrite/BACnetAuthorizationModeTagged.java   |  4 +-
 .../java/bacnetip/readwrite/BACnetBDTEntry.java    |  4 +-
 .../readwrite/BACnetBackupStateTagged.java         |  4 +-
 .../readwrite/BACnetBinaryLightingPVTagged.java    |  4 +-
 .../bacnetip/readwrite/BACnetBinaryPVTagged.java   |  4 +-
 .../readwrite/BACnetCOVMultipleSubscription.java   | 10 +--
 ...criptionListOfCovSubscriptionSpecification.java |  6 +-
 ...ionListOfCovSubscriptionSpecificationEntry.java |  4 +-
 ...ptionSpecificationEntryListOfCovReferences.java |  6 +-
 ...SpecificationEntryListOfCovReferencesEntry.java |  6 +-
 .../bacnetip/readwrite/BACnetCOVSubscription.java  | 10 +--
 .../bacnetip/readwrite/BACnetCalendarEntry.java    |  3 +-
 .../readwrite/BACnetCalendarEntryDate.java         |  2 +-
 .../readwrite/BACnetCalendarEntryDateRange.java    |  2 +-
 .../readwrite/BACnetCalendarEntryEnclosed.java     |  7 +-
 .../readwrite/BACnetCalendarEntryWeekNDay.java     |  2 +-
 .../bacnetip/readwrite/BACnetChannelValue.java     |  3 +-
 .../readwrite/BACnetChannelValueBitString.java     |  2 +-
 .../readwrite/BACnetChannelValueBoolean.java       |  2 +-
 .../BACnetChannelValueCharacterString.java         |  2 +-
 .../bacnetip/readwrite/BACnetChannelValueDate.java |  2 +-
 .../readwrite/BACnetChannelValueDouble.java        |  2 +-
 .../readwrite/BACnetChannelValueEnumerated.java    |  2 +-
 .../readwrite/BACnetChannelValueInteger.java       |  2 +-
 .../BACnetChannelValueLightingCommand.java         |  2 +-
 .../bacnetip/readwrite/BACnetChannelValueNull.java |  2 +-
 .../BACnetChannelValueObjectidentifier.java        |  2 +-
 .../readwrite/BACnetChannelValueOctetString.java   |  2 +-
 .../bacnetip/readwrite/BACnetChannelValueReal.java |  2 +-
 .../bacnetip/readwrite/BACnetChannelValueTime.java |  2 +-
 .../readwrite/BACnetChannelValueUnsigned.java      |  2 +-
 .../java/bacnetip/readwrite/BACnetClientCOV.java   |  3 +-
 .../bacnetip/readwrite/BACnetClientCOVNone.java    |  2 +-
 .../bacnetip/readwrite/BACnetClientCOVObject.java  |  2 +-
 .../java/bacnetip/readwrite/BACnetClosingTag.java  |  4 +-
 ...netConfirmedServiceRequestAcknowledgeAlarm.java | 12 ++--
 ...ACnetConfirmedServiceRequestAddListElement.java |  8 +--
 ...ACnetConfirmedServiceRequestAtomicReadFile.java |  4 +-
 ...onfirmedServiceRequestAtomicReadFileRecord.java |  4 +-
 ...onfirmedServiceRequestAtomicReadFileStream.java |  4 +-
 ...ServiceRequestAtomicReadFileStreamOrRecord.java |  7 +-
 ...CnetConfirmedServiceRequestAtomicWriteFile.java | 12 ++--
 ...rmedServiceRequestConfirmedCOVNotification.java | 10 +--
 ...iceRequestConfirmedCOVNotificationMultiple.java | 10 +--
 ...edServiceRequestConfirmedEventNotification.java | 26 ++++----
 ...rmedServiceRequestConfirmedPrivateTransfer.java |  6 +-
 ...onfirmedServiceRequestConfirmedTextMessage.java |  8 +--
 ...iceRequestConfirmedTextMessageMessageClass.java |  7 +-
 ...tConfirmedTextMessageMessageClassCharacter.java |  2 +-
 ...estConfirmedTextMessageMessageClassNumeric.java |  2 +-
 ...tConfirmedTextMessageMessagePriorityTagged.java |  4 +-
 .../BACnetConfirmedServiceRequestCreateObject.java |  4 +-
 ...dServiceRequestCreateObjectObjectSpecifier.java |  8 +--
 .../BACnetConfirmedServiceRequestDeleteObject.java |  2 +-
 ...edServiceRequestDeviceCommunicationControl.java |  6 +-
 ...iceCommunicationControlEnableDisableTagged.java |  4 +-
 ...onfirmedServiceRequestGetEnrollmentSummary.java | 12 ++--
 ...rollmentSummaryAcknowledgementFilterTagged.java |  4 +-
 ...GetEnrollmentSummaryEventStateFilterTagged.java |  4 +-
 ...eRequestGetEnrollmentSummaryPriorityFilter.java |  8 +--
 ...ConfirmedServiceRequestGetEventInformation.java |  2 +-
 ...ConfirmedServiceRequestLifeSafetyOperation.java |  8 +--
 .../BACnetConfirmedServiceRequestReadProperty.java |  6 +-
 ...onfirmedServiceRequestReadPropertyMultiple.java |  3 +-
 .../BACnetConfirmedServiceRequestReadRange.java    |  8 +--
 ...ACnetConfirmedServiceRequestReadRangeRange.java |  7 +-
 ...rmedServiceRequestReadRangeRangeByPosition.java |  4 +-
 ...rviceRequestReadRangeRangeBySequenceNumber.java |  4 +-
 ...onfirmedServiceRequestReadRangeRangeByTime.java |  6 +-
 ...tConfirmedServiceRequestReinitializeDevice.java |  4 +-
 ...lizeDeviceReinitializedStateOfDeviceTagged.java |  4 +-
 ...etConfirmedServiceRequestRemoveListElement.java |  8 +--
 .../BACnetConfirmedServiceRequestSubscribeCOV.java |  8 +--
 ...onfirmedServiceRequestSubscribeCOVProperty.java | 12 ++--
 ...ServiceRequestSubscribeCOVPropertyMultiple.java | 10 +--
 ...ultipleListOfCovSubscriptionSpecifications.java | 10 ++-
 ...pleListOfCovSubscriptionSpecificationsList.java |  6 +-
 ...stOfCovSubscriptionSpecificationsReference.java |  6 +-
 .../BACnetConfirmedServiceRequestVTClose.java      |  2 +-
 .../BACnetConfirmedServiceRequestVTData.java       |  6 +-
 .../BACnetConfirmedServiceRequestVTOpen.java       |  4 +-
 ...BACnetConfirmedServiceRequestWriteProperty.java | 10 +--
 ...nfirmedServiceRequestWritePropertyMultiple.java |  3 +-
 .../bacnetip/readwrite/BACnetConstructedData.java  |  7 +-
 .../readwrite/BACnetConstructedDataAPDULength.java |  2 +-
 .../BACnetConstructedDataAPDUSegmentTimeout.java   |  2 +-
 .../BACnetConstructedDataAPDUTimeout.java          |  2 +-
 .../BACnetConstructedDataAbsenteeLimit.java        |  2 +-
 .../BACnetConstructedDataAcceptedModes.java        |  2 +-
 .../BACnetConstructedDataAccessAlarmEvents.java    |  2 +-
 ...BACnetConstructedDataAccessDoorAlarmValues.java |  2 +-
 ...BACnetConstructedDataAccessDoorFaultValues.java |  2 +-
 ...ACnetConstructedDataAccessDoorPresentValue.java |  2 +-
 ...ConstructedDataAccessDoorRelinquishDefault.java |  2 +-
 .../BACnetConstructedDataAccessDoors.java          |  5 +-
 .../BACnetConstructedDataAccessEvent.java          |  2 +-
 ...tructedDataAccessEventAuthenticationFactor.java |  3 +-
 ...BACnetConstructedDataAccessEventCredential.java |  3 +-
 .../BACnetConstructedDataAccessEventTag.java       |  2 +-
 .../BACnetConstructedDataAccessEventTime.java      |  3 +-
 ...CnetConstructedDataAccessTransactionEvents.java |  2 +-
 ...BACnetConstructedDataAccessZoneAdjustValue.java |  2 +-
 ...BACnetConstructedDataAccessZoneAlarmValues.java |  2 +-
 .../BACnetConstructedDataAccompaniment.java        |  3 +-
 .../BACnetConstructedDataAccompanimentTime.java    |  2 +-
 ...etConstructedDataAccumulatorFaultHighLimit.java |  2 +-
 ...netConstructedDataAccumulatorFaultLowLimit.java |  2 +-
 .../BACnetConstructedDataAccumulatorHighLimit.java |  2 +-
 .../BACnetConstructedDataAccumulatorLowLimit.java  |  2 +-
 ...CnetConstructedDataAccumulatorMaxPresValue.java |  2 +-
 ...CnetConstructedDataAccumulatorMinPresValue.java |  2 +-
 .../BACnetConstructedDataAckRequired.java          |  2 +-
 .../BACnetConstructedDataAckedTransitions.java     |  2 +-
 .../readwrite/BACnetConstructedDataAction.java     |  5 +-
 .../readwrite/BACnetConstructedDataActionText.java |  4 +-
 .../BACnetConstructedDataActivationTime.java       |  3 +-
 ...tConstructedDataActiveAuthenticationPolicy.java |  2 +-
 ...structedDataActiveCOVMultipleSubscriptions.java |  3 +-
 ...ACnetConstructedDataActiveCOVSubscriptions.java |  3 +-
 .../readwrite/BACnetConstructedDataActiveText.java |  2 +-
 .../BACnetConstructedDataActiveVTSessions.java     |  3 +-
 .../BACnetConstructedDataActualShedLevel.java      |  3 +-
 .../BACnetConstructedDataAdjustValue.java          |  2 +-
 .../readwrite/BACnetConstructedDataAlarmValue.java |  2 +-
 .../BACnetConstructedDataAlarmValues.java          |  4 +-
 ...ConstructedDataAlertEnrollmentPresentValue.java |  2 +-
 .../BACnetConstructedDataAlignIntervals.java       |  2 +-
 .../BACnetConstructedDataAllWritesSuccessful.java  |  2 +-
 ...ACnetConstructedDataAllowGroupDelayInhibit.java |  2 +-
 ...etConstructedDataAnalogInputFaultHighLimit.java |  2 +-
 ...netConstructedDataAnalogInputFaultLowLimit.java |  2 +-
 ...etConstructedDataAnalogInputInterfaceValue.java |  3 +-
 ...CnetConstructedDataAnalogInputMaxPresValue.java |  2 +-
 ...CnetConstructedDataAnalogInputPresentValue.java |  2 +-
 ...tConstructedDataAnalogOutputInterfaceValue.java |  3 +-
 ...netConstructedDataAnalogOutputMaxPresValue.java |  2 +-
 ...netConstructedDataAnalogOutputPresentValue.java |  2 +-
 ...nstructedDataAnalogOutputRelinquishDefault.java |  2 +-
 ...etConstructedDataAnalogValueFaultHighLimit.java |  2 +-
 ...netConstructedDataAnalogValueFaultLowLimit.java |  2 +-
 ...CnetConstructedDataAnalogValueMaxPresValue.java |  2 +-
 ...CnetConstructedDataAnalogValuePresentValue.java |  2 +-
 ...onstructedDataAnalogValueRelinquishDefault.java |  2 +-
 ...tConstructedDataApplicationSoftwareVersion.java |  2 +-
 .../readwrite/BACnetConstructedDataArchive.java    |  2 +-
 .../BACnetConstructedDataAssignedAccessRights.java |  5 +-
 .../BACnetConstructedDataAssignedLandingCalls.java |  5 +-
 .../BACnetConstructedDataAttemptedSamples.java     |  2 +-
 ...BACnetConstructedDataAuthenticationFactors.java |  4 +-
 ...netConstructedDataAuthenticationPolicyList.java |  5 +-
 ...etConstructedDataAuthenticationPolicyNames.java |  4 +-
 .../BACnetConstructedDataAuthenticationStatus.java |  2 +-
 ...CnetConstructedDataAuthorizationExemptions.java |  2 +-
 .../BACnetConstructedDataAuthorizationMode.java    |  2 +-
 .../BACnetConstructedDataAutoSlaveDiscovery.java   |  2 +-
 .../BACnetConstructedDataAverageValue.java         |  2 +-
 ...BACnetConstructedDataBACnetIPGlobalAddress.java |  3 +-
 .../BACnetConstructedDataBACnetIPMode.java         |  2 +-
 ...netConstructedDataBACnetIPMulticastAddress.java |  2 +-
 .../BACnetConstructedDataBACnetIPNATTraversal.java |  2 +-
 .../BACnetConstructedDataBACnetIPUDPPort.java      |  2 +-
 .../BACnetConstructedDataBACnetIPv6Mode.java       |  2 +-
 ...tConstructedDataBACnetIPv6MulticastAddress.java |  2 +-
 .../BACnetConstructedDataBACnetIPv6UDPPort.java    |  2 +-
 ...etConstructedDataBBMDAcceptFDRegistrations.java |  2 +-
 ...structedDataBBMDBroadcastDistributionTable.java |  3 +-
 ...ACnetConstructedDataBBMDForeignDeviceTable.java |  3 +-
 ...BACnetConstructedDataBackupAndRestoreState.java |  2 +-
 .../BACnetConstructedDataBackupFailureTimeout.java |  2 +-
 ...BACnetConstructedDataBackupPreparationTime.java |  2 +-
 ...netConstructedDataBaseDeviceSecurityPolicy.java |  2 +-
 .../readwrite/BACnetConstructedDataBelongsTo.java  |  3 +-
 .../readwrite/BACnetConstructedDataBias.java       |  2 +-
 ...etConstructedDataBinaryInputInterfaceValue.java |  3 +-
 ...CnetConstructedDataBinaryInputPresentValue.java |  2 +-
 ...uctedDataBinaryLightingOutputFeedbackValue.java |  2 +-
 ...ructedDataBinaryLightingOutputPresentValue.java |  2 +-
 ...dDataBinaryLightingOutputRelinquishDefault.java |  2 +-
 ...etConstructedDataBinaryOutputFeedbackValue.java |  2 +-
 ...tConstructedDataBinaryOutputInterfaceValue.java |  3 +-
 ...netConstructedDataBinaryOutputPresentValue.java |  2 +-
 ...nstructedDataBinaryOutputRelinquishDefault.java |  2 +-
 ...CnetConstructedDataBinaryValuePresentValue.java |  2 +-
 ...onstructedDataBinaryValueRelinquishDefault.java |  2 +-
 .../readwrite/BACnetConstructedDataBitMask.java    |  2 +-
 ...etConstructedDataBitStringValueAlarmValues.java |  4 +-
 ...tConstructedDataBitStringValuePresentValue.java |  2 +-
 ...tructedDataBitStringValueRelinquishDefault.java |  2 +-
 .../readwrite/BACnetConstructedDataBitText.java    |  4 +-
 .../BACnetConstructedDataBlinkWarnEnable.java      |  2 +-
 .../readwrite/BACnetConstructedDataBufferSize.java |  2 +-
 .../BACnetConstructedDataCOVIncrement.java         |  2 +-
 .../readwrite/BACnetConstructedDataCOVPeriod.java  |  2 +-
 ...etConstructedDataCOVResubscriptionInterval.java |  2 +-
 .../readwrite/BACnetConstructedDataCOVUPeriod.java |  2 +-
 .../BACnetConstructedDataCOVURecipients.java       |  3 +-
 .../BACnetConstructedDataCalendarPresentValue.java |  2 +-
 .../BACnetConstructedDataCarAssignedDirection.java |  2 +-
 .../BACnetConstructedDataCarDoorCommand.java       |  4 +-
 .../BACnetConstructedDataCarDoorStatus.java        |  4 +-
 .../BACnetConstructedDataCarDoorText.java          |  4 +-
 .../BACnetConstructedDataCarDoorZone.java          |  2 +-
 .../BACnetConstructedDataCarDriveStatus.java       |  2 +-
 .../readwrite/BACnetConstructedDataCarLoad.java    |  2 +-
 .../BACnetConstructedDataCarLoadUnits.java         |  2 +-
 .../readwrite/BACnetConstructedDataCarMode.java    |  2 +-
 .../BACnetConstructedDataCarMovingDirection.java   |  2 +-
 .../BACnetConstructedDataCarPosition.java          |  2 +-
 .../BACnetConstructedDataChangeOfStateCount.java   |  2 +-
 .../BACnetConstructedDataChangeOfStateTime.java    |  3 +-
 .../BACnetConstructedDataChangesPending.java       |  2 +-
 ...dDataChannelListOfObjectPropertyReferences.java |  4 +-
 .../BACnetConstructedDataChannelNumber.java        |  2 +-
 .../BACnetConstructedDataChannelPresentValue.java  |  3 +-
 ...tructedDataCharacterStringValueAlarmValues.java |  5 +-
 ...tructedDataCharacterStringValueFaultValues.java |  5 +-
 ...ructedDataCharacterStringValuePresentValue.java |  2 +-
 ...dDataCharacterStringValueRelinquishDefault.java |  2 +-
 .../BACnetConstructedDataClientCOVIncrement.java   |  4 +-
 .../readwrite/BACnetConstructedDataCommand.java    |  2 +-
 .../BACnetConstructedDataCommandAction.java        |  5 +-
 .../BACnetConstructedDataCommandTimeArray.java     |  5 +-
 .../BACnetConstructedDataConfigurationFiles.java   |  4 +-
 .../BACnetConstructedDataControlGroups.java        |  4 +-
 ...ConstructedDataControlledVariableReference.java |  3 +-
 ...CnetConstructedDataControlledVariableUnits.java |  2 +-
 ...CnetConstructedDataControlledVariableValue.java |  2 +-
 .../readwrite/BACnetConstructedDataCount.java      |  2 +-
 .../BACnetConstructedDataCountBeforeChange.java    |  2 +-
 .../BACnetConstructedDataCountChangeTime.java      |  3 +-
 ...tructedDataCredentialDataInputPresentValue.java |  3 +-
 ...nstructedDataCredentialDataInputUpdateTime.java |  4 +-
 .../BACnetConstructedDataCredentialDisable.java    |  2 +-
 .../BACnetConstructedDataCredentialStatus.java     |  2 +-
 .../BACnetConstructedDataCredentials.java          |  3 +-
 .../BACnetConstructedDataCredentialsInZone.java    |  3 +-
 ...ACnetConstructedDataCurrentCommandPriority.java |  3 +-
 .../BACnetConstructedDataDatabaseRevision.java     |  2 +-
 .../readwrite/BACnetConstructedDataDateList.java   |  3 +-
 ...onstructedDataDatePatternValuePresentValue.java |  2 +-
 ...uctedDataDatePatternValueRelinquishDefault.java |  2 +-
 ...ructedDataDateTimePatternValuePresentValue.java |  4 +-
 ...dDataDateTimePatternValueRelinquishDefault.java |  3 +-
 ...etConstructedDataDateTimeValuePresentValue.java |  4 +-
 ...structedDataDateTimeValueRelinquishDefault.java |  3 +-
 ...BACnetConstructedDataDateValuePresentValue.java |  2 +-
 ...tConstructedDataDateValueRelinquishDefault.java |  2 +-
 ...BACnetConstructedDataDaylightSavingsStatus.java |  2 +-
 .../BACnetConstructedDataDaysRemaining.java        |  2 +-
 .../readwrite/BACnetConstructedDataDeadband.java   |  2 +-
 .../BACnetConstructedDataDefaultFadeTime.java      |  2 +-
 .../BACnetConstructedDataDefaultRampRate.java      |  2 +-
 .../BACnetConstructedDataDefaultStepIncrement.java |  2 +-
 ...structedDataDefaultSubordinateRelationship.java |  2 +-
 .../BACnetConstructedDataDefaultTimeout.java       |  2 +-
 ...CnetConstructedDataDeployedProfileLocation.java |  2 +-
 .../BACnetConstructedDataDerivativeConstant.java   |  2 +-
 ...CnetConstructedDataDerivativeConstantUnits.java |  2 +-
 .../BACnetConstructedDataDescription.java          |  2 +-
 .../BACnetConstructedDataDescriptionOfHalt.java    |  2 +-
 .../BACnetConstructedDataDeviceAddressBinding.java |  3 +-
 .../BACnetConstructedDataDeviceMaxInfoFrames.java  |  2 +-
 .../BACnetConstructedDataDeviceMaxMaster.java      |  2 +-
 .../readwrite/BACnetConstructedDataDeviceType.java |  2 +-
 .../BACnetConstructedDataDirectReading.java        |  2 +-
 ...CnetConstructedDataDistributionKeyRevision.java |  2 +-
 .../readwrite/BACnetConstructedDataDoNotHide.java  |  2 +-
 .../BACnetConstructedDataDoorAlarmState.java       |  2 +-
 ...BACnetConstructedDataDoorExtendedPulseTime.java |  2 +-
 .../BACnetConstructedDataDoorMembers.java          |  5 +-
 .../BACnetConstructedDataDoorOpenTooLongTime.java  |  2 +-
 .../BACnetConstructedDataDoorPulseTime.java        |  2 +-
 .../readwrite/BACnetConstructedDataDoorStatus.java |  2 +-
 .../BACnetConstructedDataDoorUnlockDelayTime.java  |  2 +-
 .../readwrite/BACnetConstructedDataDutyWindow.java |  2 +-
 .../BACnetConstructedDataEffectivePeriod.java      |  4 +-
 .../BACnetConstructedDataEgressActive.java         |  2 +-
 .../readwrite/BACnetConstructedDataEgressTime.java |  2 +-
 .../BACnetConstructedDataElapsedActiveTime.java    |  2 +-
 .../readwrite/BACnetConstructedDataElement.java    | 10 ++-
 .../BACnetConstructedDataElevatorGroup.java        |  2 +-
 ...etConstructedDataElevatorGroupGroupMembers.java |  4 +-
 .../readwrite/BACnetConstructedDataEnable.java     |  2 +-
 .../BACnetConstructedDataEnergyMeter.java          |  2 +-
 .../BACnetConstructedDataEnergyMeterRef.java       |  3 +-
 .../BACnetConstructedDataEntryPoints.java          |  3 +-
 .../readwrite/BACnetConstructedDataErrorLimit.java |  2 +-
 ...BACnetConstructedDataEscalatorFaultSignals.java |  2 +-
 .../BACnetConstructedDataEscalatorMode.java        |  2 +-
 ...BACnetConstructedDataEventAlgorithmInhibit.java |  2 +-
 ...netConstructedDataEventAlgorithmInhibitRef.java |  3 +-
 .../BACnetConstructedDataEventDetectionEnable.java |  2 +-
 .../BACnetConstructedDataEventEnable.java          |  2 +-
 .../BACnetConstructedDataEventLogLogBuffer.java    |  3 +-
 .../BACnetConstructedDataEventMessageTexts.java    |  5 +-
 ...CnetConstructedDataEventMessageTextsConfig.java |  5 +-
 .../BACnetConstructedDataEventParameters.java      |  3 +-
 .../readwrite/BACnetConstructedDataEventState.java |  2 +-
 .../BACnetConstructedDataEventTimeStamps.java      |  5 +-
 .../readwrite/BACnetConstructedDataEventType.java  |  2 +-
 .../BACnetConstructedDataExceptionSchedule.java    |  5 +-
 .../BACnetConstructedDataExecutionDelay.java       |  4 +-
 .../readwrite/BACnetConstructedDataExitPoints.java |  3 +-
 .../BACnetConstructedDataExpectedShedLevel.java    |  3 +-
 .../BACnetConstructedDataExpirationTime.java       |  3 +-
 .../BACnetConstructedDataExtendedTimeEnable.java   |  2 +-
 .../BACnetConstructedDataFDBBMDAddress.java        |  3 +-
 ...ACnetConstructedDataFDSubscriptionLifetime.java |  2 +-
 .../BACnetConstructedDataFailedAttemptEvents.java  |  2 +-
 .../BACnetConstructedDataFailedAttempts.java       |  2 +-
 .../BACnetConstructedDataFailedAttemptsTime.java   |  2 +-
 .../BACnetConstructedDataFaultHighLimit.java       |  2 +-
 .../BACnetConstructedDataFaultLowLimit.java        |  2 +-
 .../BACnetConstructedDataFaultParameters.java      |  3 +-
 .../BACnetConstructedDataFaultSignals.java         |  2 +-
 .../readwrite/BACnetConstructedDataFaultType.java  |  2 +-
 .../BACnetConstructedDataFaultValues.java          |  4 +-
 .../BACnetConstructedDataFileAccessMethod.java     |  2 +-
 .../BACnetConstructedDataFileRecordCount.java      |  2 +-
 .../readwrite/BACnetConstructedDataFileSize.java   |  2 +-
 .../readwrite/BACnetConstructedDataFileType.java   |  2 +-
 .../BACnetConstructedDataFirmwareRevision.java     |  2 +-
 .../readwrite/BACnetConstructedDataFloorText.java  |  4 +-
 .../BACnetConstructedDataFullDutyBaseline.java     |  2 +-
 ...CnetConstructedDataGlobalGroupGroupMembers.java |  4 +-
 ...CnetConstructedDataGlobalGroupPresentValue.java |  5 +-
 .../BACnetConstructedDataGlobalIdentifier.java     |  2 +-
 .../readwrite/BACnetConstructedDataGroupID.java    |  2 +-
 .../BACnetConstructedDataGroupMemberNames.java     |  4 +-
 .../BACnetConstructedDataGroupMembers.java         |  4 +-
 .../readwrite/BACnetConstructedDataGroupMode.java  |  2 +-
 .../BACnetConstructedDataGroupPresentValue.java    |  3 +-
 .../readwrite/BACnetConstructedDataHighLimit.java  |  2 +-
 .../readwrite/BACnetConstructedDataHigherDeck.java |  2 +-
 .../readwrite/BACnetConstructedDataIPAddress.java  |  2 +-
 .../BACnetConstructedDataIPDHCPEnable.java         |  2 +-
 .../BACnetConstructedDataIPDHCPLeaseTime.java      |  2 +-
 ...netConstructedDataIPDHCPLeaseTimeRemaining.java |  2 +-
 .../BACnetConstructedDataIPDHCPServer.java         |  2 +-
 .../BACnetConstructedDataIPDNSServer.java          |  4 +-
 .../BACnetConstructedDataIPDefaultGateway.java     |  2 +-
 .../BACnetConstructedDataIPSubnetMask.java         |  2 +-
 .../BACnetConstructedDataIPv6Address.java          |  2 +-
 ...netConstructedDataIPv6AutoAddressingEnable.java |  2 +-
 .../BACnetConstructedDataIPv6DHCPLeaseTime.java    |  2 +-
 ...tConstructedDataIPv6DHCPLeaseTimeRemaining.java |  2 +-
 .../BACnetConstructedDataIPv6DHCPServer.java       |  2 +-
 .../BACnetConstructedDataIPv6DNSServer.java        |  4 +-
 .../BACnetConstructedDataIPv6DefaultGateway.java   |  2 +-
 .../BACnetConstructedDataIPv6PrefixLength.java     |  2 +-
 .../BACnetConstructedDataIPv6ZoneIndex.java        |  2 +-
 .../readwrite/BACnetConstructedDataInProcess.java  |  2 +-
 .../readwrite/BACnetConstructedDataInProgress.java |  2 +-
 .../BACnetConstructedDataInactiveText.java         |  2 +-
 .../BACnetConstructedDataInitialTimeout.java       |  2 +-
 .../BACnetConstructedDataInputReference.java       |  3 +-
 .../BACnetConstructedDataInstallationID.java       |  2 +-
 .../readwrite/BACnetConstructedDataInstanceOf.java |  2 +-
 .../BACnetConstructedDataInstantaneousPower.java   |  2 +-
 ...netConstructedDataIntegerValueCOVIncrement.java |  2 +-
 .../BACnetConstructedDataIntegerValueDeadband.java |  2 +-
 ...tConstructedDataIntegerValueFaultHighLimit.java |  2 +-
 ...etConstructedDataIntegerValueFaultLowLimit.java |  2 +-
 ...BACnetConstructedDataIntegerValueHighLimit.java |  2 +-
 .../BACnetConstructedDataIntegerValueLowLimit.java |  2 +-
 ...netConstructedDataIntegerValueMaxPresValue.java |  2 +-
 ...netConstructedDataIntegerValueMinPresValue.java |  2 +-
 ...netConstructedDataIntegerValuePresentValue.java |  2 +-
 ...nstructedDataIntegerValueRelinquishDefault.java |  2 +-
 ...ACnetConstructedDataIntegerValueResolution.java |  2 +-
 .../BACnetConstructedDataIntegralConstant.java     |  2 +-
 ...BACnetConstructedDataIntegralConstantUnits.java |  2 +-
 .../BACnetConstructedDataIntervalOffset.java       |  2 +-
 .../readwrite/BACnetConstructedDataIsUTC.java      |  2 +-
 .../readwrite/BACnetConstructedDataKeySets.java    |  5 +-
 .../BACnetConstructedDataLandingCallControl.java   |  3 +-
 .../BACnetConstructedDataLandingCalls.java         |  3 +-
 .../BACnetConstructedDataLandingDoorStatus.java    |  5 +-
 ...onstructedDataLargeAnalogValueCOVIncrement.java |  2 +-
 ...netConstructedDataLargeAnalogValueDeadband.java |  2 +-
 ...structedDataLargeAnalogValueFaultHighLimit.java |  2 +-
 ...nstructedDataLargeAnalogValueFaultLowLimit.java |  2 +-
 ...etConstructedDataLargeAnalogValueHighLimit.java |  2 +-
 ...netConstructedDataLargeAnalogValueLowLimit.java |  2 +-
 ...onstructedDataLargeAnalogValueMaxPresValue.java |  2 +-
 ...onstructedDataLargeAnalogValueMinPresValue.java |  2 +-
 ...onstructedDataLargeAnalogValuePresentValue.java |  2 +-
 ...uctedDataLargeAnalogValueRelinquishDefault.java |  2 +-
 ...tConstructedDataLargeAnalogValueResolution.java |  2 +-
 .../BACnetConstructedDataLastAccessEvent.java      |  2 +-
 .../BACnetConstructedDataLastAccessPoint.java      |  3 +-
 .../BACnetConstructedDataLastCommandTime.java      |  3 +-
 .../BACnetConstructedDataLastCredentialAdded.java  |  3 +-
 ...CnetConstructedDataLastCredentialAddedTime.java |  3 +-
 ...BACnetConstructedDataLastCredentialRemoved.java |  3 +-
 ...etConstructedDataLastCredentialRemovedTime.java |  3 +-
 .../BACnetConstructedDataLastKeyServer.java        |  3 +-
 .../BACnetConstructedDataLastNotifyRecord.java     |  2 +-
 .../BACnetConstructedDataLastPriority.java         |  2 +-
 .../BACnetConstructedDataLastRestartReason.java    |  2 +-
 .../BACnetConstructedDataLastRestoreTime.java      |  3 +-
 .../BACnetConstructedDataLastStateChange.java      |  2 +-
 .../BACnetConstructedDataLastUseTime.java          |  4 +-
 ...BACnetConstructedDataLifeSafetyAlarmValues.java |  2 +-
 ...tConstructedDataLifeSafetyPointAlarmValues.java |  2 +-
 ...tConstructedDataLifeSafetyPointFaultValues.java |  2 +-
 ...ConstructedDataLifeSafetyPointPresentValue.java |  2 +-
 ...etConstructedDataLifeSafetyZoneAlarmValues.java |  2 +-
 ...etConstructedDataLifeSafetyZoneFaultValues.java |  2 +-
 ...uctedDataLifeSafetyZoneMaintenanceRequired.java |  2 +-
 ...tConstructedDataLifeSafetyZonePresentValue.java |  2 +-
 .../BACnetConstructedDataLiftFaultSignals.java     |  2 +-
 .../BACnetConstructedDataLightingCommand.java      |  3 +-
 ...structedDataLightingCommandDefaultPriority.java |  2 +-
 ...ConstructedDataLightingOutputFeedbackValue.java |  2 +-
 ...tConstructedDataLightingOutputPresentValue.java |  2 +-
 ...tructedDataLightingOutputRelinquishDefault.java |  2 +-
 ...ConstructedDataLightingOutputTrackingValue.java |  2 +-
 .../BACnetConstructedDataLimitEnable.java          |  2 +-
 ...CnetConstructedDataLimitMonitoringInterval.java |  2 +-
 .../readwrite/BACnetConstructedDataLinkSpeed.java  |  2 +-
 ...ACnetConstructedDataLinkSpeedAutonegotiate.java |  2 +-
 .../readwrite/BACnetConstructedDataLinkSpeeds.java |  4 +-
 .../BACnetConstructedDataListOfGroupMembers.java   |  3 +-
 ...structedDataListOfObjectPropertyReferences.java |  2 +-
 ...CnetConstructedDataLoadControlPresentValue.java |  2 +-
 .../readwrite/BACnetConstructedDataLocalDate.java  |  2 +-
 .../BACnetConstructedDataLocalForwardingOnly.java  |  2 +-
 .../readwrite/BACnetConstructedDataLocalTime.java  |  2 +-
 .../readwrite/BACnetConstructedDataLocation.java   |  2 +-
 .../readwrite/BACnetConstructedDataLockStatus.java |  2 +-
 .../readwrite/BACnetConstructedDataLockout.java    |  2 +-
 ...BACnetConstructedDataLockoutRelinquishTime.java |  2 +-
 .../readwrite/BACnetConstructedDataLogBuffer.java  |  5 +-
 ...CnetConstructedDataLogDeviceObjectProperty.java |  2 +-
 .../BACnetConstructedDataLogInterval.java          |  2 +-
 .../BACnetConstructedDataLoggingObject.java        |  2 +-
 .../BACnetConstructedDataLoggingRecord.java        |  3 +-
 .../BACnetConstructedDataLoggingType.java          |  2 +-
 .../readwrite/BACnetConstructedDataLoopAction.java |  2 +-
 .../BACnetConstructedDataLoopPresentValue.java     |  2 +-
 .../BACnetConstructedDataLowDiffLimit.java         |  3 +-
 .../readwrite/BACnetConstructedDataLowLimit.java   |  2 +-
 .../readwrite/BACnetConstructedDataLowerDeck.java  |  2 +-
 .../readwrite/BACnetConstructedDataMACAddress.java |  2 +-
 .../BACnetConstructedDataMachineRoomID.java        |  2 +-
 .../BACnetConstructedDataMaintenanceRequired.java  |  2 +-
 .../BACnetConstructedDataMakingCarCall.java        |  4 +-
 ...onstructedDataManipulatedVariableReference.java |  3 +-
 ...etConstructedDataManualSlaveAddressBinding.java |  3 +-
 .../BACnetConstructedDataMaskedAlarmValues.java    |  2 +-
 ...BACnetConstructedDataMaxAPDULengthAccepted.java |  2 +-
 .../BACnetConstructedDataMaxActualValue.java       |  2 +-
 .../BACnetConstructedDataMaxFailedAttempts.java    |  2 +-
 .../BACnetConstructedDataMaxInfoFrames.java        |  2 +-
 .../readwrite/BACnetConstructedDataMaxMaster.java  |  2 +-
 .../BACnetConstructedDataMaxPresValue.java         |  2 +-
 .../BACnetConstructedDataMaxSegmentsAccepted.java  |  2 +-
 .../BACnetConstructedDataMaximumOutput.java        |  2 +-
 .../BACnetConstructedDataMaximumValue.java         |  2 +-
 ...BACnetConstructedDataMaximumValueTimestamp.java |  3 +-
 .../readwrite/BACnetConstructedDataMemberOf.java   |  3 +-
 .../BACnetConstructedDataMemberStatusFlags.java    |  2 +-
 .../readwrite/BACnetConstructedDataMembers.java    |  3 +-
 .../BACnetConstructedDataMinActualValue.java       |  2 +-
 .../BACnetConstructedDataMinPresValue.java         |  2 +-
 .../BACnetConstructedDataMinimumOffTime.java       |  2 +-
 .../BACnetConstructedDataMinimumOnTime.java        |  2 +-
 .../BACnetConstructedDataMinimumOutput.java        |  2 +-
 .../BACnetConstructedDataMinimumValue.java         |  2 +-
 ...BACnetConstructedDataMinimumValueTimestamp.java |  3 +-
 .../readwrite/BACnetConstructedDataMode.java       |  2 +-
 .../readwrite/BACnetConstructedDataModelName.java  |  2 +-
 .../BACnetConstructedDataModificationDate.java     |  3 +-
 ...tConstructedDataMultiStateInputAlarmValues.java |  2 +-
 ...tConstructedDataMultiStateInputFaultValues.java |  2 +-
 ...nstructedDataMultiStateInputInterfaceValue.java |  3 +-
 ...nstructedDataMultiStateOutputFeedbackValue.java |  2 +-
 ...structedDataMultiStateOutputInterfaceValue.java |  3 +-
 ...uctedDataMultiStateOutputRelinquishDefault.java |  2 +-
 ...tConstructedDataMultiStateValueAlarmValues.java |  2 +-
 ...tConstructedDataMultiStateValueFaultValues.java |  2 +-
 ...ructedDataMultiStateValueRelinquishDefault.java |  2 +-
 .../BACnetConstructedDataMusterPoint.java          |  2 +-
 .../BACnetConstructedDataNegativeAccessRules.java  |  5 +-
 ...nstructedDataNetworkAccessSecurityPolicies.java |  5 +-
 .../BACnetConstructedDataNetworkInterfaceName.java |  2 +-
 .../BACnetConstructedDataNetworkNumber.java        |  2 +-
 .../BACnetConstructedDataNetworkNumberQuality.java |  2 +-
 ...netConstructedDataNetworkPortMaxInfoFrames.java |  2 +-
 .../BACnetConstructedDataNetworkPortMaxMaster.java |  2 +-
 .../BACnetConstructedDataNetworkType.java          |  2 +-
 .../BACnetConstructedDataNextStoppingFloor.java    |  2 +-
 .../BACnetConstructedDataNodeSubtype.java          |  2 +-
 .../readwrite/BACnetConstructedDataNodeType.java   |  2 +-
 .../BACnetConstructedDataNotificationClass.java    |  2 +-
 ...BACnetConstructedDataNotificationThreshold.java |  2 +-
 .../readwrite/BACnetConstructedDataNotifyType.java |  2 +-
 .../BACnetConstructedDataNumberOfAPDURetries.java  |  2 +-
 ...structedDataNumberOfAuthenticationPolicies.java |  2 +-
 .../BACnetConstructedDataNumberOfStates.java       |  2 +-
 .../BACnetConstructedDataObjectIdentifier.java     |  2 +-
 .../readwrite/BACnetConstructedDataObjectList.java |  4 +-
 .../readwrite/BACnetConstructedDataObjectName.java |  2 +-
 ...CnetConstructedDataObjectPropertyReference.java |  2 +-
 .../readwrite/BACnetConstructedDataObjectType.java |  2 +-
 .../BACnetConstructedDataOccupancyCount.java       |  2 +-
 .../BACnetConstructedDataOccupancyCountAdjust.java |  2 +-
 .../BACnetConstructedDataOccupancyCountEnable.java |  2 +-
 .../BACnetConstructedDataOccupancyLowerLimit.java  |  2 +-
 ...ConstructedDataOccupancyLowerLimitEnforced.java |  2 +-
 .../BACnetConstructedDataOccupancyState.java       |  2 +-
 .../BACnetConstructedDataOccupancyUpperLimit.java  |  2 +-
 ...ConstructedDataOccupancyUpperLimitEnforced.java |  2 +-
 ...onstructedDataOctetStringValuePresentValue.java |  2 +-
 ...uctedDataOctetStringValueRelinquishDefault.java |  2 +-
 .../BACnetConstructedDataOperationDirection.java   |  2 +-
 .../BACnetConstructedDataOperationExpected.java    |  2 +-
 .../BACnetConstructedDataOutOfService.java         |  2 +-
 .../BACnetConstructedDataOutputUnits.java          |  2 +-
 .../BACnetConstructedDataPacketReorderTime.java    |  2 +-
 .../BACnetConstructedDataPassbackMode.java         |  2 +-
 .../BACnetConstructedDataPassbackTimeout.java      |  2 +-
 .../BACnetConstructedDataPassengerAlarm.java       |  2 +-
 .../readwrite/BACnetConstructedDataPolarity.java   |  2 +-
 .../readwrite/BACnetConstructedDataPortFilter.java |  5 +-
 .../BACnetConstructedDataPositiveAccessRules.java  |  5 +-
 ...ructedDataPositiveIntegerValueCOVIncrement.java |  2 +-
 ...onstructedDataPositiveIntegerValueDeadband.java |  2 +-
 ...ctedDataPositiveIntegerValueFaultHighLimit.java |  2 +-
 ...uctedDataPositiveIntegerValueFaultLowLimit.java |  2 +-
 ...nstructedDataPositiveIntegerValueHighLimit.java |  2 +-
 ...onstructedDataPositiveIntegerValueLowLimit.java |  2 +-
 ...ructedDataPositiveIntegerValueMaxPresValue.java |  2 +-
 ...ructedDataPositiveIntegerValueMinPresValue.java |  2 +-
 ...dDataPositiveIntegerValueRelinquishDefault.java |  2 +-
 ...structedDataPositiveIntegerValueResolution.java |  2 +-
 .../readwrite/BACnetConstructedDataPower.java      |  2 +-
 .../readwrite/BACnetConstructedDataPowerMode.java  |  2 +-
 .../readwrite/BACnetConstructedDataPrescale.java   |  4 +-
 .../BACnetConstructedDataPresentValue.java         |  2 +-
 .../readwrite/BACnetConstructedDataPriority.java   |  4 +-
 .../BACnetConstructedDataPriorityArray.java        |  2 +-
 .../BACnetConstructedDataPriorityForWriting.java   |  2 +-
 .../BACnetConstructedDataProcessIdentifier.java    |  2 +-
 ...CnetConstructedDataProcessIdentifierFilter.java |  3 +-
 .../BACnetConstructedDataProfileLocation.java      |  2 +-
 .../BACnetConstructedDataProfileName.java          |  2 +-
 .../BACnetConstructedDataProgramChange.java        |  2 +-
 .../BACnetConstructedDataProgramLocation.java      |  2 +-
 .../BACnetConstructedDataProgramState.java         |  2 +-
 .../BACnetConstructedDataPropertyList.java         |  4 +-
 .../BACnetConstructedDataProportionalConstant.java |  2 +-
 ...etConstructedDataProportionalConstantUnits.java |  2 +-
 .../BACnetConstructedDataProtocolLevel.java        |  2 +-
 ...onstructedDataProtocolObjectTypesSupported.java |  2 +-
 .../BACnetConstructedDataProtocolRevision.java     |  2 +-
 ...etConstructedDataProtocolServicesSupported.java |  2 +-
 .../BACnetConstructedDataProtocolVersion.java      |  2 +-
 ...etConstructedDataPulseConverterAdjustValue.java |  2 +-
 ...tConstructedDataPulseConverterPresentValue.java |  2 +-
 .../readwrite/BACnetConstructedDataPulseRate.java  |  2 +-
 .../readwrite/BACnetConstructedDataReadOnly.java   |  2 +-
 .../BACnetConstructedDataReasonForDisable.java     |  2 +-
 .../BACnetConstructedDataReasonForHalt.java        |  2 +-
 .../BACnetConstructedDataRecipientList.java        |  3 +-
 .../BACnetConstructedDataRecordCount.java          |  2 +-
 ...netConstructedDataRecordsSinceNotification.java |  2 +-
 .../BACnetConstructedDataReferencePort.java        |  2 +-
 .../BACnetConstructedDataRegisteredCarCall.java    |  5 +-
 .../BACnetConstructedDataReliability.java          |  2 +-
 ...onstructedDataReliabilityEvaluationInhibit.java |  2 +-
 .../BACnetConstructedDataRelinquishDefault.java    |  2 +-
 .../readwrite/BACnetConstructedDataRepresents.java |  3 +-
 .../BACnetConstructedDataRequestedShedLevel.java   |  3 +-
 ...CnetConstructedDataRequestedUpdateInterval.java |  2 +-
 .../readwrite/BACnetConstructedDataResolution.java |  2 +-
 ...nstructedDataRestartNotificationRecipients.java |  3 +-
 ...BACnetConstructedDataRestoreCompletionTime.java |  2 +-
 ...ACnetConstructedDataRestorePreparationTime.java |  2 +-
 .../BACnetConstructedDataRoutingTable.java         |  3 +-
 .../readwrite/BACnetConstructedDataScale.java      |  3 +-
 .../BACnetConstructedDataScaleFactor.java          |  2 +-
 .../BACnetConstructedDataScheduleDefault.java      |  2 +-
 .../BACnetConstructedDataSchedulePresentValue.java |  2 +-
 .../BACnetConstructedDataSecuredStatus.java        |  2 +-
 .../BACnetConstructedDataSecurityPDUTimeout.java   |  2 +-
 .../BACnetConstructedDataSecurityTimeWindow.java   |  2 +-
 ...BACnetConstructedDataSegmentationSupported.java |  2 +-
 .../BACnetConstructedDataSerialNumber.java         |  2 +-
 .../readwrite/BACnetConstructedDataSetpoint.java   |  2 +-
 .../BACnetConstructedDataSetpointReference.java    |  3 +-
 .../readwrite/BACnetConstructedDataSetting.java    |  2 +-
 .../BACnetConstructedDataShedDuration.java         |  2 +-
 ...BACnetConstructedDataShedLevelDescriptions.java |  4 +-
 .../readwrite/BACnetConstructedDataShedLevels.java |  4 +-
 .../readwrite/BACnetConstructedDataSilenced.java   |  2 +-
 .../BACnetConstructedDataSlaveAddressBinding.java  |  3 +-
 .../BACnetConstructedDataSlaveProxyEnable.java     |  2 +-
 .../readwrite/BACnetConstructedDataStartTime.java  |  4 +-
 .../BACnetConstructedDataStateChangeValues.java    |  4 +-
 .../BACnetConstructedDataStateDescription.java     |  2 +-
 .../readwrite/BACnetConstructedDataStateText.java  |  4 +-
 .../BACnetConstructedDataStatusFlags.java          |  2 +-
 .../readwrite/BACnetConstructedDataStopTime.java   |  4 +-
 .../BACnetConstructedDataStopWhenFull.java         |  2 +-
 .../BACnetConstructedDataStrikeCount.java          |  2 +-
 .../BACnetConstructedDataStructuredObjectList.java |  4 +-
 ...ACnetConstructedDataSubordinateAnnotations.java |  4 +-
 .../BACnetConstructedDataSubordinateList.java      |  5 +-
 .../BACnetConstructedDataSubordinateNodeTypes.java |  4 +-
 ...netConstructedDataSubordinateRelationships.java |  4 +-
 .../BACnetConstructedDataSubordinateTags.java      |  4 +-
 .../BACnetConstructedDataSubscribedRecipients.java |  2 +-
 ...ACnetConstructedDataSupportedFormatClasses.java |  4 +-
 .../BACnetConstructedDataSupportedFormats.java     |  5 +-
 ...ConstructedDataSupportedSecurityAlgorithms.java |  2 +-
 .../BACnetConstructedDataSystemStatus.java         |  2 +-
 .../readwrite/BACnetConstructedDataTags.java       |  5 +-
 .../BACnetConstructedDataThreatAuthority.java      |  3 +-
 .../BACnetConstructedDataThreatLevel.java          |  3 +-
 .../readwrite/BACnetConstructedDataTimeDelay.java  |  2 +-
 .../BACnetConstructedDataTimeDelayNormal.java      |  2 +-
 ...BACnetConstructedDataTimeOfActiveTimeReset.java |  3 +-
 .../BACnetConstructedDataTimeOfDeviceRestart.java  |  3 +-
 ...BACnetConstructedDataTimeOfStateCountReset.java |  3 +-
 ...ACnetConstructedDataTimeOfStrikeCountReset.java |  3 +-
 ...onstructedDataTimePatternValuePresentValue.java |  2 +-
 ...uctedDataTimePatternValueRelinquishDefault.java |  2 +-
 ...ConstructedDataTimeSynchronizationInterval.java |  2 +-
 ...nstructedDataTimeSynchronizationRecipients.java |  3 +-
 ...BACnetConstructedDataTimeValuePresentValue.java |  2 +-
 ...tConstructedDataTimeValueRelinquishDefault.java |  2 +-
 .../BACnetConstructedDataTimerAlarmValues.java     |  2 +-
 .../BACnetConstructedDataTimerMaxPresValue.java    |  2 +-
 .../BACnetConstructedDataTimerMinPresValue.java    |  2 +-
 .../BACnetConstructedDataTimerResolution.java      |  2 +-
 .../BACnetConstructedDataTimerRunning.java         |  2 +-
 .../readwrite/BACnetConstructedDataTimerState.java |  2 +-
 .../BACnetConstructedDataTotalRecordCount.java     |  2 +-
 .../readwrite/BACnetConstructedDataTraceFlag.java  |  2 +-
 .../BACnetConstructedDataTrackingValue.java        |  2 +-
 ...onstructedDataTransactionNotificationClass.java |  2 +-
 .../readwrite/BACnetConstructedDataTransition.java |  2 +-
 .../BACnetConstructedDataTrendLogLogBuffer.java    |  3 +-
 ...tructedDataTrendLogLogDeviceObjectProperty.java |  2 +-
 ...etConstructedDataTrendLogMultipleLogBuffer.java |  3 +-
 ...ataTrendLogMultipleLogDeviceObjectProperty.java |  4 +-
 .../readwrite/BACnetConstructedDataTrigger.java    |  2 +-
 .../readwrite/BACnetConstructedDataUTCOffset.java  |  2 +-
 ...ructedDataUTCTimeSynchronizationRecipients.java |  3 +-
 .../readwrite/BACnetConstructedDataUnits.java      |  2 +-
 .../BACnetConstructedDataUnspecified.java          |  4 +-
 .../BACnetConstructedDataUpdateInterval.java       |  2 +-
 .../BACnetConstructedDataUpdateKeySetTimeout.java  |  2 +-
 .../readwrite/BACnetConstructedDataUpdateTime.java |  4 +-
 ...ACnetConstructedDataUserExternalIdentifier.java |  2 +-
 ...netConstructedDataUserInformationReference.java |  2 +-
 .../readwrite/BACnetConstructedDataUserName.java   |  2 +-
 .../readwrite/BACnetConstructedDataUserType.java   |  2 +-
 .../BACnetConstructedDataUsesRemaining.java        |  2 +-
 .../BACnetConstructedDataVTClassesSupported.java   |  2 +-
 .../BACnetConstructedDataValidSamples.java         |  2 +-
 .../BACnetConstructedDataValueBeforeChange.java    |  2 +-
 .../BACnetConstructedDataValueChangeTime.java      |  3 +-
 .../readwrite/BACnetConstructedDataValueSet.java   |  2 +-
 .../BACnetConstructedDataValueSource.java          |  3 +-
 .../BACnetConstructedDataValueSourceArray.java     |  5 +-
 .../BACnetConstructedDataVarianceValue.java        |  2 +-
 .../BACnetConstructedDataVendorIdentifier.java     |  2 +-
 .../readwrite/BACnetConstructedDataVendorName.java |  2 +-
 .../BACnetConstructedDataVerificationTime.java     |  2 +-
 ...ACnetConstructedDataVirtualMACAddressTable.java |  3 +-
 .../BACnetConstructedDataWeeklySchedule.java       |  5 +-
 .../BACnetConstructedDataWindowInterval.java       |  2 +-
 .../BACnetConstructedDataWindowSamples.java        |  2 +-
 .../BACnetConstructedDataWriteStatus.java          |  2 +-
 .../readwrite/BACnetConstructedDataZoneFrom.java   |  3 +-
 .../BACnetConstructedDataZoneMembers.java          |  3 +-
 .../readwrite/BACnetConstructedDataZoneTo.java     |  3 +-
 .../java/bacnetip/readwrite/BACnetContextTag.java  |  4 +-
 .../readwrite/BACnetContextTagBitString.java       |  2 +-
 .../readwrite/BACnetContextTagBoolean.java         |  2 +-
 .../readwrite/BACnetContextTagCharacterString.java |  2 +-
 .../bacnetip/readwrite/BACnetContextTagDate.java   |  4 +-
 .../bacnetip/readwrite/BACnetContextTagDouble.java |  3 +-
 .../readwrite/BACnetContextTagEnumerated.java      |  2 +-
 .../BACnetContextTagObjectIdentifier.java          |  2 +-
 .../readwrite/BACnetContextTagOctetString.java     |  2 +-
 .../bacnetip/readwrite/BACnetContextTagReal.java   |  4 +-
 .../readwrite/BACnetContextTagSignedInteger.java   |  2 +-
 .../bacnetip/readwrite/BACnetContextTagTime.java   |  4 +-
 .../readwrite/BACnetContextTagUnsignedInteger.java |  2 +-
 .../BACnetCredentialAuthenticationFactor.java      |  4 +-
 .../bacnetip/readwrite/BACnetDailySchedule.java    |  9 +--
 .../java/bacnetip/readwrite/BACnetDateRange.java   |  4 +-
 .../readwrite/BACnetDateRangeEnclosed.java         |  8 +--
 .../java/bacnetip/readwrite/BACnetDateTime.java    |  4 +-
 .../bacnetip/readwrite/BACnetDateTimeEnclosed.java |  8 +--
 .../bacnetip/readwrite/BACnetDaysOfWeekTagged.java |  6 +-
 .../java/bacnetip/readwrite/BACnetDestination.java | 16 ++---
 .../BACnetDeviceObjectPropertyReference.java       |  8 +--
 ...ACnetDeviceObjectPropertyReferenceEnclosed.java |  6 +-
 .../readwrite/BACnetDeviceObjectReference.java     |  4 +-
 .../BACnetDeviceObjectReferenceEnclosed.java       |  7 +-
 .../readwrite/BACnetDeviceStatusTagged.java        |  4 +-
 .../readwrite/BACnetDoorAlarmStateTagged.java      |  4 +-
 .../readwrite/BACnetDoorSecuredStatusTagged.java   |  4 +-
 .../bacnetip/readwrite/BACnetDoorStatusTagged.java |  4 +-
 .../bacnetip/readwrite/BACnetDoorValueTagged.java  |  4 +-
 .../readwrite/BACnetEngineeringUnitsTagged.java    |  4 +-
 .../bacnetip/readwrite/BACnetErrorGeneral.java     |  4 +-
 .../readwrite/BACnetEscalatorFaultTagged.java      |  4 +-
 .../readwrite/BACnetEscalatorModeTagged.java       |  4 +-
 .../BACnetEscalatorOperationDirectionTagged.java   |  4 +-
 .../bacnetip/readwrite/BACnetEventLogRecord.java   |  4 +-
 .../readwrite/BACnetEventLogRecordLogDatum.java    |  7 +-
 .../BACnetEventLogRecordLogDatumLogStatus.java     |  2 +-
 .../BACnetEventLogRecordLogDatumNotification.java  |  7 +-
 .../BACnetEventLogRecordLogDatumTimeChange.java    |  2 +-
 .../BACnetEventNotificationSubscription.java       |  8 +--
 .../bacnetip/readwrite/BACnetEventParameter.java   |  3 +-
 .../readwrite/BACnetEventParameterAccessEvent.java | 10 ++-
 ...ventParameterAccessEventListOfAccessEvents.java |  6 +-
 .../readwrite/BACnetEventParameterBufferReady.java | 10 ++-
 .../BACnetEventParameterChangeOfBitstring.java     | 12 ++--
 ...eterChangeOfBitstringListOfBitstringValues.java |  6 +-
 ...ACnetEventParameterChangeOfCharacterString.java | 10 ++-
 ...erChangeOfCharacterStringListOfAlarmValues.java |  6 +-
 .../BACnetEventParameterChangeOfDiscreteValue.java |  8 +--
 .../BACnetEventParameterChangeOfLifeSavety.java    | 14 ++--
 ...rameterChangeOfLifeSavetyListOfAlarmValues.java |  6 +-
 ...ngeOfLifeSavetyListOfLifeSavetyAlarmValues.java |  6 +-
 .../BACnetEventParameterChangeOfState.java         | 10 ++-
 ...netEventParameterChangeOfStateListOfValues.java |  7 +-
 .../BACnetEventParameterChangeOfStatusFlags.java   | 10 ++-
 .../BACnetEventParameterChangeOfTimer.java         | 12 ++--
 ...ACnetEventParameterChangeOfTimerAlarmValue.java |  6 +-
 .../BACnetEventParameterChangeOfValue.java         | 10 ++-
 ...CnetEventParameterChangeOfValueCivCriteria.java |  7 +-
 ...ntParameterChangeOfValueCivCriteriaBitmask.java |  2 +-
 ...alueCivCriteriaReferencedPropertyIncrement.java |  2 +-
 .../BACnetEventParameterCommandFailure.java        | 10 ++-
 .../BACnetEventParameterDoubleOutOfRange.java      | 14 ++--
 .../readwrite/BACnetEventParameterExtended.java    | 12 ++--
 .../BACnetEventParameterExtendedParameters.java    | 35 +++++-----
 .../BACnetEventParameterFloatingLimit.java         | 16 ++---
 .../readwrite/BACnetEventParameterNone.java        |  2 +-
 .../readwrite/BACnetEventParameterOutOfRange.java  | 14 ++--
 .../BACnetEventParameterSignedOutOfRange.java      | 14 ++--
 .../BACnetEventParameterUnsignedOutOfRange.java    | 14 ++--
 .../BACnetEventParameterUnsignedRange.java         | 12 ++--
 .../bacnetip/readwrite/BACnetEventPriorities.java  | 10 +--
 .../bacnetip/readwrite/BACnetEventStateTagged.java |  4 +-
 .../readwrite/BACnetEventSummariesList.java        |  7 +-
 .../bacnetip/readwrite/BACnetEventSummary.java     | 14 ++--
 .../bacnetip/readwrite/BACnetEventTimestamps.java  | 12 +---
 .../readwrite/BACnetEventTimestampsEnclosed.java   |  7 +-
 .../readwrite/BACnetEventTransitionBitsTagged.java |  6 +-
 .../bacnetip/readwrite/BACnetEventTypeTagged.java  |  4 +-
 .../bacnetip/readwrite/BACnetFaultParameter.java   |  3 +-
 .../BACnetFaultParameterFaultCharacterString.java  |  8 +--
 ...meterFaultCharacterStringListOfFaultValues.java |  6 +-
 .../BACnetFaultParameterFaultExtended.java         | 12 ++--
 ...ACnetFaultParameterFaultExtendedParameters.java |  6 +-
 ...FaultParameterFaultExtendedParametersEntry.java |  3 +-
 ...meterFaultExtendedParametersEntryBitString.java |  2 +-
 ...rameterFaultExtendedParametersEntryBoolean.java |  2 +-
 ...aultExtendedParametersEntryCharacterString.java |  2 +-
 ...tParameterFaultExtendedParametersEntryDate.java |  2 +-
 ...arameterFaultExtendedParametersEntryDouble.java |  2 +-
 ...eterFaultExtendedParametersEntryEnumerated.java |  2 +-
 ...rameterFaultExtendedParametersEntryInteger.java |  2 +-
 ...tParameterFaultExtendedParametersEntryNull.java |  2 +-
 ...ultExtendedParametersEntryObjectidentifier.java |  2 +-
 ...terFaultExtendedParametersEntryOctetString.java |  2 +-
 ...tParameterFaultExtendedParametersEntryReal.java |  2 +-
 ...meterFaultExtendedParametersEntryReference.java |  2 +-
 ...tParameterFaultExtendedParametersEntryTime.java |  2 +-
 ...ameterFaultExtendedParametersEntryUnsigned.java |  2 +-
 .../BACnetFaultParameterFaultLifeSafety.java       | 10 ++-
 ...tParameterFaultLifeSafetyListOfFaultValues.java |  6 +-
 .../readwrite/BACnetFaultParameterFaultListed.java |  8 +--
 .../BACnetFaultParameterFaultOutOfRange.java       | 10 ++-
 ...aultParameterFaultOutOfRangeMaxNormalValue.java |  7 +-
 ...rameterFaultOutOfRangeMaxNormalValueDouble.java |  2 +-
 ...ameterFaultOutOfRangeMaxNormalValueInteger.java |  2 +-
 ...ParameterFaultOutOfRangeMaxNormalValueReal.java |  2 +-
 ...meterFaultOutOfRangeMaxNormalValueUnsigned.java |  2 +-
 ...aultParameterFaultOutOfRangeMinNormalValue.java |  7 +-
 ...rameterFaultOutOfRangeMinNormalValueDouble.java |  2 +-
 ...ameterFaultOutOfRangeMinNormalValueInteger.java |  2 +-
 ...ParameterFaultOutOfRangeMinNormalValueReal.java |  2 +-
 ...meterFaultOutOfRangeMinNormalValueUnsigned.java |  2 +-
 .../readwrite/BACnetFaultParameterFaultState.java  |  8 +--
 ...tFaultParameterFaultStateListOfFaultValues.java |  7 +-
 .../BACnetFaultParameterFaultStatusFlags.java      |  8 +--
 .../readwrite/BACnetFaultParameterNone.java        |  2 +-
 .../bacnetip/readwrite/BACnetFaultTypeTagged.java  |  4 +-
 .../readwrite/BACnetFileAccessMethodTagged.java    |  4 +-
 .../readwrite/BACnetGroupChannelValue.java         |  8 +--
 .../readwrite/BACnetGroupChannelValueList.java     |  7 +-
 .../java/bacnetip/readwrite/BACnetHostAddress.java |  3 +-
 .../readwrite/BACnetHostAddressEnclosed.java       |  7 +-
 .../readwrite/BACnetHostAddressIpAddress.java      |  2 +-
 .../bacnetip/readwrite/BACnetHostAddressName.java  |  2 +-
 .../bacnetip/readwrite/BACnetHostAddressNull.java  |  2 +-
 .../java/bacnetip/readwrite/BACnetHostNPort.java   |  4 +-
 .../readwrite/BACnetHostNPortEnclosed.java         |  7 +-
 .../bacnetip/readwrite/BACnetIPModeTagged.java     |  4 +-
 .../bacnetip/readwrite/BACnetKeyIdentifier.java    |  4 +-
 .../readwrite/BACnetLandingCallStatus.java         |  7 +-
 .../readwrite/BACnetLandingCallStatusCommand.java  |  3 +-
 .../BACnetLandingCallStatusCommandDestination.java |  2 +-
 .../BACnetLandingCallStatusCommandDirection.java   |  2 +-
 .../readwrite/BACnetLandingDoorStatus.java         |  2 +-
 .../BACnetLandingDoorStatusLandingDoorsList.java   |  6 +-
 ...CnetLandingDoorStatusLandingDoorsListEntry.java |  4 +-
 .../readwrite/BACnetLifeSafetyModeTagged.java      |  4 +-
 .../readwrite/BACnetLifeSafetyOperationTagged.java |  4 +-
 .../readwrite/BACnetLifeSafetyStateTagged.java     |  4 +-
 .../bacnetip/readwrite/BACnetLiftCarCallList.java  |  2 +-
 .../readwrite/BACnetLiftCarCallListFloorList.java  |  6 +-
 .../readwrite/BACnetLiftCarDirectionTagged.java    |  4 +-
 .../readwrite/BACnetLiftCarDoorCommandTagged.java  |  4 +-
 .../readwrite/BACnetLiftCarDriveStatusTagged.java  |  4 +-
 .../readwrite/BACnetLiftCarModeTagged.java         |  4 +-
 .../bacnetip/readwrite/BACnetLiftFaultTagged.java  |  4 +-
 .../readwrite/BACnetLiftGroupModeTagged.java       |  4 +-
 .../bacnetip/readwrite/BACnetLightingCommand.java  | 12 ++--
 .../readwrite/BACnetLightingCommandEnclosed.java   |  7 +-
 .../readwrite/BACnetLightingInProgressTagged.java  |  4 +-
 .../readwrite/BACnetLightingOperationTagged.java   |  4 +-
 .../readwrite/BACnetLightingTransitionTagged.java  |  4 +-
 .../readwrite/BACnetLimitEnableTagged.java         |  6 +-
 .../bacnetip/readwrite/BACnetLockStatusTagged.java |  4 +-
 .../java/bacnetip/readwrite/BACnetLogData.java     |  7 +-
 .../bacnetip/readwrite/BACnetLogDataLogData.java   |  9 +--
 .../readwrite/BACnetLogDataLogDataEntry.java       |  3 +-
 .../BACnetLogDataLogDataEntryAnyValue.java         |  2 +-
 .../BACnetLogDataLogDataEntryBitStringValue.java   |  2 +-
 .../BACnetLogDataLogDataEntryBooleanValue.java     |  2 +-
 .../BACnetLogDataLogDataEntryEnumeratedValue.java  |  2 +-
 .../BACnetLogDataLogDataEntryFailure.java          |  3 +-
 .../BACnetLogDataLogDataEntryIntegerValue.java     |  2 +-
 .../BACnetLogDataLogDataEntryNullValue.java        |  2 +-
 .../BACnetLogDataLogDataEntryRealValue.java        |  2 +-
 .../BACnetLogDataLogDataEntryUnsignedValue.java    |  2 +-
 .../readwrite/BACnetLogDataLogDataTimeChange.java  |  2 +-
 .../bacnetip/readwrite/BACnetLogDataLogStatus.java |  2 +-
 .../readwrite/BACnetLogMultipleRecord.java         |  5 +-
 .../java/bacnetip/readwrite/BACnetLogRecord.java   |  6 +-
 .../readwrite/BACnetLogRecordLogDatum.java         |  7 +-
 .../readwrite/BACnetLogRecordLogDatumAnyValue.java |  2 +-
 .../BACnetLogRecordLogDatumBitStringValue.java     |  2 +-
 .../BACnetLogRecordLogDatumBooleanValue.java       |  2 +-
 .../BACnetLogRecordLogDatumEnumeratedValue.java    |  2 +-
 .../readwrite/BACnetLogRecordLogDatumFailure.java  |  3 +-
 .../BACnetLogRecordLogDatumIntegerValue.java       |  2 +-
 .../BACnetLogRecordLogDatumLogStatus.java          |  2 +-
 .../BACnetLogRecordLogDatumNullValue.java          |  2 +-
 .../BACnetLogRecordLogDatumRealValue.java          |  2 +-
 .../BACnetLogRecordLogDatumTimeChange.java         |  2 +-
 .../BACnetLogRecordLogDatumUnsignedValue.java      |  2 +-
 .../bacnetip/readwrite/BACnetLogStatusTagged.java  |  6 +-
 .../readwrite/BACnetLoggingTypeTagged.java         |  4 +-
 .../readwrite/BACnetMaintenanceTagged.java         |  4 +-
 .../java/bacnetip/readwrite/BACnetNameValue.java   |  4 +-
 .../readwrite/BACnetNameValueCollection.java       |  7 +-
 .../BACnetNetworkNumberQualityTagged.java          |  4 +-
 .../readwrite/BACnetNetworkPortCommandTagged.java  |  4 +-
 .../readwrite/BACnetNetworkSecurityPolicy.java     |  4 +-
 .../readwrite/BACnetNetworkTypeTagged.java         |  4 +-
 .../bacnetip/readwrite/BACnetNodeTypeTagged.java   |  4 +-
 .../readwrite/BACnetNotificationParameters.java    |  7 +-
 .../BACnetNotificationParametersAccessEvent.java   | 16 ++---
 .../BACnetNotificationParametersBufferReady.java   | 10 +--
 ...netNotificationParametersChangeOfBitString.java |  8 +--
 ...ificationParametersChangeOfCharacterString.java | 10 +--
 ...otificationParametersChangeOfDiscreteValue.java |  8 +--
 ...ionParametersChangeOfDiscreteValueNewValue.java |  7 +-
 ...metersChangeOfDiscreteValueNewValueBoolean.java |  2 +-
 ...angeOfDiscreteValueNewValueCharacterString.java |  2 +-
 ...etersChangeOfDiscreteValueNewValueDatetime.java |  2 +-
 ...ersChangeOfDiscreteValueNewValueEnumerated.java |  2 +-
 ...metersChangeOfDiscreteValueNewValueInteger.java |  2 +-
 ...ngeOfDiscreteValueNewValueObjectidentifier.java |  2 +-
 ...tersChangeOfDiscreteValueNewValueOctetDate.java |  2 +-
 ...rsChangeOfDiscreteValueNewValueOctetString.java |  2 +-
 ...tersChangeOfDiscreteValueNewValueOctetTime.java |  2 +-
 ...etersChangeOfDiscreteValueNewValueUnsigned.java |  2 +-
 ...etNotificationParametersChangeOfLifeSafety.java | 12 ++--
 ...tNotificationParametersChangeOfReliability.java | 10 +--
 .../BACnetNotificationParametersChangeOfState.java |  8 +--
 ...tNotificationParametersChangeOfStatusFlags.java |  8 +--
 .../BACnetNotificationParametersChangeOfTimer.java | 16 ++---
 .../BACnetNotificationParametersChangeOfValue.java |  8 +--
 ...otificationParametersChangeOfValueNewValue.java |  7 +-
 ...ParametersChangeOfValueNewValueChangedBits.java |  2 +-
 ...arametersChangeOfValueNewValueChangedValue.java |  2 +-
 ...BACnetNotificationParametersCommandFailure.java | 10 +--
 ...CnetNotificationParametersComplexEventType.java |  2 +-
 ...CnetNotificationParametersDoubleOutOfRange.java | 12 ++--
 .../BACnetNotificationParametersExtended.java      | 10 +--
 ...etNotificationParametersExtendedParameters.java | 35 +++++-----
 .../BACnetNotificationParametersFloatingLimit.java | 12 ++--
 .../BACnetNotificationParametersOutOfRange.java    | 12 ++--
 ...CnetNotificationParametersSignedOutOfRange.java | 12 ++--
 ...etNotificationParametersUnsignedOutOfRange.java | 12 ++--
 .../BACnetNotificationParametersUnsignedRange.java | 10 +--
 .../bacnetip/readwrite/BACnetNotifyTypeTagged.java |  4 +-
 .../readwrite/BACnetObjectPropertyReference.java   |  6 +-
 .../BACnetObjectPropertyReferenceEnclosed.java     |  7 +-
 .../bacnetip/readwrite/BACnetObjectTypeTagged.java |  4 +-
 .../BACnetObjectTypesSupportedTagged.java          |  6 +-
 .../java/bacnetip/readwrite/BACnetOpeningTag.java  |  4 +-
 .../bacnetip/readwrite/BACnetOptionalBinaryPV.java |  3 +-
 .../readwrite/BACnetOptionalBinaryPVNull.java      |  2 +-
 .../readwrite/BACnetOptionalBinaryPVValue.java     |  2 +-
 .../readwrite/BACnetOptionalCharacterString.java   |  3 +-
 .../BACnetOptionalCharacterStringNull.java         |  2 +-
 .../BACnetOptionalCharacterStringValue.java        |  2 +-
 .../bacnetip/readwrite/BACnetOptionalREAL.java     |  3 +-
 .../bacnetip/readwrite/BACnetOptionalREALNull.java |  2 +-
 .../readwrite/BACnetOptionalREALValue.java         |  2 +-
 .../bacnetip/readwrite/BACnetOptionalUnsigned.java |  3 +-
 .../readwrite/BACnetOptionalUnsignedNull.java      |  2 +-
 .../readwrite/BACnetOptionalUnsignedValue.java     |  2 +-
 .../bacnetip/readwrite/BACnetPolarityTagged.java   |  4 +-
 .../bacnetip/readwrite/BACnetPortPermission.java   |  4 +-
 .../java/bacnetip/readwrite/BACnetPrescale.java    |  4 +-
 .../bacnetip/readwrite/BACnetPriorityArray.java    |  4 +-
 .../bacnetip/readwrite/BACnetPriorityValue.java    |  3 +-
 .../readwrite/BACnetPriorityValueBitString.java    |  2 +-
 .../readwrite/BACnetPriorityValueBoolean.java      |  2 +-
 .../BACnetPriorityValueCharacterString.java        |  2 +-
 .../BACnetPriorityValueConstructedValue.java       |  2 +-
 .../readwrite/BACnetPriorityValueDate.java         |  2 +-
 .../readwrite/BACnetPriorityValueDateTime.java     |  2 +-
 .../readwrite/BACnetPriorityValueDouble.java       |  2 +-
 .../readwrite/BACnetPriorityValueEnumerated.java   |  2 +-
 .../readwrite/BACnetPriorityValueInteger.java      |  2 +-
 .../readwrite/BACnetPriorityValueNull.java         |  2 +-
 .../BACnetPriorityValueObjectidentifier.java       |  2 +-
 .../readwrite/BACnetPriorityValueOctetString.java  |  2 +-
 .../readwrite/BACnetPriorityValueReal.java         |  2 +-
 .../readwrite/BACnetPriorityValueTime.java         |  2 +-
 .../readwrite/BACnetPriorityValueUnsigned.java     |  2 +-
 .../readwrite/BACnetProcessIdSelection.java        |  3 +-
 .../readwrite/BACnetProcessIdSelectionNull.java    |  2 +-
 .../readwrite/BACnetProcessIdSelectionValue.java   |  2 +-
 .../readwrite/BACnetProgramErrorTagged.java        |  4 +-
 .../readwrite/BACnetProgramRequestTagged.java      |  4 +-
 .../readwrite/BACnetProgramStateTagged.java        |  4 +-
 .../readwrite/BACnetPropertyAccessResult.java      | 10 +--
 .../BACnetPropertyAccessResultAccessResult.java    |  3 +-
 ...ccessResultAccessResultPropertyAccessError.java |  3 +-
 ...pertyAccessResultAccessResultPropertyValue.java |  2 +-
 .../readwrite/BACnetPropertyIdentifierTagged.java  |  4 +-
 .../readwrite/BACnetPropertyReference.java         |  4 +-
 .../readwrite/BACnetPropertyReferenceEnclosed.java |  7 +-
 .../BACnetPropertyStateActionUnknown.java          |  2 +-
 .../bacnetip/readwrite/BACnetPropertyStates.java   |  3 +-
 ...ACnetPropertyStatesAccessCredentialDisable.java |  2 +-
 ...ropertyStatesAccessCredentialDisableReason.java |  2 +-
 .../readwrite/BACnetPropertyStatesAccessEvent.java |  2 +-
 .../readwrite/BACnetPropertyStatesAction.java      |  2 +-
 .../BACnetPropertyStatesAuthenticationStatus.java  |  2 +-
 .../readwrite/BACnetPropertyStatesBackupState.java |  2 +-
 .../BACnetPropertyStatesBacnetIpMode.java          |  2 +-
 .../BACnetPropertyStatesBinaryLightningValue.java  |  2 +-
 .../readwrite/BACnetPropertyStatesBinaryValue.java |  2 +-
 .../readwrite/BACnetPropertyStatesBoolean.java     |  2 +-
 .../BACnetPropertyStatesDoorAlarmState.java        |  2 +-
 .../BACnetPropertyStatesDoorSecuredStatus.java     |  2 +-
 .../readwrite/BACnetPropertyStatesDoorStatus.java  |  2 +-
 .../readwrite/BACnetPropertyStatesDoorValue.java   |  2 +-
 .../readwrite/BACnetPropertyStatesEnclosed.java    |  7 +-
 .../BACnetPropertyStatesEscalatorFault.java        |  2 +-
 .../BACnetPropertyStatesEscalatorMode.java         |  2 +-
 ...tPropertyStatesEscalatorOperationDirection.java |  2 +-
 .../readwrite/BACnetPropertyStatesEventType.java   |  2 +-
 .../BACnetPropertyStatesExtendedValue.java         |  2 +-
 .../BACnetPropertyStatesFileAccessMethod.java      |  2 +-
 .../BACnetPropertyStatesIntegerValue.java          |  2 +-
 .../BACnetPropertyStatesLifeSafetyMode.java        |  2 +-
 .../BACnetPropertyStatesLifeSafetyOperations.java  |  2 +-
 .../BACnetPropertyStatesLifeSafetyState.java       |  2 +-
 .../BACnetPropertyStatesLiftCarDirection.java      |  2 +-
 .../BACnetPropertyStatesLiftCarDoorCommand.java    |  2 +-
 .../BACnetPropertyStatesLiftCarDriveStatus.java    |  2 +-
 .../readwrite/BACnetPropertyStatesLiftCarMode.java |  2 +-
 .../readwrite/BACnetPropertyStatesLiftFault.java   |  2 +-
 .../BACnetPropertyStatesLiftGroupMode.java         |  2 +-
 .../BACnetPropertyStatesLightningInProgress.java   |  2 +-
 .../BACnetPropertyStatesLightningOperation.java    |  2 +-
 .../BACnetPropertyStatesLightningTransition.java   |  2 +-
 .../readwrite/BACnetPropertyStatesLockStatus.java  |  2 +-
 .../readwrite/BACnetPropertyStatesMaintenance.java |  2 +-
 .../BACnetPropertyStatesNetworkNumberQuality.java  |  2 +-
 .../BACnetPropertyStatesNetworkPortCommand.java    |  2 +-
 .../readwrite/BACnetPropertyStatesNetworkType.java |  2 +-
 .../readwrite/BACnetPropertyStatesNodeType.java    |  2 +-
 .../readwrite/BACnetPropertyStatesNotifyType.java  |  2 +-
 .../readwrite/BACnetPropertyStatesPolarity.java    |  2 +-
 .../BACnetPropertyStatesProgramChange.java         |  2 +-
 .../BACnetPropertyStatesProtocolLevel.java         |  2 +-
 .../BACnetPropertyStatesReasonForHalt.java         |  2 +-
 .../readwrite/BACnetPropertyStatesReliability.java |  2 +-
 .../BACnetPropertyStatesRestartReason.java         |  2 +-
 .../BACnetPropertyStatesSecurityLevel.java         |  2 +-
 .../readwrite/BACnetPropertyStatesShedState.java   |  2 +-
 .../BACnetPropertyStatesSilencedState.java         |  2 +-
 .../readwrite/BACnetPropertyStatesState.java       |  2 +-
 .../BACnetPropertyStatesSystemStatus.java          |  2 +-
 .../readwrite/BACnetPropertyStatesTimerState.java  |  2 +-
 .../BACnetPropertyStatesTimerTransition.java       |  2 +-
 .../readwrite/BACnetPropertyStatesUnits.java       |  2 +-
 .../readwrite/BACnetPropertyStatesWriteStatus.java |  2 +-
 .../BACnetPropertyStatesZoneOccupanyState.java     |  2 +-
 .../bacnetip/readwrite/BACnetPropertyValue.java    |  8 +--
 .../bacnetip/readwrite/BACnetPropertyValues.java   |  6 +-
 .../readwrite/BACnetPropertyWriteDefinition.java   |  8 +--
 .../readwrite/BACnetProtocolLevelTagged.java       |  4 +-
 .../readwrite/BACnetReadAccessProperty.java        |  6 +-
 .../BACnetReadAccessPropertyReadResult.java        |  8 +--
 .../bacnetip/readwrite/BACnetReadAccessResult.java |  4 +-
 .../BACnetReadAccessResultListOfResults.java       |  6 +-
 .../readwrite/BACnetReadAccessSpecification.java   | 11 ++--
 .../java/bacnetip/readwrite/BACnetRecipient.java   |  3 +-
 .../bacnetip/readwrite/BACnetRecipientAddress.java |  2 +-
 .../bacnetip/readwrite/BACnetRecipientDevice.java  |  2 +-
 .../readwrite/BACnetRecipientEnclosed.java         |  8 +--
 .../bacnetip/readwrite/BACnetRecipientProcess.java |  4 +-
 .../readwrite/BACnetRecipientProcessEnclosed.java  |  7 +-
 .../readwrite/BACnetRelationshipTagged.java        |  4 +-
 .../readwrite/BACnetReliabilityTagged.java         |  4 +-
 .../readwrite/BACnetRestartReasonTagged.java       |  4 +-
 .../readwrite/BACnetResultFlagsTagged.java         |  6 +-
 .../java/bacnetip/readwrite/BACnetRouterEntry.java |  8 +--
 .../readwrite/BACnetRouterEntryStatusTagged.java   |  4 +-
 .../plc4x/java/bacnetip/readwrite/BACnetScale.java |  3 +-
 .../bacnetip/readwrite/BACnetScaleFloatScale.java  |  2 +-
 .../readwrite/BACnetScaleIntegerScale.java         |  2 +-
 .../bacnetip/readwrite/BACnetSecurityKeySet.java   |  8 +--
 .../readwrite/BACnetSecurityKeySetKeyIds.java      |  7 +-
 .../readwrite/BACnetSecurityLevelTagged.java       |  4 +-
 .../readwrite/BACnetSecurityPolicyTagged.java      |  4 +-
 .../readwrite/BACnetSegmentationTagged.java        |  4 +-
 .../readwrite/BACnetServiceAckAtomicReadFile.java  |  4 +-
 .../BACnetServiceAckAtomicReadFileRecord.java      |  6 +-
 .../BACnetServiceAckAtomicReadFileStream.java      |  4 +-
 ...CnetServiceAckAtomicReadFileStreamOrRecord.java |  7 +-
 .../readwrite/BACnetServiceAckAtomicWriteFile.java |  2 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.java  |  6 +-
 .../readwrite/BACnetServiceAckCreateObject.java    |  2 +-
 .../readwrite/BACnetServiceAckGetAlarmSummary.java |  6 +-
 .../BACnetServiceAckGetEnrollmentSummary.java      | 10 +--
 .../BACnetServiceAckGetEventInformation.java       |  4 +-
 .../readwrite/BACnetServiceAckReadProperty.java    |  8 +--
 .../BACnetServiceAckReadPropertyMultiple.java      |  3 +-
 .../readwrite/BACnetServiceAckReadRange.java       | 14 ++--
 .../bacnetip/readwrite/BACnetServiceAckVTData.java |  6 +-
 .../bacnetip/readwrite/BACnetServiceAckVTOpen.java |  2 +-
 .../readwrite/BACnetServicesSupportedTagged.java   |  6 +-
 .../readwrite/BACnetSetpointReference.java         |  2 +-
 .../java/bacnetip/readwrite/BACnetShedLevel.java   |  3 +-
 .../bacnetip/readwrite/BACnetShedLevelAmount.java  |  2 +-
 .../bacnetip/readwrite/BACnetShedLevelLevel.java   |  2 +-
 .../bacnetip/readwrite/BACnetShedLevelPercent.java |  2 +-
 .../bacnetip/readwrite/BACnetShedStateTagged.java  |  4 +-
 .../readwrite/BACnetSilencedStateTagged.java       |  4 +-
 .../bacnetip/readwrite/BACnetSpecialEvent.java     |  7 +-
 .../BACnetSpecialEventListOfTimeValues.java        |  7 +-
 .../readwrite/BACnetSpecialEventPeriod.java        |  3 +-
 .../BACnetSpecialEventPeriodCalendarEntry.java     |  2 +-
 .../BACnetSpecialEventPeriodCalendarReference.java |  2 +-
 .../readwrite/BACnetStatusFlagsTagged.java         |  6 +-
 .../java/bacnetip/readwrite/BACnetTimeStamp.java   |  3 +-
 .../readwrite/BACnetTimeStampDateTime.java         |  2 +-
 .../readwrite/BACnetTimeStampEnclosed.java         |  8 +--
 .../readwrite/BACnetTimeStampSequence.java         |  2 +-
 .../bacnetip/readwrite/BACnetTimeStampTime.java    |  2 +-
 .../readwrite/BACnetTimeStampsEnclosed.java        |  7 +-
 .../java/bacnetip/readwrite/BACnetTimeValue.java   |  4 +-
 .../readwrite/BACnetTimerStateChangeValue.java     |  3 +-
 .../BACnetTimerStateChangeValueBitString.java      |  2 +-
 .../BACnetTimerStateChangeValueBoolean.java        |  2 +-
 ...BACnetTimerStateChangeValueCharacterString.java |  2 +-
 ...ACnetTimerStateChangeValueConstructedValue.java |  2 +-
 .../readwrite/BACnetTimerStateChangeValueDate.java |  2 +-
 .../BACnetTimerStateChangeValueDateTime.java       |  2 +-
 .../BACnetTimerStateChangeValueDouble.java         |  2 +-
 .../BACnetTimerStateChangeValueEnumerated.java     |  2 +-
 .../BACnetTimerStateChangeValueInteger.java        |  2 +-
 ...BACnetTimerStateChangeValueLightingCommand.java |  2 +-
 .../BACnetTimerStateChangeValueNoValue.java        |  2 +-
 .../readwrite/BACnetTimerStateChangeValueNull.java |  2 +-
 ...ACnetTimerStateChangeValueObjectidentifier.java |  2 +-
 .../BACnetTimerStateChangeValueOctetString.java    |  2 +-
 .../readwrite/BACnetTimerStateChangeValueReal.java |  2 +-
 .../readwrite/BACnetTimerStateChangeValueTime.java |  2 +-
 .../BACnetTimerStateChangeValueUnsigned.java       |  2 +-
 .../bacnetip/readwrite/BACnetTimerStateTagged.java |  4 +-
 .../readwrite/BACnetTimerTransitionTagged.java     |  4 +-
 .../BACnetUnconfirmedServiceChoiceTagged.java      |  4 +-
 .../BACnetUnconfirmedServiceRequestIAm.java        |  8 +--
 .../BACnetUnconfirmedServiceRequestIHave.java      |  6 +-
 ...confirmedServiceRequestTimeSynchronization.java |  4 +-
 ...firmedServiceRequestUTCTimeSynchronization.java |  4 +-
 ...edServiceRequestUnconfirmedCOVNotification.java | 10 +--
 ...eRequestUnconfirmedCOVNotificationMultiple.java | 10 +--
 ...ServiceRequestUnconfirmedEventNotification.java | 26 ++++----
 ...edServiceRequestUnconfirmedPrivateTransfer.java |  6 +-
 ...firmedServiceRequestUnconfirmedTextMessage.java |  8 +--
 .../BACnetUnconfirmedServiceRequestWhoHas.java     |  6 +-
 ...ACnetUnconfirmedServiceRequestWhoHasObject.java |  3 +-
 ...firmedServiceRequestWhoHasObjectIdentifier.java |  2 +-
 ...tUnconfirmedServiceRequestWhoHasObjectName.java |  2 +-
 .../BACnetUnconfirmedServiceRequestWhoIs.java      |  4 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.java |  8 +--
 .../java/bacnetip/readwrite/BACnetVMACEntry.java   |  4 +-
 .../bacnetip/readwrite/BACnetVTClassTagged.java    |  4 +-
 .../java/bacnetip/readwrite/BACnetVTSession.java   |  7 +-
 .../java/bacnetip/readwrite/BACnetValueSource.java |  3 +-
 .../readwrite/BACnetValueSourceAddress.java        |  2 +-
 .../bacnetip/readwrite/BACnetValueSourceNone.java  |  2 +-
 .../readwrite/BACnetValueSourceObject.java         |  2 +-
 .../bacnetip/readwrite/BACnetVendorIdTagged.java   |  4 +-
 .../bacnetip/readwrite/BACnetWeekNDayTagged.java   |  4 +-
 .../readwrite/BACnetWriteAccessSpecification.java  | 10 ++-
 .../readwrite/BACnetWriteStatusTagged.java         |  4 +-
 .../BVLCDistributeBroadcastToNetwork.java          |  3 +-
 .../java/bacnetip/readwrite/BVLCForwardedNPDU.java |  2 +-
 .../readwrite/BVLCOriginalBroadcastNPDU.java       |  3 +-
 .../readwrite/BVLCOriginalUnicastNPDU.java         |  3 +-
 .../BVLCReadBroadcastDistributionTableAck.java     |  2 +-
 .../readwrite/BVLCReadForeignDeviceTableAck.java   |  3 +-
 .../bacnetip/readwrite/BVLCResultCodeTagged.java   |  4 +-
 .../BVLCWriteBroadcastDistributionTable.java       |  2 +-
 .../bacnetip/readwrite/ChangeListAddError.java     |  5 +-
 .../bacnetip/readwrite/ChangeListRemoveError.java  |  5 +-
 .../ConfirmedEventNotificationRequest.java         | 26 ++++----
 .../readwrite/ConfirmedPrivateTransferError.java   |  9 ++-
 .../java/bacnetip/readwrite/CreateObjectError.java |  5 +-
 .../plc4x/java/bacnetip/readwrite/Error.java       |  4 +-
 .../java/bacnetip/readwrite/ErrorClassTagged.java  |  4 +-
 .../java/bacnetip/readwrite/ErrorCodeTagged.java   |  4 +-
 .../java/bacnetip/readwrite/ErrorEnclosed.java     |  8 +--
 .../bacnetip/readwrite/ListOfCovNotifications.java | 10 ++-
 .../readwrite/ListOfCovNotificationsList.java      |  7 +-
 .../readwrite/ListOfCovNotificationsValue.java     |  8 +--
 .../readwrite/NLMInitializeRoutingTable.java       |  2 +-
 .../readwrite/NLMInitializeRoutingTableAck.java    |  2 +-
 .../java/bacnetip/readwrite/NLMSetMasterKey.java   |  3 +-
 .../readwrite/NLMUpdateKeyDistributionKey.java     |  3 +-
 .../bacnetip/readwrite/NLMUpdateKeyUpdate.java     |  9 +--
 .../apache/plc4x/java/bacnetip/readwrite/NPDU.java |  7 +-
 .../readwrite/NPDUNetworkPriorityTagged.java       |  4 +-
 .../readwrite/SecurityResponseCodeTagged.java      |  4 +-
 .../SubscribeCOVPropertyMultipleError.java         |  5 +-
 ...opertyMultipleErrorFirstFailedSubscription.java | 11 ++--
 .../java/bacnetip/readwrite/VTCloseError.java      |  5 +-
 .../VTCloseErrorListOfVTSessionIdentifiers.java    |  6 +-
 .../readwrite/WritePropertyMultipleError.java      |  5 +-
 .../AirConditioningDataHumidityScheduleEntry.java  | 14 ++--
 .../AirConditioningDataHvacScheduleEntry.java      | 15 ++---
 ...ConditioningDataSetHumidityLowerGuardLimit.java |  9 +--
 ...AirConditioningDataSetHumiditySetbackLimit.java |  9 +--
 ...ConditioningDataSetHumidityUpperGuardLimit.java |  9 +--
 .../AirConditioningDataSetHvacLowerGuardLimit.java | 10 +--
 .../AirConditioningDataSetHvacSetbackLimit.java    | 10 +--
 .../AirConditioningDataSetHvacUpperGuardLimit.java | 10 +--
 .../AirConditioningDataSetPlantHumidityLevel.java  | 13 ++--
 .../AirConditioningDataSetPlantHvacLevel.java      | 14 ++--
 .../AirConditioningDataSetZoneHumidityMode.java    | 13 ++--
 .../AirConditioningDataSetZoneHvacMode.java        | 14 ++--
 .../readwrite/AirConditioningDataZoneHumidity.java |  6 +-
 ...AirConditioningDataZoneHumidityPlantStatus.java |  6 +-
 .../AirConditioningDataZoneHvacPlantStatus.java    |  7 +-
 .../AirConditioningDataZoneTemperature.java        |  7 +-
 .../apache/plc4x/java/cbus/readwrite/CALData.java  |  2 +-
 .../java/cbus/readwrite/CALDataIdentifyReply.java  |  2 +-
 .../plc4x/java/cbus/readwrite/CALDataReply.java    |  2 +-
 .../plc4x/java/cbus/readwrite/CALDataStatus.java   |  2 +-
 .../java/cbus/readwrite/CALDataStatusExtended.java |  5 +-
 .../plc4x/java/cbus/readwrite/CALDataWrite.java    |  2 +-
 .../apache/plc4x/java/cbus/readwrite/CALReply.java |  2 +-
 .../plc4x/java/cbus/readwrite/CALReplyLong.java    |  9 ++-
 .../plc4x/java/cbus/readwrite/CBusCommand.java     |  3 +-
 .../readwrite/CBusCommandPointToMultiPoint.java    |  2 +-
 .../cbus/readwrite/CBusCommandPointToPoint.java    |  2 +-
 .../CBusCommandPointToPointToMultiPoint.java       |  2 +-
 .../java/cbus/readwrite/CBusMessageToClient.java   |  2 +-
 .../java/cbus/readwrite/CBusMessageToServer.java   |  2 +-
 .../CBusPointToMultiPointCommandNormal.java        |  2 +-
 .../CBusPointToMultiPointCommandStatus.java        |  4 +-
 .../cbus/readwrite/CBusPointToPointCommand.java    |  2 +-
 .../readwrite/CBusPointToPointCommandDirect.java   |  3 +-
 .../readwrite/CBusPointToPointCommandIndirect.java | 10 +--
 .../CBusPointToPointToMultiPointCommand.java       |  7 +-
 .../CBusPointToPointToMultiPointCommandNormal.java |  2 +-
 .../CBusPointToPointToMultiPointCommandStatus.java |  4 +-
 .../plc4x/java/cbus/readwrite/Confirmation.java    |  7 +-
 .../java/cbus/readwrite/EncodedReplyCALReply.java  |  2 +-
 .../cbus/readwrite/ErrorReportingDataGeneric.java  |  3 +-
 .../readwrite/ErrorReportingSystemCategory.java    |  2 +-
 .../IdentifyReplyCommandLogicalAssignment.java     |  3 +-
 .../IdentifyReplyCommandOutputUnitSummary.java     |  3 +-
 .../InterfaceOptions1PowerUpSettings.java          |  3 +-
 .../java/cbus/readwrite/LightingDataLabel.java     |  3 +-
 .../readwrite/MonitoredSALLongFormSmartMode.java   |  8 +--
 .../java/cbus/readwrite/MonitoredSALReply.java     |  2 +-
 .../readwrite/MonitoredSALShortFormBasicMode.java  |  2 +-
 .../plc4x/java/cbus/readwrite/NetworkRoute.java    |  4 +-
 .../java/cbus/readwrite/ParameterChangeReply.java  |  3 +-
 .../ParameterValueApplicationAddress1.java         |  4 +-
 .../ParameterValueApplicationAddress2.java         |  4 +-
 .../ParameterValueCustomManufacturer.java          |  2 +-
 .../cbus/readwrite/ParameterValueCustomTypes.java  |  3 +-
 .../readwrite/ParameterValueInterfaceOptions1.java |  4 +-
 ...meterValueInterfaceOptions1PowerUpSettings.java |  2 +-
 .../readwrite/ParameterValueInterfaceOptions2.java |  4 +-
 .../readwrite/ParameterValueInterfaceOptions3.java |  4 +-
 .../cbus/readwrite/ParameterValueSerialNumber.java |  3 +-
 .../plc4x/java/cbus/readwrite/PowerUpReply.java    |  3 +-
 .../plc4x/java/cbus/readwrite/ReplyNetwork.java    |  6 +-
 .../readwrite/ReplyOrConfirmationConfirmation.java |  5 +-
 .../cbus/readwrite/ReplyOrConfirmationReply.java   |  5 +-
 .../apache/plc4x/java/cbus/readwrite/Request.java  |  3 +-
 .../plc4x/java/cbus/readwrite/RequestCommand.java  |  4 +-
 .../cbus/readwrite/RequestDirectCommandAccess.java |  4 +-
 .../plc4x/java/cbus/readwrite/RequestObsolete.java |  4 +-
 .../apache/plc4x/java/cbus/readwrite/SALData.java  |  2 +-
 .../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 +-
 .../plc4x/java/cbus/readwrite/SALDataHeating.java  |  3 +-
 .../java/cbus/readwrite/SALDataHvacActuator.java   |  2 +-
 .../cbus/readwrite/SALDataIrrigationControl.java   |  2 +-
 .../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     |  2 +-
 .../plc4x/java/cbus/readwrite/SALDataSecurity.java |  3 +-
 .../SALDataTelephonyStatusAndControl.java          |  4 +-
 .../readwrite/SALDataTemperatureBroadcast.java     |  3 +-
 .../java/cbus/readwrite/SALDataTriggerControl.java |  3 +-
 .../java/cbus/readwrite/SALDataVentilation.java    |  3 +-
 .../cbus/readwrite/SecurityDataStatusReport1.java  | 14 ++--
 .../cbus/readwrite/SecurityDataStatusReport2.java  |  4 +-
 .../readwrite/SecurityDataSystemArmedDisarmed.java |  4 +-
 .../cbus/readwrite/TriggerControlDataLabel.java    |  3 +-
 .../plc4x/java/canopen/readwrite/CANOpenFrame.java |  2 +-
 .../plc4x/java/canopen/readwrite/CANOpenMPDO.java  |  3 +-
 .../java/canopen/readwrite/CANOpenPDOPayload.java  |  4 +-
 .../java/canopen/readwrite/CANOpenSDORequest.java  |  2 +-
 .../java/canopen/readwrite/CANOpenSDOResponse.java |  2 +-
 .../readwrite/CANOpenTimeSynchronization.java      |  3 +-
 .../plc4x/java/canopen/readwrite/SDOAbort.java     |  3 +-
 .../java/canopen/readwrite/SDOAbortRequest.java    |  4 +-
 .../java/canopen/readwrite/SDOAbortResponse.java   |  4 +-
 .../java/canopen/readwrite/SDOBlockRequest.java    |  3 +-
 .../java/canopen/readwrite/SDOBlockResponse.java   |  3 +-
 .../readwrite/SDOInitiateDownloadRequest.java      |  5 +-
 .../readwrite/SDOInitiateDownloadResponse.java     |  3 +-
 .../readwrite/SDOInitiateUploadRequest.java        |  3 +-
 .../readwrite/SDOInitiateUploadResponse.java       |  5 +-
 .../plc4x/java/canopen/readwrite/SDOSegment.java   |  3 +-
 .../java/eip/readwrite/CipConnectedResponse.java   |  3 +-
 .../CipConnectionManagerCloseRequest.java          |  8 +--
 .../eip/readwrite/CipConnectionManagerRequest.java | 18 ++----
 .../apache/plc4x/java/eip/readwrite/CipRRData.java |  4 +-
 .../plc4x/java/eip/readwrite/CipReadResponse.java  |  2 +-
 .../java/eip/readwrite/CipUnconnectedRequest.java  |  8 +--
 .../java/eip/readwrite/ConnectedDataItem.java      |  2 +-
 .../plc4x/java/eip/readwrite/DataSegment.java      |  4 +-
 .../eip/readwrite/EipListIdentityResponse.java     |  3 +-
 .../java/eip/readwrite/GetAttributeAllRequest.java |  6 +-
 .../eip/readwrite/GetAttributeAllResponse.java     |  2 +-
 .../java/eip/readwrite/ListServicesResponse.java   |  4 +-
 .../plc4x/java/eip/readwrite/LogicalSegment.java   |  3 +-
 .../java/eip/readwrite/MultipleServiceRequest.java |  2 +-
 .../plc4x/java/eip/readwrite/PortSegment.java      |  4 +-
 .../plc4x/java/eip/readwrite/SendUnitData.java     |  4 +-
 .../apache/plc4x/java/eip/readwrite/Services.java  |  2 +-
 .../java/eip/readwrite/UnConnectedDataItem.java    |  2 +-
 .../firmata/readwrite/FirmataCommandSysex.java     |  2 +-
 .../firmata/readwrite/FirmataMessageCommand.java   |  2 +-
 .../java/iec608705104/readwrite/APDUIFormat.java   |  2 +-
 .../plc4x/java/iec608705104/readwrite/APDUs.java   |  2 +-
 .../plc4x/java/iec608705104/readwrite/ASDU.java    |  2 +-
 .../java/iec608705104/readwrite/DoubleCommand.java |  3 +-
 ...bjectWithSevenByteTime_BITSTRING_OF_32_BIT.java |  9 +--
 ...WithSevenByteTime_DOUBLE_POINT_INFORMATION.java |  6 +-
 ...evenByteTime_EVENT_OF_PROTECTION_EQUIPMENT.java |  6 +-
 ...nObjectWithSevenByteTime_INTEGRATED_TOTALS.java |  6 +-
 ...enByteTime_MEASURED_VALUE_NORMALISED_VALUE.java |  9 +--
 ...hSevenByteTime_MEASURED_VALUE_SCALED_VALUE.java |  8 +--
 ...MEASURED_VALUE_SHORT_FLOATING_POINT_NUMBER.java |  6 +-
 ...IRCUIT_INFORMATION_OF_PROTECTION_EQUIPMENT.java | 11 ++--
 ...ACKED_START_EVENTS_OF_PROTECTION_EQUIPMENT.java | 11 ++--
 ...WithSevenByteTime_SINGLE_POINT_INFORMATION.java |  6 +-
 ...ithSevenByteTime_STEP_POSITION_INFORMATION.java |  8 +--
 ...ObjectWithTreeByteTime_BITSTRING_OF_32_BIT.java |  9 +--
 ...tWithTreeByteTime_DOUBLE_POINT_INFORMATION.java |  6 +-
 ...TreeByteTime_EVENT_OF_PROTECTION_EQUIPMENT.java |  6 +-
 ...onObjectWithTreeByteTime_INTEGRATED_TOTALS.java |  6 +-
 ...eeByteTime_MEASURED_VALUE_NORMALIZED_VALUE.java |  9 +--
 ...thTreeByteTime_MEASURED_VALUE_SCALED_VALUE.java |  8 +--
 ...MEASURED_VALUE_SHORT_FLOATING_POINT_NUMBER.java |  6 +-
 ...IRCUIT_INFORMATION_OF_PROTECTION_EQUIPMENT.java | 11 ++--
 ...ACKED_START_EVENTS_OF_PROTECTION_EQUIPMENT.java | 11 ++--
 ...tWithTreeByteTime_SINGLE_POINT_INFORMATION.java |  6 +-
 ...WithTreeByteTime_STEP_POSITION_INFORMATION.java |  8 +--
 ...tionObjectWithoutTime_ACK_FILE_ACK_SECTION.java |  6 +-
 ...ObjectWithoutTime_BITSTRING_32_BIT_COMMAND.java |  3 +-
 ...ationObjectWithoutTime_BITSTRING_OF_32_BIT.java |  6 +-
 ...RECTORY_SELECT_FILE_CALL_FILE_CALL_SECTION.java |  7 +-
 ...tWithoutTime_CLOCK_SYNCHRONISATION_COMMAND.java |  3 +-
 ...tWithoutTime_COUNTER_INTERROGATION_COMMAND.java |  2 +-
 ...bjectWithoutTime_DELAY_ACQUISITION_COMMAND.java |  3 +-
 .../InformationObjectWithoutTime_DIRECTORY.java    |  9 ++-
 ...nformationObjectWithoutTime_DOUBLE_COMMAND.java |  2 +-
 ...ObjectWithoutTime_DOUBLE_POINT_INFORMATION.java |  3 +-
 ...ionObjectWithoutTime_END_OF_INITIALISATION.java |  3 +-
 .../InformationObjectWithoutTime_FILE_READY.java   |  7 +-
 ...rmationObjectWithoutTime_INTEGRATED_TOTALS.java |  3 +-
 ...ionObjectWithoutTime_INTERROGATION_COMMAND.java |  3 +-
 ...bjectWithoutTime_LAST_SECTION_LAST_SEGMENT.java |  9 ++-
 ...ithoutTime_MEASURED_VALUE_NORMALISED_VALUE.java |  6 +-
 ...ORMALIZED_VALUE_WITHOUT_QUALITY_DESCRIPTOR.java |  3 +-
 ...ectWithoutTime_MEASURED_VALUE_SCALED_VALUE.java |  5 +-
 ...MEASURED_VALUE_SHORT_FLOATING_POINT_NUMBER.java |  3 +-
 ...T_INFORMATION_WITH_STATUS_CHANGE_DETECTION.java |  6 +-
 ...tionObjectWithoutTime_PARAMETER_ACTIVATION.java |  3 +-
 ...AMETER_OF_MEASURED_VALUES_NORMALIZED_VALUE.java |  5 +-
 ..._PARAMETER_OF_MEASURED_VALUES_SCALED_VALUE.java |  4 +-
 ...EASURED_VALUES_SHORT_FLOATING_POINT_NUMBER.java |  2 +-
 ...nObjectWithoutTime_REGULATING_STEP_COMMAND.java |  3 +-
 ...ionObjectWithoutTime_RESET_PROCESS_COMMAND.java |  3 +-
 ...InformationObjectWithoutTime_SECTION_READY.java |  9 ++-
 .../InformationObjectWithoutTime_SEGMENT.java      |  7 +-
 ...outTime_SET_POINT_COMMAND_NORMALISED_VALUE.java |  6 +-
 ...WithoutTime_SET_POINT_COMMAND_SCALED_VALUE.java |  5 +-
 ..._POINT_COMMAND_SHORT_FLOATING_POINT_NUMBER.java |  3 +-
 ...nformationObjectWithoutTime_SINGLE_COMMAND.java |  2 +-
 ...ObjectWithoutTime_SINGLE_POINT_INFORMATION.java |  3 +-
 ...bjectWithoutTime_STEP_POSITION_INFORMATION.java |  5 +-
 .../InformationObjectWithoutTime_TEST_COMMAND.java |  3 +-
 .../readwrite/RegulatingStepCommand.java           |  3 +-
 .../java/iec608705104/readwrite/SingleCommand.java |  3 +-
 .../knxnetip/readwrite/ApduControlContainer.java   |  3 +-
 .../java/knxnetip/readwrite/ApduDataContainer.java |  3 +-
 .../java/knxnetip/readwrite/ApduDataOther.java     |  2 +-
 ...CEMIAdditionalInformationRelativeTimestamp.java |  3 +-
 .../readwrite/ComObjectTableRealisationType1.java  |  2 +-
 .../readwrite/ComObjectTableRealisationType2.java  |  2 +-
 .../readwrite/ComObjectTableRealisationType6.java  |  2 +-
 .../java/knxnetip/readwrite/ConnectionRequest.java |  9 +--
 .../knxnetip/readwrite/ConnectionResponse.java     |  6 +-
 ...onnectionResponseDataBlockTunnelConnection.java |  3 +-
 .../knxnetip/readwrite/ConnectionStateRequest.java |  3 +-
 .../java/knxnetip/readwrite/DIBDeviceInfo.java     | 13 ++--
 .../knxnetip/readwrite/DIBSuppSvcFamilies.java     |  2 +-
 .../knxnetip/readwrite/DescriptionRequest.java     |  3 +-
 .../knxnetip/readwrite/DescriptionResponse.java    |  5 +-
 .../knxnetip/readwrite/DeviceConfigurationAck.java |  3 +-
 .../readwrite/DeviceConfigurationRequest.java      |  4 +-
 .../knxnetip/readwrite/DeviceDescriptorType2.java  | 12 ++--
 .../java/knxnetip/readwrite/DisconnectRequest.java |  3 +-
 .../knxnetip/readwrite/HPAIControlEndpoint.java    |  3 +-
 .../java/knxnetip/readwrite/HPAIDataEndpoint.java  |  3 +-
 .../knxnetip/readwrite/HPAIDiscoveryEndpoint.java  |  3 +-
 .../java/knxnetip/readwrite/KnxManufacturer.java   |  5 +-
 .../plc4x/java/knxnetip/readwrite/LBusmonInd.java  |  6 +-
 .../plc4x/java/knxnetip/readwrite/LDataCon.java    |  6 +-
 .../java/knxnetip/readwrite/LDataExtended.java     |  6 +-
 .../plc4x/java/knxnetip/readwrite/LDataInd.java    |  6 +-
 .../plc4x/java/knxnetip/readwrite/LDataReq.java    |  6 +-
 .../plc4x/java/knxnetip/readwrite/LPollData.java   |  3 +-
 .../java/knxnetip/readwrite/SearchRequest.java     |  3 +-
 .../java/knxnetip/readwrite/SearchResponse.java    |  8 +--
 .../java/knxnetip/readwrite/TunnelingRequest.java  |  5 +-
 .../java/knxnetip/readwrite/TunnelingResponse.java |  3 +-
 .../java/modbus/readwrite/ModbusAsciiADU.java      |  3 +-
 .../ModbusPDUReadDeviceIdentificationResponse.java |  3 +-
 .../readwrite/ModbusPDUReadFileRecordRequest.java  |  2 +-
 .../readwrite/ModbusPDUReadFileRecordResponse.java |  2 +-
 .../readwrite/ModbusPDUWriteFileRecordRequest.java |  2 +-
 .../ModbusPDUWriteFileRecordResponse.java          |  2 +-
 .../plc4x/java/modbus/readwrite/ModbusRtuADU.java  |  3 +-
 .../plc4x/java/modbus/readwrite/ModbusTcpADU.java  |  3 +-
 .../opcua/readwrite/ActivateSessionRequest.java    | 12 ++--
 .../opcua/readwrite/ActivateSessionResponse.java   | 11 ++--
 .../plc4x/java/opcua/readwrite/AddNodesItem.java   | 19 ++----
 .../java/opcua/readwrite/AddNodesRequest.java      |  4 +-
 .../java/opcua/readwrite/AddNodesResponse.java     |  7 +-
 .../plc4x/java/opcua/readwrite/AddNodesResult.java |  6 +-
 .../java/opcua/readwrite/AddReferencesItem.java    | 13 ++--
 .../java/opcua/readwrite/AddReferencesRequest.java |  4 +-
 .../opcua/readwrite/AddReferencesResponse.java     |  7 +-
 .../opcua/readwrite/AdditionalParametersType.java  |  2 +-
 .../java/opcua/readwrite/AliasNameDataType.java    |  7 +-
 .../plc4x/java/opcua/readwrite/Annotation.java     |  6 +-
 .../java/opcua/readwrite/AnnotationDataType.java   | 10 +--
 .../opcua/readwrite/ApplicationDescription.java    | 15 ++---
 .../plc4x/java/opcua/readwrite/Argument.java       | 11 +---
 .../java/opcua/readwrite/AxisInformation.java      |  8 +--
 .../java/opcua/readwrite/BitFieldDefinition.java   |  7 +-
 .../java/opcua/readwrite/BrowseDescription.java    |  7 +-
 .../java/opcua/readwrite/BrowseNextRequest.java    |  5 +-
 .../java/opcua/readwrite/BrowseNextResponse.java   |  7 +-
 .../plc4x/java/opcua/readwrite/BrowsePath.java     |  5 +-
 .../java/opcua/readwrite/BrowsePathResult.java     |  5 +-
 .../java/opcua/readwrite/BrowsePathTarget.java     |  4 +-
 .../plc4x/java/opcua/readwrite/BrowseRequest.java  |  6 +-
 .../plc4x/java/opcua/readwrite/BrowseResponse.java |  7 +-
 .../plc4x/java/opcua/readwrite/BrowseResult.java   |  8 +--
 .../plc4x/java/opcua/readwrite/BuildInfo.java      | 14 ++--
 .../java/opcua/readwrite/ByteStringNodeId.java     |  4 +-
 .../java/opcua/readwrite/CallMethodRequest.java    | 10 +--
 .../java/opcua/readwrite/CallMethodResult.java     | 10 ++-
 .../plc4x/java/opcua/readwrite/CallRequest.java    |  4 +-
 .../plc4x/java/opcua/readwrite/CallResponse.java   |  7 +-
 .../plc4x/java/opcua/readwrite/CancelRequest.java  |  2 +-
 .../plc4x/java/opcua/readwrite/CancelResponse.java |  2 +-
 .../opcua/readwrite/CloseSecureChannelRequest.java |  2 +-
 .../readwrite/CloseSecureChannelResponse.java      |  2 +-
 .../java/opcua/readwrite/CloseSessionRequest.java  |  2 +-
 .../java/opcua/readwrite/CloseSessionResponse.java |  2 +-
 .../plc4x/java/opcua/readwrite/ContentFilter.java  |  2 +-
 .../java/opcua/readwrite/ContentFilterElement.java |  2 +-
 .../readwrite/ContentFilterElementResult.java      |  8 +--
 .../java/opcua/readwrite/ContentFilterResult.java  |  5 +-
 .../readwrite/CreateMonitoredItemsRequest.java     |  4 +-
 .../readwrite/CreateMonitoredItemsResponse.java    |  7 +-
 .../java/opcua/readwrite/CreateSessionRequest.java | 20 ++----
 .../opcua/readwrite/CreateSessionResponse.java     | 22 +++----
 .../opcua/readwrite/CreateSubscriptionRequest.java |  2 +-
 .../readwrite/CreateSubscriptionResponse.java      |  2 +-
 .../java/opcua/readwrite/CurrencyUnitType.java     |  7 +-
 .../opcua/readwrite/DataChangeNotification.java    |  5 +-
 .../opcua/readwrite/DataSetWriterDataType.java     | 12 ++--
 .../java/opcua/readwrite/DataTypeDescription.java  |  7 +-
 .../java/opcua/readwrite/DataTypeSchemaHeader.java |  8 +--
 .../plc4x/java/opcua/readwrite/DataValue.java      |  4 +-
 .../readwrite/DeleteMonitoredItemsRequest.java     |  2 +-
 .../readwrite/DeleteMonitoredItemsResponse.java    |  7 +-
 .../java/opcua/readwrite/DeleteNodesItem.java      |  4 +-
 .../java/opcua/readwrite/DeleteNodesRequest.java   |  4 +-
 .../java/opcua/readwrite/DeleteNodesResponse.java  |  7 +-
 .../java/opcua/readwrite/DeleteReferencesItem.java | 10 +--
 .../opcua/readwrite/DeleteReferencesRequest.java   |  4 +-
 .../opcua/readwrite/DeleteReferencesResponse.java  |  7 +-
 .../readwrite/DeleteSubscriptionsRequest.java      |  2 +-
 .../readwrite/DeleteSubscriptionsResponse.java     |  7 +-
 .../plc4x/java/opcua/readwrite/DiagnosticInfo.java |  7 +-
 .../plc4x/java/opcua/readwrite/EUInformation.java  | 11 +---
 .../java/opcua/readwrite/EndpointDescription.java  | 14 ++--
 .../plc4x/java/opcua/readwrite/EndpointType.java   |  7 +-
 .../opcua/readwrite/EndpointUrlListDataType.java   |  2 +-
 .../plc4x/java/opcua/readwrite/EnumValueType.java  |  8 +--
 .../java/opcua/readwrite/EphemeralKeyType.java     |  8 +--
 .../plc4x/java/opcua/readwrite/EventFieldList.java |  2 +-
 .../opcua/readwrite/EventNotificationList.java     |  2 +-
 .../plc4x/java/opcua/readwrite/ExpandedNodeId.java |  6 +-
 .../java/opcua/readwrite/ExtensiblePayload.java    |  2 +-
 .../java/opcua/readwrite/ExtensionObject.java      |  9 +--
 .../plc4x/java/opcua/readwrite/FieldMetaData.java  | 16 ++---
 .../java/opcua/readwrite/FieldTargetDataType.java  | 14 ++--
 .../readwrite/FindServersOnNetworkRequest.java     |  4 +-
 .../readwrite/FindServersOnNetworkResponse.java    |  4 +-
 .../java/opcua/readwrite/FindServersRequest.java   |  9 ++-
 .../java/opcua/readwrite/FindServersResponse.java  |  4 +-
 .../opcua/readwrite/GenericAttributeValue.java     |  4 +-
 .../java/opcua/readwrite/GetEndpointsRequest.java  |  9 ++-
 .../java/opcua/readwrite/GetEndpointsResponse.java |  4 +-
 .../plc4x/java/opcua/readwrite/GuidNodeId.java     |  3 +-
 .../plc4x/java/opcua/readwrite/HistoryData.java    |  2 +-
 .../plc4x/java/opcua/readwrite/HistoryEvent.java   |  2 +-
 .../opcua/readwrite/HistoryEventFieldList.java     |  2 +-
 .../java/opcua/readwrite/HistoryReadRequest.java   |  6 +-
 .../java/opcua/readwrite/HistoryReadResponse.java  |  7 +-
 .../java/opcua/readwrite/HistoryReadResult.java    |  8 +--
 .../java/opcua/readwrite/HistoryReadValueId.java   | 14 ++--
 .../java/opcua/readwrite/HistoryUpdateRequest.java |  4 +-
 .../opcua/readwrite/HistoryUpdateResponse.java     |  7 +-
 .../java/opcua/readwrite/HistoryUpdateResult.java  |  8 +--
 .../opcua/readwrite/IdentityMappingRuleType.java   |  3 +-
 .../java/opcua/readwrite/IssuedIdentityToken.java  |  6 +-
 .../plc4x/java/opcua/readwrite/KeyValuePair.java   |  8 +--
 .../plc4x/java/opcua/readwrite/LocalizedText.java  |  4 +-
 .../readwrite/ModelChangeStructureDataType.java    |  7 +-
 .../java/opcua/readwrite/ModificationInfo.java     |  3 +-
 .../readwrite/ModifyMonitoredItemsRequest.java     |  4 +-
 .../readwrite/ModifyMonitoredItemsResponse.java    |  7 +-
 .../opcua/readwrite/ModifySubscriptionRequest.java |  2 +-
 .../readwrite/ModifySubscriptionResponse.java      |  2 +-
 .../readwrite/MonitoredItemCreateRequest.java      |  4 +-
 .../opcua/readwrite/MonitoredItemCreateResult.java |  5 +-
 .../readwrite/MonitoredItemModifyRequest.java      |  2 +-
 .../opcua/readwrite/MonitoredItemModifyResult.java |  5 +-
 .../opcua/readwrite/MonitoredItemNotification.java |  4 +-
 .../java/opcua/readwrite/MonitoringParameters.java |  2 +-
 .../opcua/readwrite/NetworkAddressDataType.java    |  2 +-
 .../java/opcua/readwrite/NetworkGroupDataType.java |  5 +-
 .../plc4x/java/opcua/readwrite/NodeAttributes.java |  8 +--
 .../apache/plc4x/java/opcua/readwrite/NodeId.java  |  4 +-
 .../java/opcua/readwrite/NodeIdByteString.java     |  4 +-
 .../plc4x/java/opcua/readwrite/NodeIdString.java   |  4 +-
 .../plc4x/java/opcua/readwrite/NodeReference.java  |  9 +--
 .../java/opcua/readwrite/NodeTypeDescription.java  |  5 +-
 .../java/opcua/readwrite/NotificationMessage.java  |  2 +-
 .../plc4x/java/opcua/readwrite/OpcuaAPU.java       |  3 +-
 .../opcua/readwrite/OpcuaAcknowledgeResponse.java  |  4 +-
 .../java/opcua/readwrite/OpcuaCloseRequest.java    |  5 +-
 .../java/opcua/readwrite/OpcuaHelloRequest.java    |  7 +-
 .../java/opcua/readwrite/OpcuaMessageError.java    |  3 +-
 .../java/opcua/readwrite/OpcuaMessageRequest.java  |  5 +-
 .../java/opcua/readwrite/OpcuaMessageResponse.java |  5 +-
 .../java/opcua/readwrite/OpcuaOpenRequest.java     |  4 +-
 .../java/opcua/readwrite/OpcuaOpenResponse.java    |  4 +-
 .../opcua/readwrite/OpenChannelMessageRequest.java |  9 +--
 .../readwrite/OpenChannelMessageResponse.java      |  8 +--
 .../opcua/readwrite/OpenSecureChannelRequest.java  |  6 +-
 .../opcua/readwrite/OpenSecureChannelResponse.java |  8 +--
 .../plc4x/java/opcua/readwrite/OptionSet.java      |  8 +--
 .../plc4x/java/opcua/readwrite/ParsingResult.java  |  8 +--
 .../apache/plc4x/java/opcua/readwrite/Payload.java |  3 +-
 .../opcua/readwrite/PortableQualifiedName.java     |  6 +-
 .../opcua/readwrite/PriorityMappingEntryType.java  |  6 +-
 .../readwrite/ProgramDiagnostic2DataType.java      | 21 +++---
 .../opcua/readwrite/ProgramDiagnosticDataType.java | 17 ++---
 .../readwrite/PubSubConfigurationDataType.java     |  4 +-
 .../opcua/readwrite/PubSubConnectionDataType.java  | 18 +++---
 .../java/opcua/readwrite/PubSubGroupDataType.java  | 10 ++-
 .../readwrite/PubSubKeyPushTargetDataType.java     | 16 ++---
 .../plc4x/java/opcua/readwrite/PublishRequest.java |  4 +-
 .../java/opcua/readwrite/PublishResponse.java      |  9 ++-
 .../opcua/readwrite/PublishedVariableDataType.java | 11 ++--
 .../plc4x/java/opcua/readwrite/QualifiedName.java  |  3 +-
 .../java/opcua/readwrite/QueryDataDescription.java |  5 +-
 .../plc4x/java/opcua/readwrite/QueryDataSet.java   | 11 +---
 .../java/opcua/readwrite/QueryFirstRequest.java    |  8 +--
 .../java/opcua/readwrite/QueryFirstResponse.java   | 14 ++--
 .../java/opcua/readwrite/QueryNextRequest.java     |  5 +-
 .../java/opcua/readwrite/QueryNextResponse.java    |  7 +-
 .../plc4x/java/opcua/readwrite/ReadRequest.java    |  4 +-
 .../plc4x/java/opcua/readwrite/ReadResponse.java   |  7 +-
 .../plc4x/java/opcua/readwrite/ReadValueId.java    | 11 +---
 .../opcua/readwrite/RedundantServerDataType.java   |  3 +-
 .../java/opcua/readwrite/ReferenceDescription.java | 18 ++----
 .../readwrite/ReferenceDescriptionDataType.java    | 10 +--
 .../readwrite/ReferenceListEntryDataType.java      |  7 +-
 .../java/opcua/readwrite/RegisterNodesRequest.java |  4 +-
 .../opcua/readwrite/RegisterNodesResponse.java     |  4 +-
 .../opcua/readwrite/RegisterServer2Request.java    |  6 +-
 .../opcua/readwrite/RegisterServer2Response.java   |  7 +-
 .../opcua/readwrite/RegisterServerRequest.java     |  4 +-
 .../opcua/readwrite/RegisterServerResponse.java    |  2 +-
 .../java/opcua/readwrite/RegisteredServer.java     | 14 ++--
 .../plc4x/java/opcua/readwrite/RelativePath.java   |  2 +-
 .../java/opcua/readwrite/RelativePathElement.java  |  7 +-
 .../java/opcua/readwrite/RepublishRequest.java     |  2 +-
 .../java/opcua/readwrite/RepublishResponse.java    |  4 +-
 .../plc4x/java/opcua/readwrite/RequestHeader.java  |  8 +--
 .../plc4x/java/opcua/readwrite/ResponseHeader.java | 10 ++-
 .../java/opcua/readwrite/RolePermissionType.java   |  4 +-
 .../opcua/readwrite/SecurityGroupDataType.java     | 14 ++--
 .../readwrite/SemanticChangeStructureDataType.java |  7 +-
 .../java/opcua/readwrite/ServerOnNetwork.java      |  8 +--
 .../java/opcua/readwrite/ServerStatusDataType.java |  6 +-
 .../plc4x/java/opcua/readwrite/ServiceFault.java   |  2 +-
 .../readwrite/SessionDiagnosticsDataType.java      | 75 ++++++++++------------
 .../SessionSecurityDiagnosticsDataType.java        | 20 +++---
 .../readwrite/SessionlessInvokeRequestType.java    |  6 +-
 .../readwrite/SessionlessInvokeResponseType.java   |  4 +-
 .../opcua/readwrite/SetMonitoringModeRequest.java  |  2 +-
 .../opcua/readwrite/SetMonitoringModeResponse.java |  7 +-
 .../opcua/readwrite/SetPublishingModeRequest.java  |  2 +-
 .../opcua/readwrite/SetPublishingModeResponse.java |  7 +-
 .../java/opcua/readwrite/SetTriggeringRequest.java |  2 +-
 .../opcua/readwrite/SetTriggeringResponse.java     | 12 ++--
 .../plc4x/java/opcua/readwrite/SignatureData.java  |  7 +-
 .../opcua/readwrite/SignedSoftwareCertificate.java |  7 +-
 .../opcua/readwrite/StatusChangeNotification.java  |  6 +-
 .../plc4x/java/opcua/readwrite/StatusResult.java   |  6 +-
 .../plc4x/java/opcua/readwrite/StringNodeId.java   |  3 +-
 .../plc4x/java/opcua/readwrite/StructureField.java | 11 +---
 .../readwrite/SubscriptionDiagnosticsDataType.java |  4 +-
 .../java/opcua/readwrite/TransactionErrorType.java | 12 +---
 .../plc4x/java/opcua/readwrite/TransferResult.java |  3 +-
 .../readwrite/TransferSubscriptionsRequest.java    |  2 +-
 .../readwrite/TransferSubscriptionsResponse.java   |  7 +-
 .../TranslateBrowsePathsToNodeIdsRequest.java      |  4 +-
 .../TranslateBrowsePathsToNodeIdsResponse.java     |  7 +-
 .../java/opcua/readwrite/TrustListDataType.java    | 12 ++--
 .../opcua/readwrite/UnregisterNodesRequest.java    |  4 +-
 .../opcua/readwrite/UnregisterNodesResponse.java   |  2 +-
 .../java/opcua/readwrite/UserIdentityToken.java    |  5 +-
 .../opcua/readwrite/UserManagementDataType.java    |  6 +-
 .../opcua/readwrite/UserNameIdentityToken.java     |  9 +--
 .../java/opcua/readwrite/UserTokenPolicy.java      | 10 ++-
 .../java/opcua/readwrite/VariantByteString.java    |  3 +-
 .../java/opcua/readwrite/VariantDataValue.java     |  2 +-
 .../opcua/readwrite/VariantDiagnosticInfo.java     |  3 +-
 .../opcua/readwrite/VariantExpandedNodeId.java     |  3 +-
 .../opcua/readwrite/VariantExtensionObject.java    |  2 +-
 .../plc4x/java/opcua/readwrite/VariantGuid.java    |  2 +-
 .../java/opcua/readwrite/VariantLocalizedText.java |  2 +-
 .../plc4x/java/opcua/readwrite/VariantNodeId.java  |  2 +-
 .../java/opcua/readwrite/VariantQualifiedName.java |  2 +-
 .../java/opcua/readwrite/VariantStatusCode.java    |  2 +-
 .../plc4x/java/opcua/readwrite/VariantString.java  |  2 +-
 .../plc4x/java/opcua/readwrite/VariantVariant.java |  2 +-
 .../java/opcua/readwrite/VariantXmlElement.java    |  2 +-
 .../java/opcua/readwrite/ViewDescription.java      |  4 +-
 .../plc4x/java/opcua/readwrite/WriteRequest.java   |  4 +-
 .../plc4x/java/opcua/readwrite/WriteResponse.java  |  7 +-
 .../plc4x/java/opcua/readwrite/WriteValue.java     | 11 +---
 .../java/opcua/readwrite/X509IdentityToken.java    |  3 +-
 ...penProtocolMessageDynamicPsetSelectionRev1.java |  3 +-
 ...tocolMessageLastTighteningResultDataRev998.java |  2 +-
 ...otocolMessageResultTracesCurvePlotDataRev1.java |  3 +-
 .../java/plc4x/readwrite/Plc4xReadRequest.java     |  3 +-
 .../java/plc4x/readwrite/Plc4xReadResponse.java    |  3 +-
 .../java/plc4x/readwrite/Plc4xTagRequest.java      |  4 +-
 .../java/plc4x/readwrite/Plc4xTagResponse.java     |  4 +-
 .../java/plc4x/readwrite/Plc4xTagValueRequest.java |  6 +-
 .../plc4x/readwrite/Plc4xTagValueResponse.java     |  6 +-
 .../java/plc4x/readwrite/Plc4xWriteRequest.java    |  3 +-
 .../java/plc4x/readwrite/Plc4xWriteResponse.java   |  3 +-
 .../plc4x/java/profinet/readwrite/CheckPeers.java  |  4 +-
 .../java/profinet/readwrite/DceRpc_Packet.java     | 11 ++--
 .../java/profinet/readwrite/Ethernet_Frame.java    |  7 +-
 .../readwrite/Ethernet_FramePayload_IPv4.java      | 10 +--
 .../readwrite/Ethernet_FramePayload_LLDP.java      |  4 +-
 .../readwrite/Ethernet_FramePayload_PnDcp.java     |  4 +-
 .../Ethernet_FramePayload_VirtualLan.java          |  3 +-
 .../profinet/readwrite/IODReadRequestHeader.java   |  4 +-
 .../profinet/readwrite/IODReadResponseHeader.java  |  2 +-
 .../profinet/readwrite/IODWriteRequestHeader.java  |  4 +-
 .../profinet/readwrite/IODWriteResponseHeader.java |  2 +-
 .../java/profinet/readwrite/PDPortDataCheck.java   |  2 +-
 .../java/profinet/readwrite/PcDcp_GetSet_Pdu.java  |  2 +-
 .../profinet/readwrite/PcDcp_Pdu_DelayReq.java     |  2 +-
 .../PnDcp_Block_DevicePropertiesDeviceOptions.java |  3 +-
 .../readwrite/PnDcp_Block_IpMacAddress.java        |  2 +-
 .../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java  |  2 +-
 .../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java  |  2 +-
 .../readwrite/PnDcp_Pdu_IdentifyRes_Payload.java   |  3 +-
 .../profinet/readwrite/PnIoCm_Block_ArReq.java     |  7 +-
 .../profinet/readwrite/PnIoCm_Block_ArRes.java     |  4 +-
 .../profinet/readwrite/PnIoCm_Block_ArServer.java  |  3 +-
 .../PnIoCm_Block_ExpectedSubmoduleReq.java         |  2 +-
 .../profinet/readwrite/PnIoCm_Block_IoCrReq.java   |  5 +-
 .../readwrite/PnIoCm_Block_ModuleDiff.java         |  3 +-
 .../PnIoCm_Block_RealIdentificationData.java       |  3 +-
 .../PnIoCm_Control_Request_ApplicationReady.java   |  2 +-
 .../PnIoCm_Control_Request_ParameterEnd.java       |  2 +-
 .../PnIoCm_Control_Response_ApplicationReady.java  |  2 +-
 .../PnIoCm_Control_Response_ParameterEnd.java      |  2 +-
 .../readwrite/PnIoCm_DataUnitDataObject.java       |  3 +-
 .../PnIoCm_ExpectedSubmoduleBlockReqApi.java       |  3 +-
 .../profinet/readwrite/PnIoCm_IoCrBlockReqApi.java |  5 +-
 .../readwrite/PnIoCm_ModuleDiffBlockApi.java       |  3 +-
 .../PnIoCm_ModuleDiffBlockApi_Module.java          |  2 +-
 .../java/profinet/readwrite/PnIoCm_Packet_Req.java |  2 +-
 .../java/profinet/readwrite/PnIoCm_Packet_Res.java |  2 +-
 .../readwrite/PnIoCm_RealIdentificationApi.java    |  2 +-
 .../PnIoCm_RealIdentificationApi_Slot.java         |  2 +-
 .../profinet/readwrite/TlvManagementAddress.java   |  3 +-
 .../profinet/readwrite/TlvOrgSpecificIeee8023.java |  3 +-
 .../profinet/readwrite/TlvOrgSpecificProfibus.java |  3 +-
 .../readwrite/TlvOrganizationSpecific.java         |  3 +-
 .../readwrite/TlvProfibusSubTypeChassisMac.java    |  3 +-
 .../readwrite/TlvProfibusSubTypeMrpPortStatus.java |  4 +-
 .../plc4x/java/profinet/readwrite/CheckPeers.java  |  4 +-
 .../java/profinet/readwrite/DceRpc_Packet.java     | 11 ++--
 .../java/profinet/readwrite/Ethernet_Frame.java    |  7 +-
 .../readwrite/Ethernet_FramePayload_IPv4.java      | 10 +--
 .../readwrite/Ethernet_FramePayload_LLDP.java      |  4 +-
 .../readwrite/Ethernet_FramePayload_PnDcp.java     |  4 +-
 .../Ethernet_FramePayload_VirtualLan.java          |  3 +-
 .../profinet/readwrite/IODReadRequestHeader.java   |  4 +-
 .../profinet/readwrite/IODReadResponseHeader.java  |  2 +-
 .../profinet/readwrite/IODWriteRequestHeader.java  |  4 +-
 .../profinet/readwrite/IODWriteResponseHeader.java |  2 +-
 .../java/profinet/readwrite/PDPortDataCheck.java   |  2 +-
 .../java/profinet/readwrite/PcDcp_GetSet_Pdu.java  |  2 +-
 .../profinet/readwrite/PcDcp_Pdu_DelayReq.java     |  2 +-
 .../PnDcp_Block_DevicePropertiesDeviceOptions.java |  3 +-
 .../readwrite/PnDcp_Block_IpMacAddress.java        |  2 +-
 .../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java  |  2 +-
 .../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java  |  2 +-
 .../readwrite/PnDcp_Pdu_IdentifyRes_Payload.java   |  3 +-
 .../profinet/readwrite/PnIoCm_Block_ArReq.java     |  7 +-
 .../profinet/readwrite/PnIoCm_Block_ArRes.java     |  4 +-
 .../profinet/readwrite/PnIoCm_Block_ArServer.java  |  3 +-
 .../PnIoCm_Block_ExpectedSubmoduleReq.java         |  2 +-
 .../profinet/readwrite/PnIoCm_Block_IoCrReq.java   |  5 +-
 .../readwrite/PnIoCm_Block_ModuleDiff.java         |  3 +-
 .../PnIoCm_Block_RealIdentificationData.java       |  3 +-
 .../PnIoCm_Control_Request_ApplicationReady.java   |  2 +-
 .../PnIoCm_Control_Request_ParameterEnd.java       |  2 +-
 .../PnIoCm_Control_Response_ApplicationReady.java  |  2 +-
 .../PnIoCm_Control_Response_ParameterEnd.java      |  2 +-
 .../readwrite/PnIoCm_DataUnitDataObject.java       |  3 +-
 .../PnIoCm_ExpectedSubmoduleBlockReqApi.java       |  3 +-
 .../profinet/readwrite/PnIoCm_IoCrBlockReqApi.java |  5 +-
 .../readwrite/PnIoCm_ModuleDiffBlockApi.java       |  3 +-
 .../PnIoCm_ModuleDiffBlockApi_Module.java          |  2 +-
 .../java/profinet/readwrite/PnIoCm_Packet_Req.java |  2 +-
 .../java/profinet/readwrite/PnIoCm_Packet_Res.java |  2 +-
 .../readwrite/PnIoCm_RealIdentificationApi.java    |  2 +-
 .../PnIoCm_RealIdentificationApi_Slot.java         |  2 +-
 .../profinet/readwrite/TlvManagementAddress.java   |  3 +-
 .../profinet/readwrite/TlvOrgSpecificIeee8023.java |  3 +-
 .../profinet/readwrite/TlvOrgSpecificProfibus.java |  3 +-
 .../readwrite/TlvOrganizationSpecific.java         |  3 +-
 .../readwrite/TlvProfibusSubTypeChassisMac.java    |  3 +-
 .../readwrite/TlvProfibusSubTypeMrpPortStatus.java |  4 +-
 .../java/s7/readwrite/Alarm8MessageQueryType.java  |  3 +-
 .../readwrite/AlarmMessageAckObjectPushType.java   |  6 +-
 .../java/s7/readwrite/AlarmMessageAckPushType.java |  6 +-
 .../java/s7/readwrite/AlarmMessageAckType.java     |  3 +-
 .../s7/readwrite/AlarmMessageObjectAckType.java    |  6 +-
 .../s7/readwrite/AlarmMessageObjectPushType.java   | 17 ++---
 .../s7/readwrite/AlarmMessageObjectQueryType.java  | 22 ++-----
 .../java/s7/readwrite/AlarmMessagePushType.java    |  6 +-
 .../java/s7/readwrite/AlarmMessageQueryType.java   |  3 +-
 .../apache/plc4x/java/s7/readwrite/COTPPacket.java |  4 +-
 .../s7/readwrite/CycServiceItemDbReadType.java     |  4 +-
 .../apache/plc4x/java/s7/readwrite/S7Message.java  |  4 +-
 .../s7/readwrite/S7ParameterReadVarRequest.java    |  3 +-
 .../java/s7/readwrite/S7ParameterUserData.java     |  3 +-
 .../s7/readwrite/S7ParameterWriteVarRequest.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     |  3 +-
 .../plc4x/java/s7/readwrite/S7PayloadUserData.java |  2 +-
 .../S7PayloadUserDataItemClkFResponse.java         |  3 +-
 .../S7PayloadUserDataItemClkResponse.java          |  3 +-
 .../S7PayloadUserDataItemClkSetRequest.java        |  3 +-
 ...loadUserDataItemCpuFunctionAlarmAckRequest.java |  3 +-
 ...yloadUserDataItemCpuFunctionReadSzlRequest.java |  4 +-
 ...UserDataItemCyclicServicesChangeDrivenPush.java |  3 +-
 ...yclicServicesChangeDrivenSubscribeResponse.java |  3 +-
 .../S7PayloadUserDataItemCyclicServicesPush.java   |  3 +-
 ...UserDataItemCyclicServicesSubscribeRequest.java |  3 +-
 ...serDataItemCyclicServicesSubscribeResponse.java |  3 +-
 .../s7/readwrite/S7PayloadWriteVarRequest.java     |  3 +-
 .../s7/readwrite/S7PayloadWriteVarResponse.java    |  3 +-
 .../S7VarRequestParameterItemAddress.java          |  3 +-
 .../apache/plc4x/java/s7/readwrite/TPKTPacket.java |  3 +-
 .../java/spi/codegen/io/DataReaderFactory.java     |  4 ++
 1837 files changed, 3128 insertions(+), 4458 deletions(-)

diff --git a/code-generation/language-cs/src/main/java/org/apache/plc4x/language/cs/CsLanguageTemplateHelper.java b/code-generation/language-cs/src/main/java/org/apache/plc4x/language/cs/CsLanguageTemplateHelper.java
index 9704012cf1..8a4f5f3195 100644
--- a/code-generation/language-cs/src/main/java/org/apache/plc4x/language/cs/CsLanguageTemplateHelper.java
+++ b/code-generation/language-cs/src/main/java/org/apache/plc4x/language/cs/CsLanguageTemplateHelper.java
@@ -379,7 +379,7 @@ public class CsLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                     .append(toParseExpression(null, argumentType, paramTerm, null))
                     .append(")");
             }
-            return "new DataReaderComplexDefault<>(() -> " + parserCallString + "IO.staticParse(readBuffer" + paramsString + "), readBuffer)";
+            return "readComplex(() -> " + parserCallString + "IO.staticParse(readBuffer" + paramsString + "), readBuffer)";
         } else {
             throw new IllegalStateException("What is this type? " + typeReference);
         }
diff --git a/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 8ec91c82ba..94a6a3df1b 100644
--- a/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -404,7 +404,7 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
                     .append(toParseExpression(null, argumentType, paramTerm, null))
                     .append(")");
             }
-            return "new DataReaderComplexDefault<>(() -> " + parserCallString + ".staticParse(readBuffer" + paramsString + "), readBuffer)";
+            return "readComplex(() -> " + parserCallString + ".staticParse(readBuffer" + paramsString + "), readBuffer)";
         } else {
             throw new IllegalStateException("What is this type? " + typeReference);
         }
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 62a899d63e..7c22e316bc 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
@@ -102,8 +102,7 @@ public class CIPEncapsulationReadRequest extends CIPEncapsulationPacket implemen
     DF1RequestMessage request =
         readSimpleField(
             "request",
-            new DataReaderComplexDefault<>(
-                () -> DF1RequestMessage.staticParse(readBuffer), readBuffer),
+            readComplex(() -> DF1RequestMessage.staticParse(readBuffer), readBuffer),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
     readBuffer.closeContext("CIPEncapsulationReadRequest");
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 e974a95053..6046c6f8df 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
@@ -102,7 +102,7 @@ public class CIPEncapsulationReadResponse extends CIPEncapsulationPacket impleme
     DF1ResponseMessage response =
         readSimpleField(
             "response",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> DF1ResponseMessage.staticParse(readBuffer, (int) (packetLen)), readBuffer),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
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 1200cfabcb..c4038175eb 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
@@ -97,9 +97,7 @@ public class DF1CommandRequestMessage extends DF1RequestMessage implements Messa
 
     DF1RequestCommand command =
         readSimpleField(
-            "command",
-            new DataReaderComplexDefault<>(
-                () -> DF1RequestCommand.staticParse(readBuffer), readBuffer));
+            "command", readComplex(() -> DF1RequestCommand.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("DF1CommandRequestMessage");
     // Create the instance
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 38b1989648..38fe3a6c04 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
@@ -214,7 +214,7 @@ public class AdsDiscovery implements Message {
     AmsNetId amsNetId =
         readSimpleField(
             "amsNetId",
-            new DataReaderComplexDefault<>(() -> AmsNetId.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AmsNetId.staticParse(readBuffer), readBuffer),
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
     AdsPortNumbers portNumber =
@@ -234,8 +234,7 @@ public class AdsDiscovery implements Message {
     List<AdsDiscoveryBlock> blocks =
         readCountArrayField(
             "blocks",
-            new DataReaderComplexDefault<>(
-                () -> AdsDiscoveryBlock.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsDiscoveryBlock.staticParse(readBuffer), readBuffer),
             numBlocks,
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
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 1ce6fc81ef..6759fdf9ab 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
@@ -111,8 +111,7 @@ public class AdsDiscoveryBlockAmsNetId extends AdsDiscoveryBlock implements Mess
 
     AmsNetId amsNetId =
         readSimpleField(
-            "amsNetId",
-            new DataReaderComplexDefault<>(() -> AmsNetId.staticParse(readBuffer), readBuffer));
+            "amsNetId", readComplex(() -> AmsNetId.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("AdsDiscoveryBlockAmsNetId");
     // Create the instance
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 cbacb4dce8..be5e833385 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
@@ -92,8 +92,7 @@ public class AdsDiscoveryBlockHostName extends AdsDiscoveryBlock implements Mess
 
     AmsString hostName =
         readSimpleField(
-            "hostName",
-            new DataReaderComplexDefault<>(() -> AmsString.staticParse(readBuffer), readBuffer));
+            "hostName", readComplex(() -> AmsString.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("AdsDiscoveryBlockHostName");
     // Create the instance
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 7f0fe50af2..cadde634dc 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
@@ -92,8 +92,7 @@ public class AdsDiscoveryBlockPassword extends AdsDiscoveryBlock implements Mess
 
     AmsString password =
         readSimpleField(
-            "password",
-            new DataReaderComplexDefault<>(() -> AmsString.staticParse(readBuffer), readBuffer));
+            "password", readComplex(() -> AmsString.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("AdsDiscoveryBlockPassword");
     // Create the instance
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 553c6fb1b2..ad79cdec82 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
@@ -92,8 +92,7 @@ public class AdsDiscoveryBlockRouteName extends AdsDiscoveryBlock implements Mes
 
     AmsString routeName =
         readSimpleField(
-            "routeName",
-            new DataReaderComplexDefault<>(() -> AmsString.staticParse(readBuffer), readBuffer));
+            "routeName", readComplex(() -> AmsString.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("AdsDiscoveryBlockRouteName");
     // Create the instance
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 dced49311c..d26cb6abd6 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
@@ -92,8 +92,7 @@ public class AdsDiscoveryBlockUserName extends AdsDiscoveryBlock implements Mess
 
     AmsString userName =
         readSimpleField(
-            "userName",
-            new DataReaderComplexDefault<>(() -> AmsString.staticParse(readBuffer), readBuffer));
+            "userName", readComplex(() -> AmsString.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("AdsDiscoveryBlockUserName");
     // Create the instance
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 8fce74edb4..40318cbbed 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
@@ -557,16 +557,14 @@ public class AdsDataTypeTableChildEntry implements Message {
     List<AdsDataTypeArrayInfo> arrayInfo =
         readCountArrayField(
             "arrayInfo",
-            new DataReaderComplexDefault<>(
-                () -> AdsDataTypeArrayInfo.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsDataTypeArrayInfo.staticParse(readBuffer), readBuffer),
             arrayDimensions,
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
     List<AdsDataTypeTableEntry> children =
         readCountArrayField(
             "children",
-            new DataReaderComplexDefault<>(
-                () -> AdsDataTypeTableEntry.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsDataTypeTableEntry.staticParse(readBuffer), readBuffer),
             numChildren,
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
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 01cc6afadf..d26185914a 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
@@ -556,16 +556,14 @@ public class AdsDataTypeTableEntry implements Message {
     List<AdsDataTypeArrayInfo> arrayInfo =
         readCountArrayField(
             "arrayInfo",
-            new DataReaderComplexDefault<>(
-                () -> AdsDataTypeArrayInfo.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsDataTypeArrayInfo.staticParse(readBuffer), readBuffer),
             arrayDimensions,
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
     List<AdsDataTypeTableChildEntry> children =
         readCountArrayField(
             "children",
-            new DataReaderComplexDefault<>(
-                () -> AdsDataTypeTableChildEntry.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsDataTypeTableChildEntry.staticParse(readBuffer), readBuffer),
             numChildren,
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
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 b5aa2fd4b5..1a44296532 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
@@ -139,8 +139,7 @@ public class AdsDeviceNotificationRequest extends AmsPacket implements Message {
     List<AdsStampHeader> adsStampHeaders =
         readCountArrayField(
             "adsStampHeaders",
-            new DataReaderComplexDefault<>(
-                () -> AdsStampHeader.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsStampHeader.staticParse(readBuffer), readBuffer),
             stamps);
 
     readBuffer.closeContext("AdsDeviceNotificationRequest");
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 4a0d96b9d6..ec3640bfb2 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
@@ -182,7 +182,7 @@ public class AdsReadWriteRequest extends AmsPacket implements Message {
     List<AdsMultiRequestItem> items =
         readCountArrayField(
             "items",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> AdsMultiRequestItem.staticParse(readBuffer, (long) (indexGroup)), readBuffer),
             (((((((indexGroup) == (61568))) || (((indexGroup) == (61569))))
                     || (((indexGroup) == (61570)))))
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 b29e355ff5..9c2ce59364 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
@@ -121,8 +121,7 @@ public class AdsStampHeader implements Message {
     List<AdsNotificationSample> adsNotificationSamples =
         readCountArrayField(
             "adsNotificationSamples",
-            new DataReaderComplexDefault<>(
-                () -> AdsNotificationSample.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AdsNotificationSample.staticParse(readBuffer), readBuffer),
             samples);
 
     readBuffer.closeContext("AdsStampHeader");
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 11637e7559..4612913f6c 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
@@ -284,15 +284,13 @@ public abstract class AmsPacket implements Message {
 
     AmsNetId targetAmsNetId =
         readSimpleField(
-            "targetAmsNetId",
-            new DataReaderComplexDefault<>(() -> AmsNetId.staticParse(readBuffer), readBuffer));
+            "targetAmsNetId", readComplex(() -> AmsNetId.staticParse(readBuffer), readBuffer));
 
     int targetAmsPort = readSimpleField("targetAmsPort", readUnsignedInt(readBuffer, 16));
 
     AmsNetId sourceAmsNetId =
         readSimpleField(
-            "sourceAmsNetId",
-            new DataReaderComplexDefault<>(() -> AmsNetId.staticParse(readBuffer), readBuffer));
+            "sourceAmsNetId", readComplex(() -> AmsNetId.staticParse(readBuffer), readBuffer));
 
     int sourceAmsPort = readSimpleField("sourceAmsPort", 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 abd9b39c80..cfc75889bf 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
@@ -173,8 +173,7 @@ public class AmsSerialFrame implements Message {
 
     AmsPacket userdata =
         readSimpleField(
-            "userdata",
-            new DataReaderComplexDefault<>(() -> AmsPacket.staticParse(readBuffer), readBuffer));
+            "userdata", readComplex(() -> AmsPacket.staticParse(readBuffer), readBuffer));
 
     int crc = readSimpleField("crc", 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 e9f42ecbf5..267ca991f1 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
@@ -124,7 +124,7 @@ public class AmsTCPPacket implements Message {
     AmsPacket userdata =
         readSimpleField(
             "userdata",
-            new DataReaderComplexDefault<>(() -> AmsPacket.staticParse(readBuffer), readBuffer),
+            readComplex(() -> AmsPacket.staticParse(readBuffer), readBuffer),
             WithOption.WithByteOrder(ByteOrder.LITTLE_ENDIAN));
 
     readBuffer.closeContext("AmsTCPPacket");
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 e709678f0c..390fb72ebf 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
@@ -142,7 +142,7 @@ public class APDUAbort extends APDU implements Message {
     BACnetAbortReasonTagged abortReason =
         readSimpleField(
             "abortReason",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetAbortReasonTagged.staticParse(readBuffer, (long) (1L)), readBuffer));
 
     readBuffer.closeContext("APDUAbort");
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 8da3de7dc1..55084be89d 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
@@ -269,7 +269,7 @@ public class APDUComplexAck extends APDU implements Message {
     BACnetServiceAck serviceAck =
         readOptionalField(
             "serviceAck",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetServiceAck.staticParse(
                         readBuffer, (long) ((apduLength) - (apduHeaderReduction))),
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 4218350d21..f517d9afab 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
@@ -340,7 +340,7 @@ public class APDUConfirmedRequest extends APDU implements Message {
     BACnetConfirmedServiceRequest serviceRequest =
         readOptionalField(
             "serviceRequest",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequest.staticParse(
                         readBuffer, (long) ((apduLength) - (apduHeaderReduction))),
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 93f1ba9124..6b04f0b242 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
@@ -154,7 +154,7 @@ public class APDUError extends APDU implements Message {
     BACnetError error =
         readSimpleField(
             "error",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetError.staticParse(
                         readBuffer, (BACnetConfirmedServiceChoice) (errorChoice)),
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 cbd61106eb..dadb311144 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
@@ -125,7 +125,7 @@ public class APDUReject extends APDU implements Message {
     BACnetRejectReasonTagged rejectReason =
         readSimpleField(
             "rejectReason",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetRejectReasonTagged.staticParse(readBuffer, (long) (1L)), readBuffer));
 
     readBuffer.closeContext("APDUReject");
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 c425be575e..32c70f1716 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
@@ -110,7 +110,7 @@ public class APDUUnconfirmedRequest extends APDU implements Message {
     BACnetUnconfirmedServiceRequest serviceRequest =
         readSimpleField(
             "serviceRequest",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetUnconfirmedServiceRequest.staticParse(
                         readBuffer, (int) ((apduLength) - (1))),
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 9c7bc53bcf..cccd6ddd0e 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
@@ -141,9 +141,7 @@ public class BACnetAccessAuthenticationFactorDisableTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 91afd24f97..73b68cc213 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
@@ -141,9 +141,7 @@ public class BACnetAccessCredentialDisableReasonTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 8a23025d77..a33dae6df4 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
@@ -140,9 +140,7 @@ public class BACnetAccessCredentialDisableTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 83f5fcdcab..0df4868be9 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
@@ -140,9 +140,7 @@ public class BACnetAccessEventTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 1a2e50af53..6b12c5b1af 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
@@ -109,9 +109,7 @@ public class BACnetAccessPassbackModeTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 71e1854c81..c87a217a0f 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
@@ -152,7 +152,7 @@ public class BACnetAccessRule implements Message {
     BACnetAccessRuleTimeRangeSpecifierTagged timeRangeSpecifier =
         readSimpleField(
             "timeRangeSpecifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessRuleTimeRangeSpecifierTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -161,7 +161,7 @@ public class BACnetAccessRule implements Message {
     BACnetDeviceObjectPropertyReferenceEnclosed timeRange =
         readOptionalField(
             "timeRange",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDeviceObjectPropertyReferenceEnclosed.staticParse(
                         readBuffer, (short) (1)),
@@ -171,7 +171,7 @@ public class BACnetAccessRule implements Message {
     BACnetAccessRuleLocationSpecifierTagged locationSpecifier =
         readSimpleField(
             "locationSpecifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessRuleLocationSpecifierTagged.staticParse(
                         readBuffer, (short) (2), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -180,7 +180,7 @@ public class BACnetAccessRule implements Message {
     BACnetDeviceObjectReferenceEnclosed location =
         readOptionalField(
             "location",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDeviceObjectReferenceEnclosed.staticParse(readBuffer, (short) (3)),
                 readBuffer),
             (locationSpecifier) != (null));
@@ -188,7 +188,7 @@ public class BACnetAccessRule implements Message {
     BACnetContextTagBoolean enable =
         readSimpleField(
             "enable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
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 795b1b0de3..ca054d7254 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
@@ -112,9 +112,7 @@ public class BACnetAccessRuleLocationSpecifierTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 8df6767339..34302ddd80 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
@@ -112,9 +112,7 @@ public class BACnetAccessRuleTimeRangeSpecifierTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 b34c8e60b3..6e9312bd79 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
@@ -85,7 +85,7 @@ public class BACnetAccessThreatLevel implements Message {
     BACnetApplicationTagUnsignedInteger threatLevel =
         readSimpleField(
             "threatLevel",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 e79252f03d..14565f685e 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
@@ -140,9 +140,7 @@ public class BACnetAccessUserTypeTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 f2b044e9c2..093ef187a0 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
@@ -140,9 +140,7 @@ public class BACnetAccessZoneOccupancyStateTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 a05f0d85d0..1c465b03ac 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
@@ -127,13 +127,13 @@ public class BACnetAccumulatorRecord implements Message {
     BACnetDateTimeEnclosed timestamp =
         readSimpleField(
             "timestamp",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDateTimeEnclosed.staticParse(readBuffer, (short) (0)), readBuffer));
 
     BACnetContextTagSignedInteger presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagSignedInteger)
                         BACnetContextTag.staticParse(
@@ -145,7 +145,7 @@ public class BACnetAccumulatorRecord implements Message {
     BACnetContextTagSignedInteger accumulatedValue =
         readSimpleField(
             "accumulatedValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagSignedInteger)
                         BACnetContextTag.staticParse(
@@ -157,7 +157,7 @@ public class BACnetAccumulatorRecord implements Message {
     BACnetAccumulatorRecordAccumulatorStatusTagged accumulatorStatus =
         readSimpleField(
             "accumulatorStatus",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccumulatorRecordAccumulatorStatusTagged.staticParse(
                         readBuffer, (short) (3), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
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 a2cafcaca3..666f5e8d33 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
@@ -112,9 +112,7 @@ public class BACnetAccumulatorRecordAccumulatorStatusTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 b5160e3f30..5988ceb02d 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
@@ -204,7 +204,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagObjectIdentifier deviceIdentifier =
         readOptionalField(
             "deviceIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -216,7 +216,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -228,7 +228,7 @@ public class BACnetActionCommand implements Message {
     BACnetPropertyIdentifierTagged propertyIdentifier =
         readSimpleField(
             "propertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyIdentifierTagged.staticParse(
                         readBuffer, (short) (2), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -237,7 +237,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagUnsignedInteger arrayIndex =
         readOptionalField(
             "arrayIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -249,7 +249,7 @@ public class BACnetActionCommand implements Message {
     BACnetConstructedData propertyValue =
         readOptionalField(
             "propertyValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConstructedData.staticParse(
                         readBuffer,
@@ -263,7 +263,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagUnsignedInteger priority =
         readOptionalField(
             "priority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -275,7 +275,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagBoolean postDelay =
         readOptionalField(
             "postDelay",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -285,7 +285,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagBoolean quitOnFailure =
         readSimpleField(
             "quitOnFailure",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -295,7 +295,7 @@ public class BACnetActionCommand implements Message {
     BACnetContextTagBoolean writeSuccessful =
         readSimpleField(
             "writeSuccessful",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
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 1381074873..959dca0914 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
@@ -118,14 +118,12 @@ public class BACnetActionList implements Message {
     BACnetOpeningTag innerOpeningTag =
         readSimpleField(
             "innerOpeningTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOpeningTag.staticParse(readBuffer, (short) (0)), readBuffer));
+            readComplex(() -> BACnetOpeningTag.staticParse(readBuffer, (short) (0)), readBuffer));
 
     List<BACnetActionCommand> action =
         readTerminatedArrayField(
             "action",
-            new DataReaderComplexDefault<>(
-                () -> BACnetActionCommand.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetActionCommand.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
@@ -134,8 +132,7 @@ public class BACnetActionList implements Message {
     BACnetClosingTag innerClosingTag =
         readSimpleField(
             "innerClosingTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetClosingTag.staticParse(readBuffer, (short) (0)), readBuffer));
+            readComplex(() -> BACnetClosingTag.staticParse(readBuffer, (short) (0)), readBuffer));
 
     readBuffer.closeContext("BACnetActionList");
     // Create the instance
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 1330638b11..861b0a8c32 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
@@ -109,9 +109,7 @@ public class BACnetActionTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 3e0cfdd68f..96da68f7ef 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
@@ -132,7 +132,7 @@ public class BACnetAddress implements Message {
     BACnetApplicationTagUnsignedInteger networkNumber =
         readSimpleField(
             "networkNumber",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -145,7 +145,7 @@ public class BACnetAddress implements Message {
     BACnetApplicationTagOctetString macAddress =
         readSimpleField(
             "macAddress",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
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 dd2f08918b..14e6cbd995 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
@@ -99,7 +99,7 @@ public class BACnetAddressBinding implements Message {
     BACnetApplicationTagObjectIdentifier deviceIdentifier =
         readSimpleField(
             "deviceIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -107,9 +107,7 @@ public class BACnetAddressBinding implements Message {
 
     BACnetAddress deviceAddress =
         readSimpleField(
-            "deviceAddress",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAddress.staticParse(readBuffer), readBuffer));
+            "deviceAddress", readComplex(() -> BACnetAddress.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("BACnetAddressBinding");
     // Create the instance
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 a59db5857d..113865b190 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
@@ -118,19 +118,17 @@ public class BACnetAddressEnclosed implements Message {
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetAddress address =
         readSimpleField(
-            "address",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAddress.staticParse(readBuffer), readBuffer));
+            "address", readComplex(() -> BACnetAddress.staticParse(readBuffer), readBuffer));
 
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetAddressEnclosed");
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 325e4355d2..0aae374f74 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
@@ -114,9 +114,7 @@ public abstract class BACnetApplicationTag implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (TagClass.APPLICATION_TAGS))) {
       throw new ParseValidationException("should be a application tag");
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 4f5d1dc863..f89d6dd698 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
@@ -90,7 +90,7 @@ public class BACnetApplicationTagBitString extends BACnetApplicationTag implemen
     BACnetTagPayloadBitString payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadBitString.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 7dd6112683..975bd091a1 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
@@ -100,7 +100,7 @@ public class BACnetApplicationTagBoolean extends BACnetApplicationTag implements
     BACnetTagPayloadBoolean payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadBoolean.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 4245d81fe1..263e729b2e 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
@@ -101,7 +101,7 @@ public class BACnetApplicationTagCharacterString extends BACnetApplicationTag im
     BACnetTagPayloadCharacterString payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadCharacterString.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 4c3479d326..118dc1499d 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
@@ -89,9 +89,7 @@ public class BACnetApplicationTagDate extends BACnetApplicationTag implements Me
 
     BACnetTagPayloadDate payload =
         readSimpleField(
-            "payload",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagPayloadDate.staticParse(readBuffer), readBuffer));
+            "payload", readComplex(() -> BACnetTagPayloadDate.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("BACnetApplicationTagDate");
     // Create the instance
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 4edfb1fee1..58c693c746 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
@@ -100,8 +100,7 @@ public class BACnetApplicationTagDouble extends BACnetApplicationTag implements
     BACnetTagPayloadDouble payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagPayloadDouble.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagPayloadDouble.staticParse(readBuffer), readBuffer));
     double actualValue = readVirtualField("actualValue", double.class, payload.getValue());
 
     readBuffer.closeContext("BACnetApplicationTagDouble");
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 f12775a9c0..ddfa8d75e4 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
@@ -101,7 +101,7 @@ public class BACnetApplicationTagEnumerated extends BACnetApplicationTag impleme
     BACnetTagPayloadEnumerated payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadEnumerated.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 ceb5c15e79..9a1f051a5c 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
@@ -111,7 +111,7 @@ public class BACnetApplicationTagObjectIdentifier extends BACnetApplicationTag i
     BACnetTagPayloadObjectIdentifier payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetTagPayloadObjectIdentifier.staticParse(readBuffer), readBuffer));
     BACnetObjectType objectType =
         readVirtualField("objectType", BACnetObjectType.class, payload.getObjectType());
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 e5df0d5acb..70bd68d77e 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
@@ -91,7 +91,7 @@ public class BACnetApplicationTagOctetString extends BACnetApplicationTag implem
     BACnetTagPayloadOctetString payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadOctetString.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 c928ebc7c0..37b1e94a87 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
@@ -99,9 +99,7 @@ public class BACnetApplicationTagReal extends BACnetApplicationTag implements Me
 
     BACnetTagPayloadReal payload =
         readSimpleField(
-            "payload",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagPayloadReal.staticParse(readBuffer), readBuffer));
+            "payload", readComplex(() -> BACnetTagPayloadReal.staticParse(readBuffer), readBuffer));
     float actualValue = readVirtualField("actualValue", float.class, payload.getValue());
 
     readBuffer.closeContext("BACnetApplicationTagReal");
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 6469aaad33..cc83966580 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
@@ -104,7 +104,7 @@ public class BACnetApplicationTagSignedInteger extends BACnetApplicationTag impl
     BACnetTagPayloadSignedInteger payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadSignedInteger.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 e3c76a5045..82b5d6eba6 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
@@ -89,9 +89,7 @@ public class BACnetApplicationTagTime extends BACnetApplicationTag implements Me
 
     BACnetTagPayloadTime payload =
         readSimpleField(
-            "payload",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagPayloadTime.staticParse(readBuffer), readBuffer));
+            "payload", readComplex(() -> BACnetTagPayloadTime.staticParse(readBuffer), readBuffer));
 
     readBuffer.closeContext("BACnetApplicationTagTime");
     // Create the instance
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 bc4aa4d3cd..7216d79a89 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
@@ -104,7 +104,7 @@ public class BACnetApplicationTagUnsignedInteger extends BACnetApplicationTag im
     BACnetTagPayloadUnsignedInteger payload =
         readSimpleField(
             "payload",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTagPayloadUnsignedInteger.staticParse(
                         readBuffer, (long) (header.getActualLength())),
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 ba857a8c16..e2b418a8ef 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
@@ -100,14 +100,14 @@ public class BACnetAssignedAccessRights implements Message {
     BACnetDeviceObjectReferenceEnclosed assignedAccessRights =
         readSimpleField(
             "assignedAccessRights",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDeviceObjectReferenceEnclosed.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
     BACnetContextTagBoolean enable =
         readSimpleField(
             "enable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
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 5e7f782b58..e2b6e0601d 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
@@ -86,7 +86,7 @@ public class BACnetAssignedLandingCalls implements Message {
     BACnetAssignedLandingCallsLandingCallsList landingCalls =
         readSimpleField(
             "landingCalls",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAssignedLandingCallsLandingCallsList.staticParse(readBuffer, (short) (0)),
                 readBuffer));
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 0516ce531c..d670518af3 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
@@ -122,13 +122,13 @@ public class BACnetAssignedLandingCallsLandingCallsList implements Message {
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     List<BACnetAssignedLandingCallsLandingCallsListEntry> landingCalls =
         readTerminatedArrayField(
             "landingCalls",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetAssignedLandingCallsLandingCallsListEntry.staticParse(readBuffer),
                 readBuffer),
             () ->
@@ -139,7 +139,7 @@ public class BACnetAssignedLandingCallsLandingCallsList implements Message {
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetAssignedLandingCallsLandingCallsList");
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 27add2feea..0b87ca3165 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
@@ -99,7 +99,7 @@ public class BACnetAssignedLandingCallsLandingCallsListEntry implements Message
     BACnetContextTagUnsignedInteger floorNumber =
         readSimpleField(
             "floorNumber",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -111,7 +111,7 @@ public class BACnetAssignedLandingCallsLandingCallsListEntry implements Message
     BACnetLiftCarDirectionTagged direction =
         readSimpleField(
             "direction",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftCarDirectionTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
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 09cfc3177a..5f014b0cf6 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
@@ -113,7 +113,7 @@ public class BACnetAuthenticationFactor implements Message {
     BACnetAuthenticationFactorTypeTagged formatType =
         readSimpleField(
             "formatType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAuthenticationFactorTypeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -122,7 +122,7 @@ public class BACnetAuthenticationFactor implements Message {
     BACnetContextTagUnsignedInteger formatClass =
         readSimpleField(
             "formatClass",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -134,7 +134,7 @@ public class BACnetAuthenticationFactor implements Message {
     BACnetContextTagOctetString value =
         readSimpleField(
             "value",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagOctetString)
                         BACnetContextTag.staticParse(
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 2c9abdec8b..c224b54e2e 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
@@ -119,19 +119,18 @@ public class BACnetAuthenticationFactorEnclosed implements Message {
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetAuthenticationFactor authenticationFactor =
         readSimpleField(
             "authenticationFactor",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAuthenticationFactor.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetAuthenticationFactor.staticParse(readBuffer), readBuffer));
 
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetAuthenticationFactorEnclosed");
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 6642fa56b8..6315178fe4 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
@@ -117,7 +117,7 @@ public class BACnetAuthenticationFactorFormat implements Message {
     BACnetAuthenticationFactorTypeTagged formatType =
         readSimpleField(
             "formatType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAuthenticationFactorTypeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -126,7 +126,7 @@ public class BACnetAuthenticationFactorFormat implements Message {
     BACnetVendorIdTagged vendorId =
         readOptionalField(
             "vendorId",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetVendorIdTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -135,7 +135,7 @@ public class BACnetAuthenticationFactorFormat implements Message {
     BACnetContextTagUnsignedInteger vendorFormat =
         readOptionalField(
             "vendorFormat",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 69c7e2e1b0..45edd992b3 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
@@ -112,9 +112,7 @@ public class BACnetAuthenticationFactorTypeTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 b85b37128f..f45c1d9e84 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
@@ -113,14 +113,14 @@ public class BACnetAuthenticationPolicy implements Message {
     BACnetAuthenticationPolicyList policy =
         readSimpleField(
             "policy",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetAuthenticationPolicyList.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
     BACnetContextTagBoolean orderEnforced =
         readSimpleField(
             "orderEnforced",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -130,7 +130,7 @@ public class BACnetAuthenticationPolicy implements Message {
     BACnetContextTagUnsignedInteger timeout =
         readSimpleField(
             "timeout",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 c83503e679..4121a13f24 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
@@ -122,13 +122,13 @@ public class BACnetAuthenticationPolicyList implements Message {
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     List<BACnetAuthenticationPolicyListEntry> entries =
         readTerminatedArrayField(
             "entries",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetAuthenticationPolicyListEntry.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
@@ -138,7 +138,7 @@ public class BACnetAuthenticationPolicyList implements Message {
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetAuthenticationPolicyList");
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 642a5caaef..f06bac964d 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
@@ -101,14 +101,14 @@ public class BACnetAuthenticationPolicyListEntry implements Message {
     BACnetDeviceObjectReferenceEnclosed credentialDataInput =
         readSimpleField(
             "credentialDataInput",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDeviceObjectReferenceEnclosed.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
     BACnetContextTagUnsignedInteger index =
         readSimpleField(
             "index",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 e1ee908a14..fc874f9717 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
@@ -112,9 +112,7 @@ public class BACnetAuthenticationStatusTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 22737b0f50..5aae605f31 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
@@ -140,9 +140,7 @@ public class BACnetAuthorizationExemptionTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 bdca5bc254..11b14eea1d 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
@@ -140,9 +140,7 @@ public class BACnetAuthorizationModeTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 6e227eb754..4e49a6bae1 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
@@ -100,13 +100,13 @@ public class BACnetBDTEntry implements Message {
     BACnetHostNPortEnclosed bbmdAddress =
         readSimpleField(
             "bbmdAddress",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetHostNPortEnclosed.staticParse(readBuffer, (short) (0)), readBuffer));
 
     BACnetContextTagOctetString broadcastMask =
         readOptionalField(
             "broadcastMask",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagOctetString)
                         BACnetContextTag.staticParse(
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 0aea168520..468693ff98 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
@@ -109,9 +109,7 @@ public class BACnetBackupStateTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 276cc38c8b..3d80b35e4b 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
@@ -140,9 +140,7 @@ public class BACnetBinaryLightingPVTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 d745d06837..d974d53f17 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
@@ -109,9 +109,7 @@ public class BACnetBinaryPVTagged implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 d21ad72e3c..4618714dcb 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
@@ -149,14 +149,14 @@ public class BACnetCOVMultipleSubscription implements Message {
     BACnetRecipientProcessEnclosed recipient =
         readSimpleField(
             "recipient",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetRecipientProcessEnclosed.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
     BACnetContextTagBoolean issueConfirmedNotifications =
         readSimpleField(
             "issueConfirmedNotifications",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -166,7 +166,7 @@ public class BACnetCOVMultipleSubscription implements Message {
     BACnetContextTagUnsignedInteger timeRemaining =
         readSimpleField(
             "timeRemaining",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -178,7 +178,7 @@ public class BACnetCOVMultipleSubscription implements Message {
     BACnetContextTagUnsignedInteger maxNotificationDelay =
         readSimpleField(
             "maxNotificationDelay",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -191,7 +191,7 @@ public class BACnetCOVMultipleSubscription implements Message {
         listOfCovSubscriptionSpecification =
             readSimpleField(
                 "listOfCovSubscriptionSpecification",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification.staticParse(
                             readBuffer, (short) (4)),
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 6532d37e9e..95b439e7b0 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
@@ -128,14 +128,14 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification imp
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     List<BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry>
         listOfCovSubscriptionSpecificationEntry =
             readTerminatedArrayField(
                 "listOfCovSubscriptionSpecificationEntry",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntry
                             .staticParse(readBuffer),
@@ -148,7 +148,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification imp
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecification");
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 750dd09f52..0c86bba260 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
@@ -109,7 +109,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
             "monitoredObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -122,7 +122,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
         listOfCovReferences =
             readSimpleField(
                 "listOfCovReferences",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferences
                             .staticParse(readBuffer, (short) (1)),
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 5111442962..bb5a84a6ad 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
@@ -134,7 +134,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     List<
@@ -142,7 +142,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
         listOfCovReferences =
             readTerminatedArrayField(
                 "listOfCovReferences",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOfCovReferencesEntry
                             .staticParse(readBuffer),
@@ -155,7 +155,7 @@ public class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntr
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext(
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 e92b584ad5..1c90b75346 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
@@ -124,14 +124,14 @@ class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOf
     BACnetPropertyReferenceEnclosed monitoredProperty =
         readSimpleField(
             "monitoredProperty",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetPropertyReferenceEnclosed.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
     BACnetContextTagReal covIncrement =
         readOptionalField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagReal)
                         BACnetContextTag.staticParse(
@@ -141,7 +141,7 @@ class BACnetCOVMultipleSubscriptionListOfCovSubscriptionSpecificationEntryListOf
     BACnetContextTagBoolean timestamped =
         readSimpleField(
             "timestamped",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
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 3355dacb82..d699330dcf 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
@@ -146,21 +146,21 @@ public class BACnetCOVSubscription implements Message {
     BACnetRecipientProcessEnclosed recipient =
         readSimpleField(
             "recipient",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetRecipientProcessEnclosed.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
     BACnetObjectPropertyReferenceEnclosed monitoredPropertyReference =
         readSimpleField(
             "monitoredPropertyReference",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetObjectPropertyReferenceEnclosed.staticParse(readBuffer, (short) (1)),
                 readBuffer));
 
     BACnetContextTagBoolean issueConfirmedNotifications =
         readSimpleField(
             "issueConfirmedNotifications",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -170,7 +170,7 @@ public class BACnetCOVSubscription implements Message {
     BACnetContextTagUnsignedInteger timeRemaining =
         readSimpleField(
             "timeRemaining",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -182,7 +182,7 @@ public class BACnetCOVSubscription implements Message {
     BACnetContextTagReal covIncrement =
         readOptionalField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagReal)
                         BACnetContextTag.staticParse(
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 f53d23dee3..7916a58ac4 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
@@ -99,8 +99,7 @@ public abstract class BACnetCalendarEntry implements Message {
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     short peekedTagNumber =
         readVirtualField("peekedTagNumber", short.class, peekedTagHeader.getActualTagNumber());
     // Validation
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 b77a47c852..c10b664f80 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
@@ -90,7 +90,7 @@ public class BACnetCalendarEntryDate extends BACnetCalendarEntry implements Mess
     BACnetContextTagDate dateValue =
         readSimpleField(
             "dateValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagDate)
                         BACnetContextTag.staticParse(
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 b6ad40160a..47a3e5e35a 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
@@ -91,7 +91,7 @@ public class BACnetCalendarEntryDateRange extends BACnetCalendarEntry implements
     BACnetDateRangeEnclosed dateRange =
         readSimpleField(
             "dateRange",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDateRangeEnclosed.staticParse(readBuffer, (short) (1)), readBuffer));
 
     readBuffer.closeContext("BACnetCalendarEntryDateRange");
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 2bff86eff0..40036ddf74 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
@@ -118,19 +118,18 @@ public class BACnetCalendarEntryEnclosed implements Message {
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetCalendarEntry calendarEntry =
         readSimpleField(
             "calendarEntry",
-            new DataReaderComplexDefault<>(
-                () -> BACnetCalendarEntry.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetCalendarEntry.staticParse(readBuffer), readBuffer));
 
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetCalendarEntryEnclosed");
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 ddd20842f3..791b468a10 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
@@ -91,7 +91,7 @@ public class BACnetCalendarEntryWeekNDay extends BACnetCalendarEntry implements
     BACnetWeekNDayTagged weekNDay =
         readSimpleField(
             "weekNDay",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetWeekNDayTagged.staticParse(
                         readBuffer, (short) (2), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
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 8eae255cc6..ee16eba55d 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
@@ -109,8 +109,7 @@ public abstract class BACnetChannelValue implements Message {
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     short peekedTagNumber =
         readVirtualField("peekedTagNumber", short.class, peekedTagHeader.getActualTagNumber());
     boolean peekedIsContextTag =
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 e39ab0ac67..2db849fc2a 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueBitString extends BACnetChannelValue implements M
     BACnetApplicationTagBitString bitStringValue =
         readSimpleField(
             "bitStringValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBitString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 f9a1b7b176..fdcf854a94 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueBoolean extends BACnetChannelValue implements Mes
     BACnetApplicationTagBoolean booleanValue =
         readSimpleField(
             "booleanValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 40b726d294..1b95989208 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
@@ -92,7 +92,7 @@ public class BACnetChannelValueCharacterString extends BACnetChannelValue implem
     BACnetApplicationTagCharacterString characterStringValue =
         readSimpleField(
             "characterStringValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
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 e83930f8db..7b94e35970 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueDate extends BACnetChannelValue implements Messag
     BACnetApplicationTagDate dateValue =
         readSimpleField(
             "dateValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDate) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 47558bcf0f..c844478a49 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueDouble extends BACnetChannelValue implements Mess
     BACnetApplicationTagDouble doubleValue =
         readSimpleField(
             "doubleValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 ef6254c3c4..41b5abfded 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
@@ -92,7 +92,7 @@ public class BACnetChannelValueEnumerated extends BACnetChannelValue implements
     BACnetApplicationTagEnumerated enumeratedValue =
         readSimpleField(
             "enumeratedValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagEnumerated) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 67d590383a..881611dde1 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueInteger extends BACnetChannelValue implements Mes
     BACnetApplicationTagSignedInteger integerValue =
         readSimpleField(
             "integerValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 3b099fe7f2..75e141ceb7 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
@@ -92,7 +92,7 @@ public class BACnetChannelValueLightingCommand extends BACnetChannelValue implem
     BACnetLightingCommandEnclosed ligthingCommandValue =
         readSimpleField(
             "ligthingCommandValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetLightingCommandEnclosed.staticParse(readBuffer, (short) (0)),
                 readBuffer));
 
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 139f0ca361..b38a93b85f 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueNull extends BACnetChannelValue implements Messag
     BACnetApplicationTagNull nullValue =
         readSimpleField(
             "nullValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagNull) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 de7ae6106b..a2b6722664 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
@@ -94,7 +94,7 @@ public class BACnetChannelValueObjectidentifier extends BACnetChannelValue imple
     BACnetApplicationTagObjectIdentifier objectidentifierValue =
         readSimpleField(
             "objectidentifierValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
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 f24eea13f0..fb670e7a76 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
@@ -92,7 +92,7 @@ public class BACnetChannelValueOctetString extends BACnetChannelValue implements
     BACnetApplicationTagOctetString octetStringValue =
         readSimpleField(
             "octetStringValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
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 89ff9b3c30..2625d34c7b 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueReal extends BACnetChannelValue implements Messag
     BACnetApplicationTagReal realValue =
         readSimpleField(
             "realValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 7d7ee15193..dc13f2373f 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueTime extends BACnetChannelValue implements Messag
     BACnetApplicationTagTime timeValue =
         readSimpleField(
             "timeValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagTime) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 6256f3e568..1a1a02988e 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
@@ -91,7 +91,7 @@ public class BACnetChannelValueUnsigned extends BACnetChannelValue implements Me
     BACnetApplicationTagUnsignedInteger unsignedValue =
         readSimpleField(
             "unsignedValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 0e3e430962..abff3646fa 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
@@ -99,8 +99,7 @@ public abstract class BACnetClientCOV implements Message {
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     short peekedTagNumber =
         readVirtualField("peekedTagNumber", short.class, peekedTagHeader.getActualTagNumber());
 
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 681e354e52..d990bf667b 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
@@ -92,7 +92,7 @@ public class BACnetClientCOVNone extends BACnetClientCOV implements Message {
     BACnetApplicationTagNull defaultIncrement =
         readSimpleField(
             "defaultIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagNull) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 2ca5cb0f34..f5b359770a 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
@@ -91,7 +91,7 @@ public class BACnetClientCOVObject extends BACnetClientCOV implements Message {
     BACnetApplicationTagReal realIncrement =
         readSimpleField(
             "realIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
 
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 2ed9d0d8d3..3ac4383251 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
@@ -89,9 +89,7 @@ public class BACnetClosingTag implements Message {
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getActualTagNumber()) == (tagNumberArgument))) {
       throw new ParseAssertException("tagnumber doesn't match");
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 0b0a936760..8b8e8669e2 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
@@ -177,7 +177,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
     BACnetContextTagUnsignedInteger acknowledgingProcessIdentifier =
         readSimpleField(
             "acknowledgingProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -189,7 +189,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
     BACnetContextTagObjectIdentifier eventObjectIdentifier =
         readSimpleField(
             "eventObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -201,7 +201,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
     BACnetEventStateTagged eventStateAcknowledged =
         readSimpleField(
             "eventStateAcknowledged",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventStateTagged.staticParse(
                         readBuffer, (short) (2), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -210,13 +210,13 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
     BACnetTimeStampEnclosed timestamp =
         readSimpleField(
             "timestamp",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetTimeStampEnclosed.staticParse(readBuffer, (short) (3)), readBuffer));
 
     BACnetContextTagCharacterString acknowledgmentSource =
         readSimpleField(
             "acknowledgmentSource",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
@@ -228,7 +228,7 @@ public class BACnetConfirmedServiceRequestAcknowledgeAlarm extends BACnetConfirm
     BACnetTimeStampEnclosed timeOfAcknowledgment =
         readSimpleField(
             "timeOfAcknowledgment",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetTimeStampEnclosed.staticParse(readBuffer, (short) (5)), readBuffer));
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestAcknowledgeAlarm");
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 66c2caa665..ffeff62002 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
@@ -147,7 +147,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -159,7 +159,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
     BACnetPropertyIdentifierTagged propertyIdentifier =
         readSimpleField(
             "propertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyIdentifierTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -168,7 +168,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
     BACnetContextTagUnsignedInteger arrayIndex =
         readOptionalField(
             "arrayIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -180,7 +180,7 @@ public class BACnetConfirmedServiceRequestAddListElement extends BACnetConfirmed
     BACnetConstructedData listOfElements =
         readOptionalField(
             "listOfElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConstructedData.staticParse(
                         readBuffer,
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 973a1ba12b..45fbf402b9 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
@@ -114,7 +114,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFile extends BACnetConfirmed
     BACnetApplicationTagObjectIdentifier fileIdentifier =
         readSimpleField(
             "fileIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -123,7 +123,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFile extends BACnetConfirmed
     BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord accessMethod =
         readSimpleField(
             "accessMethod",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.staticParse(
                         readBuffer),
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 7ffc1f8788..71d2721fd1 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
@@ -111,7 +111,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileRecord
     BACnetApplicationTagSignedInteger fileStartRecord =
         readSimpleField(
             "fileStartRecord",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -120,7 +120,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileRecord
     BACnetApplicationTagUnsignedInteger requestRecordCount =
         readSimpleField(
             "requestRecordCount",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 79ab52916f..c3a62d75ff 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
@@ -111,7 +111,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileStream
     BACnetApplicationTagSignedInteger fileStartPosition =
         readSimpleField(
             "fileStartPosition",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -120,7 +120,7 @@ public class BACnetConfirmedServiceRequestAtomicReadFileStream
     BACnetApplicationTagUnsignedInteger requestOctetCount =
         readSimpleField(
             "requestOctetCount",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 8cbe215a97..522881bc71 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
@@ -125,13 +125,12 @@ public abstract class BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
 
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetOpeningTag.staticParse(
                         readBuffer, (short) (peekedTagHeader.getActualTagNumber())),
@@ -164,7 +163,7 @@ public abstract class BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetClosingTag.staticParse(
                         readBuffer, (short) (peekedTagHeader.getActualTagNumber())),
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 26c204353f..24d6b0b531 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
@@ -159,7 +159,7 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
     BACnetApplicationTagObjectIdentifier deviceIdentifier =
         readSimpleField(
             "deviceIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -168,13 +168,12 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
     BACnetOpeningTag openingTag =
         readOptionalField(
             "openingTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOpeningTag.staticParse(readBuffer, (short) (0)), readBuffer));
+            readComplex(() -> BACnetOpeningTag.staticParse(readBuffer, (short) (0)), readBuffer));
 
     BACnetApplicationTagSignedInteger fileStartPosition =
         readSimpleField(
             "fileStartPosition",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -183,7 +182,7 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
     BACnetApplicationTagOctetString fileData =
         readSimpleField(
             "fileData",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
@@ -191,8 +190,7 @@ public class BACnetConfirmedServiceRequestAtomicWriteFile extends BACnetConfirme
     BACnetClosingTag closingTag =
         readOptionalField(
             "closingTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetClosingTag.staticParse(readBuffer, (short) (0)), readBuffer));
+            readComplex(() -> BACnetClosingTag.staticParse(readBuffer, (short) (0)), readBuffer));
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestAtomicWriteFile");
     // Create the instance
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 91c7ca1a4d..49c28a10bd 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
@@ -163,7 +163,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
             "subscriberProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -175,7 +175,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
     BACnetContextTagObjectIdentifier initiatingDeviceIdentifier =
         readSimpleField(
             "initiatingDeviceIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -187,7 +187,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
             "monitoredObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -199,7 +199,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
     BACnetContextTagUnsignedInteger lifetimeInSeconds =
         readSimpleField(
             "lifetimeInSeconds",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -211,7 +211,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotification
     BACnetPropertyValues listOfValues =
         readSimpleField(
             "listOfValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyValues.staticParse(
                         readBuffer,
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 65a2785c7c..f22638ab4e 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
@@ -164,7 +164,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
             "subscriberProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -176,7 +176,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
     BACnetContextTagObjectIdentifier initiatingDeviceIdentifier =
         readSimpleField(
             "initiatingDeviceIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -188,7 +188,7 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
     BACnetContextTagUnsignedInteger timeRemaining =
         readSimpleField(
             "timeRemaining",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -200,13 +200,13 @@ public class BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
     BACnetTimeStampEnclosed timestamp =
         readOptionalField(
             "timestamp",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetTimeStampEnclosed.staticParse(readBuffer, (short) (3)), readBuffer));
 
     ListOfCovNotificationsList listOfCovNotifications =
         readSimpleField(
             "listOfCovNotifications",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> ListOfCovNotificationsList.staticParse(readBuffer, (short) (4)), readBuffer));
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple");
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 29f584ede9..bdab8f7ce8 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
@@ -273,7 +273,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetContextTagUnsignedInteger processIdentifier =
         readSimpleField(
             "processIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -285,7 +285,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetContextTagObjectIdentifier initiatingDeviceIdentifier =
         readSimpleField(
             "initiatingDeviceIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -297,7 +297,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetContextTagObjectIdentifier eventObjectIdentifier =
         readSimpleField(
             "eventObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -309,13 +309,13 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetTimeStampEnclosed timestamp =
         readSimpleField(
             "timestamp",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetTimeStampEnclosed.staticParse(readBuffer, (short) (3)), readBuffer));
 
     BACnetContextTagUnsignedInteger notificationClass =
         readSimpleField(
             "notificationClass",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -327,7 +327,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetContextTagUnsignedInteger priority =
         readSimpleField(
             "priority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -339,7 +339,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetEventTypeTagged eventType =
         readSimpleField(
             "eventType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventTypeTagged.staticParse(
                         readBuffer, (short) (6), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -348,7 +348,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetContextTagCharacterString messageText =
         readOptionalField(
             "messageText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
@@ -360,7 +360,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetNotifyTypeTagged notifyType =
         readSimpleField(
             "notifyType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetNotifyTypeTagged.staticParse(
                         readBuffer, (short) (8), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -369,7 +369,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetContextTagBoolean ackRequired =
         readOptionalField(
             "ackRequired",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -379,7 +379,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetEventStateTagged fromState =
         readOptionalField(
             "fromState",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventStateTagged.staticParse(
                         readBuffer, (short) (10), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -388,7 +388,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetEventStateTagged toState =
         readSimpleField(
             "toState",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventStateTagged.staticParse(
                         readBuffer, (short) (11), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -397,7 +397,7 @@ public class BACnetConfirmedServiceRequestConfirmedEventNotification
     BACnetNotificationParameters eventValues =
         readOptionalField(
             "eventValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetNotificationParameters.staticParse(
                         readBuffer,
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 1d166f960c..3899072229 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
@@ -130,7 +130,7 @@ public class BACnetConfirmedServiceRequestConfirmedPrivateTransfer
     BACnetVendorIdTagged vendorId =
         readSimpleField(
             "vendorId",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetVendorIdTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -139,7 +139,7 @@ public class BACnetConfirmedServiceRequestConfirmedPrivateTransfer
     BACnetContextTagUnsignedInteger serviceNumber =
         readSimpleField(
             "serviceNumber",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -151,7 +151,7 @@ public class BACnetConfirmedServiceRequestConfirmedPrivateTransfer
     BACnetConstructedData serviceParameters =
         readOptionalField(
             "serviceParameters",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConstructedData.staticParse(
                         readBuffer,
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 245766cee3..267b621c2e 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
@@ -148,7 +148,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
     BACnetContextTagObjectIdentifier textMessageSourceDevice =
         readSimpleField(
             "textMessageSourceDevice",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -160,7 +160,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
     BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass messageClass =
         readOptionalField(
             "messageClass",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.staticParse(
                         readBuffer, (short) (1)),
@@ -169,7 +169,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
     BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged messagePriority =
         readSimpleField(
             "messagePriority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged
                         .staticParse(
@@ -179,7 +179,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessage extends BACnetCon
     BACnetContextTagCharacterString message =
         readSimpleField(
             "message",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
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 8612643d9b..93462eebb3 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
@@ -134,14 +134,13 @@ public abstract class BACnetConfirmedServiceRequestConfirmedTextMessageMessageCl
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     short peekedTagNumber =
         readVirtualField("peekedTagNumber", short.class, peekedTagHeader.getActualTagNumber());
 
@@ -170,7 +169,7 @@ public abstract class BACnetConfirmedServiceRequestConfirmedTextMessageMessageCl
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass");
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 e3263d6c56..1106643346 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
@@ -104,7 +104,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharac
     BACnetContextTagCharacterString characterValue =
         readSimpleField(
             "characterValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
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 a768b44b64..d118d1ddfb 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
@@ -101,7 +101,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeri
     BACnetContextTagUnsignedInteger numericValue =
         readSimpleField(
             "numericValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 73d7542212..05b1cbe98f 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
@@ -116,9 +116,7 @@ public class BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTag
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 e22b9e8788..c08e5016c8 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
@@ -117,7 +117,7 @@ public class BACnetConfirmedServiceRequestCreateObject extends BACnetConfirmedSe
     BACnetConfirmedServiceRequestCreateObjectObjectSpecifier objectSpecifier =
         readSimpleField(
             "objectSpecifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestCreateObjectObjectSpecifier.staticParse(
                         readBuffer, (short) (0)),
@@ -126,7 +126,7 @@ public class BACnetConfirmedServiceRequestCreateObject extends BACnetConfirmedSe
     BACnetPropertyValues listOfValues =
         readOptionalField(
             "listOfValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyValues.staticParse(
                         readBuffer,
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 2c43c9c578..0d73aa5930 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
@@ -168,13 +168,13 @@ public class BACnetConfirmedServiceRequestCreateObjectObjectSpecifier implements
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetContextTagEnumerated rawObjectType =
         readOptionalField(
             "rawObjectType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagEnumerated)
                         BACnetContextTag.staticParse(
@@ -192,7 +192,7 @@ public class BACnetConfirmedServiceRequestCreateObjectObjectSpecifier implements
     BACnetContextTagObjectIdentifier objectIdentifier =
         readOptionalField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -210,7 +210,7 @@ public class BACnetConfirmedServiceRequestCreateObjectObjectSpecifier implements
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestCreateObjectObjectSpecifier");
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 835ef291b0..76573e0927 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
@@ -101,7 +101,7 @@ public class BACnetConfirmedServiceRequestDeleteObject extends BACnetConfirmedSe
     BACnetApplicationTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
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 8b8a3b2b07..49ca80bc66 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
@@ -133,7 +133,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControl
     BACnetContextTagUnsignedInteger timeDuration =
         readOptionalField(
             "timeDuration",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -145,7 +145,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControl
     BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged enableDisable =
         readSimpleField(
             "enableDisable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged
                         .staticParse(
@@ -155,7 +155,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControl
     BACnetContextTagCharacterString password =
         readOptionalField(
             "password",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
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 a57ad38f8c..0a54e8c587 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
@@ -116,9 +116,7 @@ public class BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisabl
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 c751cd6ad8..8866b6f058 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
@@ -190,7 +190,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
         acknowledgmentFilter =
             readSimpleField(
                 "acknowledgmentFilter",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged
                             .staticParse(
@@ -202,14 +202,14 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
     BACnetRecipientProcessEnclosed enrollmentFilter =
         readOptionalField(
             "enrollmentFilter",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetRecipientProcessEnclosed.staticParse(readBuffer, (short) (1)),
                 readBuffer));
 
     BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged eventStateFilter =
         readOptionalField(
             "eventStateFilter",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged
                         .staticParse(
@@ -219,7 +219,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
     BACnetEventTypeTagged eventTypeFilter =
         readOptionalField(
             "eventTypeFilter",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventTypeTagged.staticParse(
                         readBuffer, (short) (3), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -228,7 +228,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
     BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter priorityFilter =
         readOptionalField(
             "priorityFilter",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter.staticParse(
                         readBuffer, (short) (4)),
@@ -237,7 +237,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummary extends BACnetCon
     BACnetContextTagUnsignedInteger notificationClassFilter =
         readOptionalField(
             "notificationClassFilter",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 87a6549928..c34e67dc34 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
@@ -116,9 +116,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFil
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 caf079e601..235a4a922c 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
@@ -116,9 +116,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTa
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 bd01be133b..be708c22c7 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
@@ -131,13 +131,13 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter imp
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetContextTagUnsignedInteger minPriority =
         readSimpleField(
             "minPriority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -149,7 +149,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter imp
     BACnetContextTagUnsignedInteger maxPriority =
         readSimpleField(
             "maxPriority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -161,7 +161,7 @@ public class BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter imp
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter");
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 b743d891a7..a9b083def5 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
@@ -105,7 +105,7 @@ public class BACnetConfirmedServiceRequestGetEventInformation extends BACnetConf
     BACnetContextTagObjectIdentifier lastReceivedObjectIdentifier =
         readOptionalField(
             "lastReceivedObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
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 e76c2c9229..9fdf2726b0 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
@@ -147,7 +147,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
     BACnetContextTagUnsignedInteger requestingProcessIdentifier =
         readSimpleField(
             "requestingProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -159,7 +159,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
     BACnetContextTagCharacterString requestingSource =
         readSimpleField(
             "requestingSource",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
@@ -171,7 +171,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
     BACnetLifeSafetyOperationTagged request =
         readSimpleField(
             "request",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyOperationTagged.staticParse(
                         readBuffer, (short) (2), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -180,7 +180,7 @@ public class BACnetConfirmedServiceRequestLifeSafetyOperation extends BACnetConf
     BACnetContextTagObjectIdentifier objectIdentifier =
         readOptionalField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
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 fe37f0bd5b..780ac2092e 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
@@ -131,7 +131,7 @@ public class BACnetConfirmedServiceRequestReadProperty extends BACnetConfirmedSe
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -143,7 +143,7 @@ public class BACnetConfirmedServiceRequestReadProperty extends BACnetConfirmedSe
     BACnetPropertyIdentifierTagged propertyIdentifier =
         readSimpleField(
             "propertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyIdentifierTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -152,7 +152,7 @@ public class BACnetConfirmedServiceRequestReadProperty extends BACnetConfirmedSe
     BACnetContextTagUnsignedInteger arrayIndex =
         readOptionalField(
             "arrayIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 49a3eb4a6c..5e9cb8f9cc 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
@@ -109,8 +109,7 @@ public class BACnetConfirmedServiceRequestReadPropertyMultiple extends BACnetCon
     List<BACnetReadAccessSpecification> data =
         readLengthArrayField(
             "data",
-            new DataReaderComplexDefault<>(
-                () -> BACnetReadAccessSpecification.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetReadAccessSpecification.staticParse(readBuffer), readBuffer),
             serviceRequestPayloadLength);
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestReadPropertyMultiple");
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 6cdf1f9e98..74094a78b3 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
@@ -147,7 +147,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -159,7 +159,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
     BACnetPropertyIdentifierTagged propertyIdentifier =
         readSimpleField(
             "propertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyIdentifierTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -168,7 +168,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
     BACnetContextTagUnsignedInteger propertyArrayIndex =
         readOptionalField(
             "propertyArrayIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -180,7 +180,7 @@ public class BACnetConfirmedServiceRequestReadRange extends BACnetConfirmedServi
     BACnetConfirmedServiceRequestReadRangeRange readRange =
         readOptionalField(
             "readRange",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetConfirmedServiceRequestReadRangeRange.staticParse(readBuffer),
                 readBuffer));
 
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 c467ffdb0c..6fddc18a0d 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
@@ -125,13 +125,12 @@ public abstract class BACnetConfirmedServiceRequestReadRangeRange implements Mes
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
 
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetOpeningTag.staticParse(
                         readBuffer, (short) (peekedTagHeader.getActualTagNumber())),
@@ -166,7 +165,7 @@ public abstract class BACnetConfirmedServiceRequestReadRangeRange implements Mes
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetClosingTag.staticParse(
                         readBuffer, (short) (peekedTagHeader.getActualTagNumber())),
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 0db128e5c4..da1488b588 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
@@ -109,7 +109,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByPosition
     BACnetApplicationTagUnsignedInteger referenceIndex =
         readSimpleField(
             "referenceIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -118,7 +118,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByPosition
     BACnetApplicationTagSignedInteger count =
         readSimpleField(
             "count",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 9a0a3c09f8..96cd877cf7 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
@@ -112,7 +112,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber
     BACnetApplicationTagUnsignedInteger referenceSequenceNumber =
         readSimpleField(
             "referenceSequenceNumber",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -121,7 +121,7 @@ public class BACnetConfirmedServiceRequestReadRangeRangeBySequenceNumber
     BACnetApplicationTagSignedInteger count =
         readSimpleField(
             "count",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 5d6109678c..089d051071 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
@@ -108,14 +108,12 @@ public class BACnetConfirmedServiceRequestReadRangeRangeByTime
 
     BACnetDateTime referenceTime =
         readSimpleField(
-            "referenceTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            "referenceTime", readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
 
     BACnetApplicationTagSignedInteger count =
         readSimpleField(
             "count",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 8af4827c1e..a6df103c8a 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
@@ -123,7 +123,7 @@ public class BACnetConfirmedServiceRequestReinitializeDevice extends BACnetConfi
         reinitializedStateOfDevice =
             readSimpleField(
                 "reinitializedStateOfDevice",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged
                             .staticParse(
@@ -135,7 +135,7 @@ public class BACnetConfirmedServiceRequestReinitializeDevice extends BACnetConfi
     BACnetContextTagCharacterString password =
         readOptionalField(
             "password",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagCharacterString)
                         BACnetContextTag.staticParse(
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 8b88fb693f..1b852976c8 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
@@ -116,9 +116,7 @@ public class BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOf
 
     BACnetTagHeader header =
         readSimpleField(
-            "header",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            "header", readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     // Validation
     if (!((header.getTagClass()) == (tagClass))) {
       throw new ParseValidationException("tag class doesn't match");
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 ed7cc6f439..3ddafe4126 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
@@ -147,7 +147,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -159,7 +159,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
     BACnetPropertyIdentifierTagged propertyIdentifier =
         readSimpleField(
             "propertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyIdentifierTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -168,7 +168,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
     BACnetContextTagUnsignedInteger arrayIndex =
         readOptionalField(
             "arrayIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -180,7 +180,7 @@ public class BACnetConfirmedServiceRequestRemoveListElement extends BACnetConfir
     BACnetConstructedData listOfElements =
         readOptionalField(
             "listOfElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConstructedData.staticParse(
                         readBuffer,
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 46199bcc0d..cbe51f853a 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
@@ -152,7 +152,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
             "subscriberProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -164,7 +164,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
             "monitoredObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -176,7 +176,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
     BACnetContextTagBoolean issueConfirmed =
         readOptionalField(
             "issueConfirmed",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -186,7 +186,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOV extends BACnetConfirmedSe
     BACnetContextTagUnsignedInteger lifetimeInSeconds =
         readOptionalField(
             "lifetimeInSeconds",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 76490f4842..9012ab3758 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
@@ -184,7 +184,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
             "subscriberProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -196,7 +196,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
             "monitoredObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -208,7 +208,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
     BACnetContextTagBoolean issueConfirmedNotifications =
         readOptionalField(
             "issueConfirmedNotifications",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -218,7 +218,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
     BACnetContextTagUnsignedInteger lifetime =
         readOptionalField(
             "lifetime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -230,14 +230,14 @@ public class BACnetConfirmedServiceRequestSubscribeCOVProperty extends BACnetCon
     BACnetPropertyReferenceEnclosed monitoredPropertyIdentifier =
         readSimpleField(
             "monitoredPropertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetPropertyReferenceEnclosed.staticParse(readBuffer, (short) (4)),
                 readBuffer));
 
     BACnetContextTagReal covIncrement =
         readOptionalField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagReal)
                         BACnetContextTag.staticParse(
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 c02c29691d..64c92a3d8b 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
@@ -174,7 +174,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
     BACnetContextTagUnsignedInteger subscriberProcessIdentifier =
         readSimpleField(
             "subscriberProcessIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -186,7 +186,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
     BACnetContextTagBoolean issueConfirmedNotifications =
         readOptionalField(
             "issueConfirmedNotifications",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
@@ -196,7 +196,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
     BACnetContextTagUnsignedInteger lifetime =
         readOptionalField(
             "lifetime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -208,7 +208,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
     BACnetContextTagUnsignedInteger maxNotificationDelay =
         readOptionalField(
             "maxNotificationDelay",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -221,7 +221,7 @@ public class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple
         listOfCovSubscriptionSpecifications =
             readSimpleField(
                 "listOfCovSubscriptionSpecifications",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsList
                             .staticParse(readBuffer, (short) (4)),
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 a2084d2ca5..cf8ce82431 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
@@ -147,7 +147,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetContextTagObjectIdentifier monitoredObjectIdentifier =
         readSimpleField(
             "monitoredObjectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -159,15 +159,14 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOpeningTag.staticParse(readBuffer, (short) (1)), readBuffer));
+            readComplex(() -> BACnetOpeningTag.staticParse(readBuffer, (short) (1)), readBuffer));
 
     List<
             BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference>
         listOfCovReferences =
             readTerminatedArrayField(
                 "listOfCovReferences",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecificationsReference
                             .staticParse(readBuffer),
@@ -180,8 +179,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetClosingTag.staticParse(readBuffer, (short) (1)), readBuffer));
+            readComplex(() -> BACnetClosingTag.staticParse(readBuffer, (short) (1)), readBuffer));
 
     readBuffer.closeContext(
         "BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications");
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 3760d659a2..dff90f6a0d 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
@@ -136,7 +136,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     List<
@@ -144,7 +144,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
         specifications =
             readTerminatedArrayField(
                 "specifications",
-                new DataReaderComplexDefault<>(
+                readComplex(
                     () ->
                         BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscriptionSpecifications
                             .staticParse(readBuffer),
@@ -157,7 +157,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext(
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 c9a790ed05..2237c41a98 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
@@ -124,14 +124,14 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetPropertyReferenceEnclosed monitoredProperty =
         readSimpleField(
             "monitoredProperty",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetPropertyReferenceEnclosed.staticParse(readBuffer, (short) (1)),
                 readBuffer));
 
     BACnetContextTagReal covIncrement =
         readOptionalField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagReal)
                         BACnetContextTag.staticParse(
@@ -141,7 +141,7 @@ class BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleListOfCovSubscrip
     BACnetContextTagBoolean timestamped =
         readSimpleField(
             "timestamped",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagBoolean)
                         BACnetContextTag.staticParse(
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 f54b397ea1..bbeecf86a6 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
@@ -110,7 +110,7 @@ public class BACnetConfirmedServiceRequestVTClose extends BACnetConfirmedService
     List<BACnetApplicationTagUnsignedInteger> listOfRemoteVtSessionIdentifiers =
         readLengthArrayField(
             "listOfRemoteVtSessionIdentifiers",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 bbc567b888..50f9e833ab 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
@@ -128,7 +128,7 @@ public class BACnetConfirmedServiceRequestVTData extends BACnetConfirmedServiceR
     BACnetApplicationTagUnsignedInteger vtSessionIdentifier =
         readSimpleField(
             "vtSessionIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -137,7 +137,7 @@ public class BACnetConfirmedServiceRequestVTData extends BACnetConfirmedServiceR
     BACnetApplicationTagOctetString vtNewData =
         readSimpleField(
             "vtNewData",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
@@ -145,7 +145,7 @@ public class BACnetConfirmedServiceRequestVTData extends BACnetConfirmedServiceR
     BACnetApplicationTagUnsignedInteger vtDataFlag =
         readSimpleField(
             "vtDataFlag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 e3b759bded..320252f4ba 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
@@ -117,7 +117,7 @@ public class BACnetConfirmedServiceRequestVTOpen extends BACnetConfirmedServiceR
     BACnetVTClassTagged vtClass =
         readSimpleField(
             "vtClass",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetVTClassTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
@@ -126,7 +126,7 @@ public class BACnetConfirmedServiceRequestVTOpen extends BACnetConfirmedServiceR
     BACnetApplicationTagUnsignedInteger localVtSessionIdentifier =
         readSimpleField(
             "localVtSessionIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 743bb02662..4cc8062168 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
@@ -159,7 +159,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
     BACnetContextTagObjectIdentifier objectIdentifier =
         readSimpleField(
             "objectIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagObjectIdentifier)
                         BACnetContextTag.staticParse(
@@ -171,7 +171,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
     BACnetPropertyIdentifierTagged propertyIdentifier =
         readSimpleField(
             "propertyIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetPropertyIdentifierTagged.staticParse(
                         readBuffer, (short) (1), (TagClass) (TagClass.CONTEXT_SPECIFIC_TAGS)),
@@ -180,7 +180,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
     BACnetContextTagUnsignedInteger arrayIndex =
         readOptionalField(
             "arrayIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
@@ -192,7 +192,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
     BACnetConstructedData propertyValue =
         readSimpleField(
             "propertyValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConstructedData.staticParse(
                         readBuffer,
@@ -206,7 +206,7 @@ public class BACnetConfirmedServiceRequestWriteProperty extends BACnetConfirmedS
     BACnetContextTagUnsignedInteger priority =
         readOptionalField(
             "priority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetContextTagUnsignedInteger)
                         BACnetContextTag.staticParse(
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 1bf134fb87..7d1403f0a4 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
@@ -109,8 +109,7 @@ public class BACnetConfirmedServiceRequestWritePropertyMultiple
     List<BACnetWriteAccessSpecification> data =
         readLengthArrayField(
             "data",
-            new DataReaderComplexDefault<>(
-                () -> BACnetWriteAccessSpecification.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetWriteAccessSpecification.staticParse(readBuffer), readBuffer),
             serviceRequestPayloadLength);
 
     readBuffer.closeContext("BACnetConfirmedServiceRequestWritePropertyMultiple");
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 3b86143e12..2f4fa012fc 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
@@ -143,14 +143,13 @@ public abstract class BACnetConstructedData implements Message {
     BACnetOpeningTag openingTag =
         readSimpleField(
             "openingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetOpeningTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     short peekedTagNumber =
         readVirtualField("peekedTagNumber", short.class, peekedTagHeader.getActualTagNumber());
 
@@ -7075,7 +7074,7 @@ public abstract class BACnetConstructedData implements Message {
     BACnetClosingTag closingTag =
         readSimpleField(
             "closingTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetClosingTag.staticParse(readBuffer, (short) (tagNumber)), readBuffer));
 
     readBuffer.closeContext("BACnetConstructedData");
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 c0fab4c6d9..51ead43d28 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAPDULength extends BACnetConstructedData imple
     BACnetApplicationTagUnsignedInteger apduLength =
         readSimpleField(
             "apduLength",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 f7546eb3b9..e34c890686 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
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAPDUSegmentTimeout extends BACnetConstructedDa
     BACnetApplicationTagUnsignedInteger apduSegmentTimeout =
         readSimpleField(
             "apduSegmentTimeout",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 78a75876c8..7832f0d630 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAPDUTimeout extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger apduTimeout =
         readSimpleField(
             "apduTimeout",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 8c3eb8132b..114f3f601a 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAbsenteeLimit extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger absenteeLimit =
         readSimpleField(
             "absenteeLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 0fa2593d4c..d59b9cf4d5 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
@@ -118,7 +118,7 @@ public class BACnetConstructedDataAcceptedModes extends BACnetConstructedData im
     List<BACnetLifeSafetyModeTagged> acceptedModes =
         readTerminatedArrayField(
             "acceptedModes",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 6ddef99761..7a4b1dd506 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
@@ -119,7 +119,7 @@ public class BACnetConstructedDataAccessAlarmEvents extends BACnetConstructedDat
     List<BACnetAccessEventTagged> accessAlarmEvents =
         readTerminatedArrayField(
             "accessAlarmEvents",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessEventTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 92bb65a762..51eeeb530c 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
@@ -119,7 +119,7 @@ public class BACnetConstructedDataAccessDoorAlarmValues extends BACnetConstructe
     List<BACnetDoorAlarmStateTagged> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorAlarmStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 30d828dcfd..630f621263 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
@@ -119,7 +119,7 @@ public class BACnetConstructedDataAccessDoorFaultValues extends BACnetConstructe
     List<BACnetDoorAlarmStateTagged> faultValues =
         readTerminatedArrayField(
             "faultValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorAlarmStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 ab59dffbd3..2c0975893d 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccessDoorPresentValue extends BACnetConstruct
     BACnetDoorValueTagged presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorValueTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 73567f4516..6b7242aa73 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
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAccessDoorRelinquishDefault extends BACnetCons
     BACnetDoorValueTagged relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorValueTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 15a28ac90b..4fc9c5aa4f 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
@@ -151,7 +151,7 @@ public class BACnetConstructedDataAccessDoors extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,8 +161,7 @@ public class BACnetConstructedDataAccessDoors extends BACnetConstructedData impl
     List<BACnetDeviceObjectReference> accessDoors =
         readTerminatedArrayField(
             "accessDoors",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
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 01fdd6d479..9090bf6ad6 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAccessEvent extends BACnetConstructedData impl
     BACnetAccessEventTagged accessEvent =
         readSimpleField(
             "accessEvent",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessEventTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 7455a6b55c..2389dff011 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
@@ -128,8 +128,7 @@ public class BACnetConstructedDataAccessEventAuthenticationFactor extends BACnet
     BACnetAuthenticationFactor accessEventAuthenticationFactor =
         readSimpleField(
             "accessEventAuthenticationFactor",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAuthenticationFactor.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetAuthenticationFactor.staticParse(readBuffer), readBuffer));
     BACnetAuthenticationFactor actualValue =
         readVirtualField(
             "actualValue", BACnetAuthenticationFactor.class, accessEventAuthenticationFactor);
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 65676d40f1..e7e3448d37 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
@@ -128,8 +128,7 @@ public class BACnetConstructedDataAccessEventCredential extends BACnetConstructe
     BACnetDeviceObjectReference accessEventCredential =
         readSimpleField(
             "accessEventCredential",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, accessEventCredential);
 
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 fc1615bb09..0d55c59963 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAccessEventTag extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger accessEventTag =
         readSimpleField(
             "accessEventTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 72a99c029c..34231c8445 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
@@ -125,8 +125,7 @@ public class BACnetConstructedDataAccessEventTime extends BACnetConstructedData
     BACnetTimeStamp accessEventTime =
         readSimpleField(
             "accessEventTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
     BACnetTimeStamp actualValue =
         readVirtualField("actualValue", BACnetTimeStamp.class, accessEventTime);
 
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 21e7f2bfe9..6f8f71712e 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
@@ -119,7 +119,7 @@ public class BACnetConstructedDataAccessTransactionEvents extends BACnetConstruc
     List<BACnetAccessEventTagged> accessTransactionEvents =
         readTerminatedArrayField(
             "accessTransactionEvents",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessEventTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 c3e92b1ec4..e8e2be5676 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccessZoneAdjustValue extends BACnetConstructe
     BACnetApplicationTagSignedInteger adjustValue =
         readSimpleField(
             "adjustValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 ae76f087f1..f2ad2269a0 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
@@ -119,7 +119,7 @@ public class BACnetConstructedDataAccessZoneAlarmValues extends BACnetConstructe
     List<BACnetAccessZoneOccupancyStateTagged> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessZoneOccupancyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 75dc24deaa..43d5846f3f 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
@@ -124,8 +124,7 @@ public class BACnetConstructedDataAccompaniment extends BACnetConstructedData im
     BACnetDeviceObjectReference accompaniment =
         readSimpleField(
             "accompaniment",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, accompaniment);
 
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 a71779751a..10b5398675 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
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAccompanimentTime extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger accompanimentTime =
         readSimpleField(
             "accompanimentTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 f8fa690157..350f232849 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccumulatorFaultHighLimit extends BACnetConstr
     BACnetApplicationTagUnsignedInteger faultHighLimit =
         readSimpleField(
             "faultHighLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 97fb2b4502..78ce6190cd 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccumulatorFaultLowLimit extends BACnetConstru
     BACnetApplicationTagUnsignedInteger faultLowLimit =
         readSimpleField(
             "faultLowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 009d11f668..3547820809 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccumulatorHighLimit extends BACnetConstructed
     BACnetApplicationTagUnsignedInteger highLimit =
         readSimpleField(
             "highLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 f27dd5fb5a..e9a77dd89c 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccumulatorLowLimit extends BACnetConstructedD
     BACnetApplicationTagUnsignedInteger lowLimit =
         readSimpleField(
             "lowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 f829bb6c21..232a81ab4b 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccumulatorMaxPresValue extends BACnetConstruc
     BACnetApplicationTagUnsignedInteger maxPresValue =
         readSimpleField(
             "maxPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 569c9377da..28329d2880 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAccumulatorMinPresValue extends BACnetConstruc
     BACnetApplicationTagUnsignedInteger minPresValue =
         readSimpleField(
             "minPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 5f0e48a28f..1324299667 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAckRequired extends BACnetConstructedData impl
     BACnetEventTransitionBitsTagged ackRequired =
         readSimpleField(
             "ackRequired",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventTransitionBitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 744fd4480c..3a1d908b7f 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
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAckedTransitions extends BACnetConstructedData
     BACnetEventTransitionBitsTagged ackedTransitions =
         readSimpleField(
             "ackedTransitions",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventTransitionBitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 4b9c5bdb9c..ab58b47621 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
@@ -151,7 +151,7 @@ public class BACnetConstructedDataAction extends BACnetConstructedData implement
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,8 +161,7 @@ public class BACnetConstructedDataAction extends BACnetConstructedData implement
     List<BACnetActionList> actionLists =
         readTerminatedArrayField(
             "actionLists",
-            new DataReaderComplexDefault<>(
-                () -> BACnetActionList.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetActionList.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
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 4e1b5fb035..4b04e509da 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
@@ -151,7 +151,7 @@ public class BACnetConstructedDataActionText extends BACnetConstructedData imple
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataActionText extends BACnetConstructedData imple
     List<BACnetApplicationTagCharacterString> actionText =
         readTerminatedArrayField(
             "actionText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
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 be8f9a5828..e7078932aa 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
@@ -124,8 +124,7 @@ public class BACnetConstructedDataActivationTime extends BACnetConstructedData i
     BACnetDateTime activationTime =
         readSimpleField(
             "activationTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, activationTime);
 
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 53fb0aed7a..3b534f119a 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
@@ -128,7 +128,7 @@ public class BACnetConstructedDataActiveAuthenticationPolicy extends BACnetConst
     BACnetApplicationTagUnsignedInteger activeAuthenticationPolicy =
         readSimpleField(
             "activeAuthenticationPolicy",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 5b44b7ab14..5bd0c2282d 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
@@ -120,8 +120,7 @@ public class BACnetConstructedDataActiveCOVMultipleSubscriptions extends BACnetC
     List<BACnetCOVMultipleSubscription> activeCOVMultipleSubscriptions =
         readTerminatedArrayField(
             "activeCOVMultipleSubscriptions",
-            new DataReaderComplexDefault<>(
-                () -> BACnetCOVMultipleSubscription.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetCOVMultipleSubscription.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
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 fc2f79d3f5..c968c7f5f3 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
@@ -119,8 +119,7 @@ public class BACnetConstructedDataActiveCOVSubscriptions extends BACnetConstruct
     List<BACnetCOVSubscription> activeCOVSubscriptions =
         readTerminatedArrayField(
             "activeCOVSubscriptions",
-            new DataReaderComplexDefault<>(
-                () -> BACnetCOVSubscription.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetCOVSubscription.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
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 688a741261..4059beb396 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataActiveText extends BACnetConstructedData imple
     BACnetApplicationTagCharacterString activeText =
         readSimpleField(
             "activeText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
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 f320770d7f..f1ddb0c236 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
@@ -119,8 +119,7 @@ public class BACnetConstructedDataActiveVTSessions extends BACnetConstructedData
     List<BACnetVTSession> activeVTSession =
         readTerminatedArrayField(
             "activeVTSession",
-            new DataReaderComplexDefault<>(
-                () -> BACnetVTSession.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetVTSession.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
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 6ea2afda3d..509b798d1d 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
@@ -125,8 +125,7 @@ public class BACnetConstructedDataActualShedLevel extends BACnetConstructedData
     BACnetShedLevel actualShedLevel =
         readSimpleField(
             "actualShedLevel",
-            new DataReaderComplexDefault<>(
-                () -> BACnetShedLevel.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetShedLevel.staticParse(readBuffer), readBuffer));
     BACnetShedLevel actualValue =
         readVirtualField("actualValue", BACnetShedLevel.class, actualShedLevel);
 
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 f544325e22..a1d5769ea1 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAdjustValue extends BACnetConstructedData impl
     BACnetApplicationTagSignedInteger adjustValue =
         readSimpleField(
             "adjustValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
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 9ce6869720..48355cd94a 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
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAlarmValue extends BACnetConstructedData imple
     BACnetBinaryPVTagged binaryPv =
         readSimpleField(
             "binaryPv",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 d03932c332..018d7ac132 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
@@ -151,7 +151,7 @@ public class BACnetConstructedDataAlarmValues extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataAlarmValues extends BACnetConstructedData impl
     List<BACnetLifeSafetyStateTagged> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
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 cca0bd4433..be8095e15c 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
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAlertEnrollmentPresentValue extends BACnetCons
     BACnetApplicationTagObjectIdentifier presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlignIntervals.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlignIntervals.java
index ef17926960..769dcfe8c5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlignIntervals.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAlignIntervals.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAlignIntervals extends BACnetConstructedData i
     BACnetApplicationTagBoolean alignIntervals =
         readSimpleField(
             "alignIntervals",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllWritesSuccessful.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllWritesSuccessful.java
index f78870ed8f..72b6c64f83 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllWritesSuccessful.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllWritesSuccessful.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAllWritesSuccessful extends BACnetConstructedD
     BACnetApplicationTagBoolean allWritesSuccessful =
         readSimpleField(
             "allWritesSuccessful",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllowGroupDelayInhibit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllowGroupDelayInhibit.java
index e71c8a91e6..b743bec00c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllowGroupDelayInhibit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAllowGroupDelayInhibit.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataAllowGroupDelayInhibit extends BACnetConstruct
     BACnetApplicationTagBoolean allowGroupDelayInhibit =
         readSimpleField(
             "allowGroupDelayInhibit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultHighLimit.java
index 4c443f371b..d5c2e91b70 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultHighLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogInputFaultHighLimit extends BACnetConstr
     BACnetApplicationTagReal faultHighLimit =
         readSimpleField(
             "faultHighLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultLowLimit.java
index 1c6823a195..0949a93c11 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputFaultLowLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogInputFaultLowLimit extends BACnetConstru
     BACnetApplicationTagReal faultLowLimit =
         readSimpleField(
             "faultLowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputInterfaceValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputInterfaceValue.java
index dd8580a68a..01b1932bdd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputInterfaceValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputInterfaceValue.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataAnalogInputInterfaceValue extends BACnetConstr
     BACnetOptionalREAL interfaceValue =
         readSimpleField(
             "interfaceValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalREAL.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetOptionalREAL.staticParse(readBuffer), readBuffer));
     BACnetOptionalREAL actualValue =
         readVirtualField("actualValue", BACnetOptionalREAL.class, interfaceValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputMaxPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputMaxPresValue.java
index c8905df447..8aa8576b11 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputMaxPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputMaxPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogInputMaxPresValue extends BACnetConstruc
     BACnetApplicationTagReal maxPresValue =
         readSimpleField(
             "maxPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputPresentValue.java
index f1526cc236..9aa8158453 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogInputPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogInputPresentValue extends BACnetConstruc
     BACnetApplicationTagReal presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputInterfaceValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputInterfaceValue.java
index 627a37f3ac..fae1ecca70 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputInterfaceValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputInterfaceValue.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataAnalogOutputInterfaceValue extends BACnetConst
     BACnetOptionalREAL interfaceValue =
         readSimpleField(
             "interfaceValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalREAL.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetOptionalREAL.staticParse(readBuffer), readBuffer));
     BACnetOptionalREAL actualValue =
         readVirtualField("actualValue", BACnetOptionalREAL.class, interfaceValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputMaxPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputMaxPresValue.java
index 8b693c78c6..88053cfec7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputMaxPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputMaxPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogOutputMaxPresValue extends BACnetConstru
     BACnetApplicationTagReal maxPresValue =
         readSimpleField(
             "maxPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputPresentValue.java
index 29176d5e93..1fdc76ecb4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogOutputPresentValue extends BACnetConstru
     BACnetApplicationTagReal presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputRelinquishDefault.java
index 9d4208dfa5..6f0c851f78 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogOutputRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAnalogOutputRelinquishDefault extends BACnetCo
     BACnetApplicationTagReal relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultHighLimit.java
index f4c43e3b49..734185efff 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultHighLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogValueFaultHighLimit extends BACnetConstr
     BACnetApplicationTagReal faultHighLimit =
         readSimpleField(
             "faultHighLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultLowLimit.java
index 3841d7dc4f..9a29eb327d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueFaultLowLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogValueFaultLowLimit extends BACnetConstru
     BACnetApplicationTagReal faultLowLimit =
         readSimpleField(
             "faultLowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueMaxPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueMaxPresValue.java
index 2dccc3522a..894848b2ef 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueMaxPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueMaxPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogValueMaxPresValue extends BACnetConstruc
     BACnetApplicationTagReal maxPresValue =
         readSimpleField(
             "maxPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValuePresentValue.java
index 757edff452..b3ed5ced57 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataAnalogValuePresentValue extends BACnetConstruc
     BACnetApplicationTagReal presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueRelinquishDefault.java
index 8d7f428b42..e956667651 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAnalogValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAnalogValueRelinquishDefault extends BACnetCon
     BACnetApplicationTagReal relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataApplicationSoftwareVersion.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataApplicationSoftwareVersion.java
index f110be8b37..1e5c3f623f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataApplicationSoftwareVersion.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataApplicationSoftwareVersion.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataApplicationSoftwareVersion extends BACnetConst
     BACnetApplicationTagCharacterString applicationSoftwareVersion =
         readSimpleField(
             "applicationSoftwareVersion",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataArchive.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataArchive.java
index 483f8e03ad..19cac7f7d9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataArchive.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataArchive.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataArchive extends BACnetConstructedData implemen
     BACnetApplicationTagBoolean archive =
         readSimpleField(
             "archive",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedAccessRights.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedAccessRights.java
index 8f83661586..029c336ccd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedAccessRights.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedAccessRights.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataAssignedAccessRights extends BACnetConstructed
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataAssignedAccessRights extends BACnetConstructed
     List<BACnetAssignedAccessRights> assignedAccessRights =
         readTerminatedArrayField(
             "assignedAccessRights",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAssignedAccessRights.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetAssignedAccessRights.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedLandingCalls.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedLandingCalls.java
index fa44bb3fb4..ae16cd578d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedLandingCalls.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAssignedLandingCalls.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataAssignedLandingCalls extends BACnetConstructed
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataAssignedLandingCalls extends BACnetConstructed
     List<BACnetAssignedLandingCalls> assignedLandingCalls =
         readTerminatedArrayField(
             "assignedLandingCalls",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAssignedLandingCalls.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetAssignedLandingCalls.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAttemptedSamples.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAttemptedSamples.java
index 7f15d2f651..b143f5a8da 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAttemptedSamples.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAttemptedSamples.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAttemptedSamples extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger attemptedSamples =
         readSimpleField(
             "attemptedSamples",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationFactors.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationFactors.java
index d5c408ddcf..92e9ee6469 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationFactors.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationFactors.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataAuthenticationFactors extends BACnetConstructe
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataAuthenticationFactors extends BACnetConstructe
     List<BACnetCredentialAuthenticationFactor> authenticationFactors =
         readTerminatedArrayField(
             "authenticationFactors",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetCredentialAuthenticationFactor.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyList.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyList.java
index e2a7542498..6a31dbde17 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyList.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyList.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataAuthenticationPolicyList extends BACnetConstru
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataAuthenticationPolicyList extends BACnetConstru
     List<BACnetAuthenticationPolicy> authenticationPolicyList =
         readTerminatedArrayField(
             "authenticationPolicyList",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAuthenticationPolicy.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetAuthenticationPolicy.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyNames.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyNames.java
index c4027da755..9ce820e549 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyNames.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationPolicyNames.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataAuthenticationPolicyNames extends BACnetConstr
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataAuthenticationPolicyNames extends BACnetConstr
     List<BACnetApplicationTagCharacterString> authenticationPolicyNames =
         readTerminatedArrayField(
             "authenticationPolicyNames",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationStatus.java
index b692e2ebd2..35d720c540 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthenticationStatus.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAuthenticationStatus extends BACnetConstructed
     BACnetAuthenticationStatusTagged authenticationStatus =
         readSimpleField(
             "authenticationStatus",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAuthenticationStatusTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationExemptions.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationExemptions.java
index 2a848df6d5..221dea1605 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationExemptions.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationExemptions.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataAuthorizationExemptions extends BACnetConstruc
     List<BACnetAuthorizationExemptionTagged> authorizationExemption =
         readTerminatedArrayField(
             "authorizationExemption",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAuthorizationExemptionTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationMode.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationMode.java
index b5377990ed..e931a1ce9c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationMode.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAuthorizationMode.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAuthorizationMode extends BACnetConstructedDat
     BACnetAuthorizationModeTagged authorizationMode =
         readSimpleField(
             "authorizationMode",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAuthorizationModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAutoSlaveDiscovery.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAutoSlaveDiscovery.java
index 4461f7130b..c3f94b7bb8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAutoSlaveDiscovery.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAutoSlaveDiscovery.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataAutoSlaveDiscovery extends BACnetConstructedDa
     BACnetApplicationTagBoolean autoSlaveDiscovery =
         readSimpleField(
             "autoSlaveDiscovery",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAverageValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAverageValue.java
index fd5462f3f9..2bf1abd4ff 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAverageValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataAverageValue.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataAverageValue extends BACnetConstructedData imp
     BACnetApplicationTagReal averageValue =
         readSimpleField(
             "averageValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPGlobalAddress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPGlobalAddress.java
index 235e30ff7d..366e005b70 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPGlobalAddress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPGlobalAddress.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataBACnetIPGlobalAddress extends BACnetConstructe
     BACnetHostNPort bacnetIpGlobalAddress =
         readSimpleField(
             "bacnetIpGlobalAddress",
-            new DataReaderComplexDefault<>(
-                () -> BACnetHostNPort.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetHostNPort.staticParse(readBuffer), readBuffer));
     BACnetHostNPort actualValue =
         readVirtualField("actualValue", BACnetHostNPort.class, bacnetIpGlobalAddress);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMode.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMode.java
index ced7b1b793..c45d896ea0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMode.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMode.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataBACnetIPMode extends BACnetConstructedData imp
     BACnetIPModeTagged bacnetIpMode =
         readSimpleField(
             "bacnetIpMode",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetIPModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMulticastAddress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMulticastAddress.java
index fc88583ba5..8c58857136 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMulticastAddress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPMulticastAddress.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBACnetIPMulticastAddress extends BACnetConstru
     BACnetApplicationTagOctetString ipMulticastAddress =
         readSimpleField(
             "ipMulticastAddress",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPNATTraversal.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPNATTraversal.java
index 1ba84e12c9..cc3167d8d2 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPNATTraversal.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPNATTraversal.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBACnetIPNATTraversal extends BACnetConstructed
     BACnetApplicationTagBoolean bacnetIPNATTraversal =
         readSimpleField(
             "bacnetIPNATTraversal",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPUDPPort.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPUDPPort.java
index 86641c58c3..58a540b3fc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPUDPPort.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPUDPPort.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataBACnetIPUDPPort extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger ipUdpPort =
         readSimpleField(
             "ipUdpPort",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6Mode.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6Mode.java
index e8f9a32ff2..3138282a49 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6Mode.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6Mode.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataBACnetIPv6Mode extends BACnetConstructedData i
     BACnetIPModeTagged bacnetIpv6Mode =
         readSimpleField(
             "bacnetIpv6Mode",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetIPModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6MulticastAddress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6MulticastAddress.java
index c92074d25e..3f29033b9a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6MulticastAddress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6MulticastAddress.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBACnetIPv6MulticastAddress extends BACnetConst
     BACnetApplicationTagOctetString ipv6MulticastAddress =
         readSimpleField(
             "ipv6MulticastAddress",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6UDPPort.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6UDPPort.java
index 6a68ef0e2e..94a4ee6cba 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6UDPPort.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBACnetIPv6UDPPort.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBACnetIPv6UDPPort extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger ipv6UdpPort =
         readSimpleField(
             "ipv6UdpPort",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDAcceptFDRegistrations.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDAcceptFDRegistrations.java
index 4999d693fc..db03208233 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDAcceptFDRegistrations.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDAcceptFDRegistrations.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataBBMDAcceptFDRegistrations extends BACnetConstr
     BACnetApplicationTagBoolean bbmdAcceptFDRegistrations =
         readSimpleField(
             "bbmdAcceptFDRegistrations",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDBroadcastDistributionTable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDBroadcastDistributionTable.java
index 8b9c5f05b2..6b14f64baf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDBroadcastDistributionTable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDBroadcastDistributionTable.java
@@ -120,8 +120,7 @@ public class BACnetConstructedDataBBMDBroadcastDistributionTable extends BACnetC
     List<BACnetBDTEntry> bbmdBroadcastDistributionTable =
         readTerminatedArrayField(
             "bbmdBroadcastDistributionTable",
-            new DataReaderComplexDefault<>(
-                () -> BACnetBDTEntry.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetBDTEntry.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDForeignDeviceTable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDForeignDeviceTable.java
index 87beb6bde0..cb7afa9f06 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDForeignDeviceTable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBBMDForeignDeviceTable.java
@@ -119,8 +119,7 @@ public class BACnetConstructedDataBBMDForeignDeviceTable extends BACnetConstruct
     List<BACnetBDTEntry> bbmdForeignDeviceTable =
         readTerminatedArrayField(
             "bbmdForeignDeviceTable",
-            new DataReaderComplexDefault<>(
-                () -> BACnetBDTEntry.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetBDTEntry.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupAndRestoreState.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupAndRestoreState.java
index 74290f9eb7..89eb3930b5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupAndRestoreState.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupAndRestoreState.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataBackupAndRestoreState extends BACnetConstructe
     BACnetBackupStateTagged backupAndRestoreState =
         readSimpleField(
             "backupAndRestoreState",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBackupStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupFailureTimeout.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupFailureTimeout.java
index 0bddd1f899..0c763143bc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupFailureTimeout.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupFailureTimeout.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBackupFailureTimeout extends BACnetConstructed
     BACnetApplicationTagUnsignedInteger backupFailureTimeout =
         readSimpleField(
             "backupFailureTimeout",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupPreparationTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupPreparationTime.java
index e1282575e5..9cb225c1e4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupPreparationTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBackupPreparationTime.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataBackupPreparationTime extends BACnetConstructe
     BACnetApplicationTagUnsignedInteger backupPreparationTime =
         readSimpleField(
             "backupPreparationTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBaseDeviceSecurityPolicy.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBaseDeviceSecurityPolicy.java
index 44a6d03569..132c9049ef 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBaseDeviceSecurityPolicy.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBaseDeviceSecurityPolicy.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataBaseDeviceSecurityPolicy extends BACnetConstru
     BACnetSecurityLevelTagged baseDeviceSecurityPolicy =
         readSimpleField(
             "baseDeviceSecurityPolicy",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetSecurityLevelTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBelongsTo.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBelongsTo.java
index b4359f46d6..5393b00275 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBelongsTo.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBelongsTo.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataBelongsTo extends BACnetConstructedData implem
     BACnetDeviceObjectReference belongsTo =
         readSimpleField(
             "belongsTo",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, belongsTo);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBias.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBias.java
index 66e663c968..cefa1a7a5c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBias.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBias.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataBias extends BACnetConstructedData implements
     BACnetApplicationTagReal bias =
         readSimpleField(
             "bias",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputInterfaceValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputInterfaceValue.java
index 79b365b914..440af64146 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputInterfaceValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputInterfaceValue.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataBinaryInputInterfaceValue extends BACnetConstr
     BACnetOptionalBinaryPV interfaceValue =
         readSimpleField(
             "interfaceValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalBinaryPV.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetOptionalBinaryPV.staticParse(readBuffer), readBuffer));
     BACnetOptionalBinaryPV actualValue =
         readVirtualField("actualValue", BACnetOptionalBinaryPV.class, interfaceValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputPresentValue.java
index 553828699a..3b3922b3b9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryInputPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBinaryInputPresentValue extends BACnetConstruc
     BACnetBinaryPVTagged presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputFeedbackValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputFeedbackValue.java
index 8e7ea97bf4..7f898c68ec 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputFeedbackValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputFeedbackValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBinaryLightingOutputFeedbackValue extends BACn
     BACnetBinaryLightingPVTagged feedbackValue =
         readSimpleField(
             "feedbackValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryLightingPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputPresentValue.java
index 6c3e4c1bd8..4c70a23e1d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBinaryLightingOutputPresentValue extends BACne
     BACnetBinaryLightingPVTagged presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryLightingPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputRelinquishDefault.java
index a6d9fd4212..44c86bd1df 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryLightingOutputRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBinaryLightingOutputRelinquishDefault
     BACnetBinaryLightingPVTagged relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryLightingPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputFeedbackValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputFeedbackValue.java
index f84c9d1564..0a482aa3e1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputFeedbackValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputFeedbackValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBinaryOutputFeedbackValue extends BACnetConstr
     BACnetBinaryPVTagged feedbackValue =
         readSimpleField(
             "feedbackValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputInterfaceValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputInterfaceValue.java
index 6d72e77e07..580e404b49 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputInterfaceValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputInterfaceValue.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataBinaryOutputInterfaceValue extends BACnetConst
     BACnetOptionalBinaryPV interfaceValue =
         readSimpleField(
             "interfaceValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalBinaryPV.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetOptionalBinaryPV.staticParse(readBuffer), readBuffer));
     BACnetOptionalBinaryPV actualValue =
         readVirtualField("actualValue", BACnetOptionalBinaryPV.class, interfaceValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputPresentValue.java
index d5e8c99197..e8da93ae03 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBinaryOutputPresentValue extends BACnetConstru
     BACnetBinaryPVTagged presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputRelinquishDefault.java
index d7272c0366..4be41c3a60 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryOutputRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBinaryOutputRelinquishDefault extends BACnetCo
     BACnetBinaryPVTagged relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValuePresentValue.java
index 2a8db39482..ebcf89892c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBinaryValuePresentValue extends BACnetConstruc
     BACnetBinaryPVTagged presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValueRelinquishDefault.java
index 0ed826c30d..58af045ef5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBinaryValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBinaryValueRelinquishDefault extends BACnetCon
     BACnetBinaryPVTagged relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitMask.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitMask.java
index 0cc790c330..48fc8d4f19 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitMask.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitMask.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataBitMask extends BACnetConstructedData implemen
     BACnetApplicationTagBitString bitString =
         readSimpleField(
             "bitString",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBitString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBitString actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueAlarmValues.java
index 2f258781ae..55e1828dd6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueAlarmValues.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataBitStringValueAlarmValues extends BACnetConstr
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataBitStringValueAlarmValues extends BACnetConstr
     List<BACnetApplicationTagBitString> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBitString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer),
             () ->
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValuePresentValue.java
index ad71110274..0e356bfa71 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBitStringValuePresentValue extends BACnetConst
     BACnetApplicationTagBitString presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBitString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBitString actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueRelinquishDefault.java
index b03788f7e6..364cef0fe1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitStringValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataBitStringValueRelinquishDefault extends BACnet
     BACnetApplicationTagBitString relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBitString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBitString actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitText.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitText.java
index 6396e43ebf..9ef3ef7d20 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitText.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBitText.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataBitText extends BACnetConstructedData implemen
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataBitText extends BACnetConstructedData implemen
     List<BACnetApplicationTagCharacterString> bitText =
         readTerminatedArrayField(
             "bitText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBlinkWarnEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBlinkWarnEnable.java
index b3aa3f4ddd..a0bbab4807 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBlinkWarnEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBlinkWarnEnable.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataBlinkWarnEnable extends BACnetConstructedData
     BACnetApplicationTagBoolean blinkWarnEnable =
         readSimpleField(
             "blinkWarnEnable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBufferSize.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBufferSize.java
index 7f21e9700c..21915958aa 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBufferSize.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataBufferSize.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataBufferSize extends BACnetConstructedData imple
     BACnetApplicationTagUnsignedInteger bufferSize =
         readSimpleField(
             "bufferSize",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVIncrement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVIncrement.java
index 5ce408a5ec..4eb66a13d6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVIncrement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVIncrement.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCOVIncrement extends BACnetConstructedData imp
     BACnetApplicationTagReal covIncrement =
         readSimpleField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVPeriod.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVPeriod.java
index 65f3e66103..6effae6fb8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVPeriod.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVPeriod.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCOVPeriod extends BACnetConstructedData implem
     BACnetApplicationTagUnsignedInteger covPeriod =
         readSimpleField(
             "covPeriod",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVResubscriptionInterval.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVResubscriptionInterval.java
index 8f06d46480..b6730f9e0b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVResubscriptionInterval.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVResubscriptionInterval.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataCOVResubscriptionInterval extends BACnetConstr
     BACnetApplicationTagUnsignedInteger covResubscriptionInterval =
         readSimpleField(
             "covResubscriptionInterval",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVUPeriod.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVUPeriod.java
index 5ce3188f1b..0b48527d7a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVUPeriod.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVUPeriod.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCOVUPeriod extends BACnetConstructedData imple
     BACnetApplicationTagUnsignedInteger covuPeriod =
         readSimpleField(
             "covuPeriod",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVURecipients.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVURecipients.java
index 1cd60d3012..8074b491da 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVURecipients.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCOVURecipients.java
@@ -118,8 +118,7 @@ public class BACnetConstructedDataCOVURecipients extends BACnetConstructedData i
     List<BACnetRecipient> covuRecipients =
         readTerminatedArrayField(
             "covuRecipients",
-            new DataReaderComplexDefault<>(
-                () -> BACnetRecipient.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetRecipient.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCalendarPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCalendarPresentValue.java
index 28cb619e47..c4d4069de9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCalendarPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCalendarPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataCalendarPresentValue extends BACnetConstructed
     BACnetApplicationTagBoolean presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarAssignedDirection.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarAssignedDirection.java
index b9ef8d09f7..3f35481f08 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarAssignedDirection.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarAssignedDirection.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataCarAssignedDirection extends BACnetConstructed
     BACnetLiftCarDirectionTagged assignedDirection =
         readSimpleField(
             "assignedDirection",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftCarDirectionTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorCommand.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorCommand.java
index 21c6dfbc66..b09d02c364 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorCommand.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorCommand.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataCarDoorCommand extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataCarDoorCommand extends BACnetConstructedData i
     List<BACnetLiftCarDoorCommandTagged> carDoorCommand =
         readTerminatedArrayField(
             "carDoorCommand",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftCarDoorCommandTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorStatus.java
index c98e7eb856..be7d5a6030 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorStatus.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataCarDoorStatus extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataCarDoorStatus extends BACnetConstructedData im
     List<BACnetDoorStatusTagged> carDoorStatus =
         readTerminatedArrayField(
             "carDoorStatus",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorStatusTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorText.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorText.java
index 29752c9283..9dcd0fcbb2 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorText.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorText.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataCarDoorText extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataCarDoorText extends BACnetConstructedData impl
     List<BACnetApplicationTagCharacterString> carDoorText =
         readTerminatedArrayField(
             "carDoorText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorZone.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorZone.java
index 034b901dfc..1cd68bb917 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorZone.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDoorZone.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCarDoorZone extends BACnetConstructedData impl
     BACnetApplicationTagBoolean carDoorZone =
         readSimpleField(
             "carDoorZone",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDriveStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDriveStatus.java
index fa6d8dda33..d23267b773 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDriveStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarDriveStatus.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCarDriveStatus extends BACnetConstructedData i
     BACnetLiftCarDriveStatusTagged carDriveStatus =
         readSimpleField(
             "carDriveStatus",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftCarDriveStatusTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoad.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoad.java
index adbcc9430c..6725ad892d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoad.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoad.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCarLoad extends BACnetConstructedData implemen
     BACnetApplicationTagReal carLoad =
         readSimpleField(
             "carLoad",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoadUnits.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoadUnits.java
index a61fbcd7e3..323406902c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoadUnits.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarLoadUnits.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCarLoadUnits extends BACnetConstructedData imp
     BACnetEngineeringUnitsTagged units =
         readSimpleField(
             "units",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEngineeringUnitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMode.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMode.java
index ea689b062e..8d37d62b63 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMode.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMode.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCarMode extends BACnetConstructedData implemen
     BACnetLiftCarModeTagged carMode =
         readSimpleField(
             "carMode",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftCarModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMovingDirection.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMovingDirection.java
index 613b99542a..6405664263 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMovingDirection.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarMovingDirection.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataCarMovingDirection extends BACnetConstructedDa
     BACnetLiftCarDirectionTagged carMovingDirection =
         readSimpleField(
             "carMovingDirection",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftCarDirectionTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarPosition.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarPosition.java
index 0f292687bb..d89a9e5488 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarPosition.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCarPosition.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCarPosition extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger carPosition =
         readSimpleField(
             "carPosition",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateCount.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateCount.java
index d7384ee3e2..fc661c273d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateCount.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateCount.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataChangeOfStateCount extends BACnetConstructedDa
     BACnetApplicationTagUnsignedInteger changeIfStateCount =
         readSimpleField(
             "changeIfStateCount",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateTime.java
index 592711e805..5707cd83f1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangeOfStateTime.java
@@ -126,8 +126,7 @@ public class BACnetConstructedDataChangeOfStateTime extends BACnetConstructedDat
     BACnetDateTime changeOfStateTime =
         readSimpleField(
             "changeOfStateTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, changeOfStateTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangesPending.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangesPending.java
index 706012c4f4..5d819ba180 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangesPending.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChangesPending.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataChangesPending extends BACnetConstructedData i
     BACnetApplicationTagBoolean changesPending =
         readSimpleField(
             "changesPending",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelListOfObjectPropertyReferences.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelListOfObjectPropertyReferences.java
index 282b6ebb59..294f6fff3e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelListOfObjectPropertyReferences.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelListOfObjectPropertyReferences.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataChannelListOfObjectPropertyReferences
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataChannelListOfObjectPropertyReferences
     List<BACnetDeviceObjectPropertyReference> references =
         readTerminatedArrayField(
             "references",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDeviceObjectPropertyReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelNumber.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelNumber.java
index 70e249467c..bfb4ba8a61 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelNumber.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelNumber.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataChannelNumber extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger channelNumber =
         readSimpleField(
             "channelNumber",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelPresentValue.java
index b1e3575233..6a30444791 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataChannelPresentValue.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataChannelPresentValue extends BACnetConstructedD
     BACnetChannelValue presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetChannelValue.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetChannelValue.staticParse(readBuffer), readBuffer));
     BACnetChannelValue actualValue =
         readVirtualField("actualValue", BACnetChannelValue.class, presentValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueAlarmValues.java
index c3fe32c400..6e543baf2b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueAlarmValues.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataCharacterStringValueAlarmValues extends BACnet
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataCharacterStringValueAlarmValues extends BACnet
     List<BACnetOptionalCharacterString> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueFaultValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueFaultValues.java
index c9e9183cb3..197f49d773 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueFaultValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueFaultValues.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataCharacterStringValueFaultValues extends BACnet
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataCharacterStringValueFaultValues extends BACnet
     List<BACnetOptionalCharacterString> faultValues =
         readTerminatedArrayField(
             "faultValues",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValuePresentValue.java
index ce595cb734..e110003b32 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataCharacterStringValuePresentValue extends BACne
     BACnetApplicationTagCharacterString presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueRelinquishDefault.java
index ba566e2456..2cb2228526 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCharacterStringValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataCharacterStringValueRelinquishDefault
     BACnetApplicationTagCharacterString relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataClientCOVIncrement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataClientCOVIncrement.java
index ee2c692e93..8e54112e2e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataClientCOVIncrement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataClientCOVIncrement.java
@@ -124,9 +124,7 @@ public class BACnetConstructedDataClientCOVIncrement extends BACnetConstructedDa
 
     BACnetClientCOV covIncrement =
         readSimpleField(
-            "covIncrement",
-            new DataReaderComplexDefault<>(
-                () -> BACnetClientCOV.staticParse(readBuffer), readBuffer));
+            "covIncrement", readComplex(() -> BACnetClientCOV.staticParse(readBuffer), readBuffer));
     BACnetClientCOV actualValue =
         readVirtualField("actualValue", BACnetClientCOV.class, covIncrement);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommand.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommand.java
index ab8ce73c3f..6c6503dad4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommand.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommand.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCommand extends BACnetConstructedData implemen
     BACnetNetworkPortCommandTagged command =
         readSimpleField(
             "command",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetNetworkPortCommandTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandAction.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandAction.java
index 0bafd642e9..0f01feb975 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandAction.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandAction.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataCommandAction extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,8 +161,7 @@ public class BACnetConstructedDataCommandAction extends BACnetConstructedData im
     List<BACnetActionList> actionLists =
         readTerminatedArrayField(
             "actionLists",
-            new DataReaderComplexDefault<>(
-                () -> BACnetActionList.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetActionList.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandTimeArray.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandTimeArray.java
index 862d76ae49..1797234897 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandTimeArray.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCommandTimeArray.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataCommandTimeArray extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataCommandTimeArray extends BACnetConstructedData
     List<BACnetTimeStamp> commandTimeArray =
         readTerminatedArrayField(
             "commandTimeArray",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTimeStamp.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetTimeStamp.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataConfigurationFiles.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataConfigurationFiles.java
index d7a17357e4..d447a3bd4b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataConfigurationFiles.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataConfigurationFiles.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataConfigurationFiles extends BACnetConstructedDa
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataConfigurationFiles extends BACnetConstructedDa
     List<BACnetApplicationTagObjectIdentifier> configurationFiles =
         readTerminatedArrayField(
             "configurationFiles",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlGroups.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlGroups.java
index 31e6454c9a..2b838dc565 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlGroups.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlGroups.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataControlGroups extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataControlGroups extends BACnetConstructedData im
     List<BACnetApplicationTagUnsignedInteger> controlGroups =
         readTerminatedArrayField(
             "controlGroups",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableReference.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableReference.java
index f26dd21eda..a1603eee82 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableReference.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableReference.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataControlledVariableReference extends BACnetCons
     BACnetObjectPropertyReference controlledVariableReference =
         readSimpleField(
             "controlledVariableReference",
-            new DataReaderComplexDefault<>(
-                () -> BACnetObjectPropertyReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetObjectPropertyReference.staticParse(readBuffer), readBuffer));
     BACnetObjectPropertyReference actualValue =
         readVirtualField(
             "actualValue", BACnetObjectPropertyReference.class, controlledVariableReference);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableUnits.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableUnits.java
index 118d3946d9..03fb9564be 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableUnits.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableUnits.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataControlledVariableUnits extends BACnetConstruc
     BACnetEngineeringUnitsTagged units =
         readSimpleField(
             "units",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEngineeringUnitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableValue.java
index 80dba67aa8..087b65bdc3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataControlledVariableValue.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataControlledVariableValue extends BACnetConstruc
     BACnetApplicationTagReal controlledVariableValue =
         readSimpleField(
             "controlledVariableValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCount.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCount.java
index 576117684d..5f7645a60b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCount.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCount.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataCount extends BACnetConstructedData implements
     BACnetApplicationTagUnsignedInteger count =
         readSimpleField(
             "count",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountBeforeChange.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountBeforeChange.java
index b79c50fa6c..654ccf0a4f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountBeforeChange.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountBeforeChange.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataCountBeforeChange extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger countBeforeChange =
         readSimpleField(
             "countBeforeChange",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountChangeTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountChangeTime.java
index 20cb4dfda8..382d902f00 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountChangeTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCountChangeTime.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataCountChangeTime extends BACnetConstructedData
     BACnetDateTime countChangeTime =
         readSimpleField(
             "countChangeTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, countChangeTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputPresentValue.java
index 0a53b280ca..53ef196707 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputPresentValue.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataCredentialDataInputPresentValue extends BACnet
     BACnetAuthenticationFactor presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAuthenticationFactor.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetAuthenticationFactor.staticParse(readBuffer), readBuffer));
     BACnetAuthenticationFactor actualValue =
         readVirtualField("actualValue", BACnetAuthenticationFactor.class, presentValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputUpdateTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputUpdateTime.java
index 32f1ac29bd..fb016bd83a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputUpdateTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDataInputUpdateTime.java
@@ -124,9 +124,7 @@ public class BACnetConstructedDataCredentialDataInputUpdateTime extends BACnetCo
 
     BACnetTimeStamp updateTime =
         readSimpleField(
-            "updateTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
+            "updateTime", readComplex(() -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
     BACnetTimeStamp actualValue =
         readVirtualField("actualValue", BACnetTimeStamp.class, updateTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDisable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDisable.java
index 5850c18c20..7375b7f781 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDisable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialDisable.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataCredentialDisable extends BACnetConstructedDat
     BACnetAccessCredentialDisableTagged credentialDisable =
         readSimpleField(
             "credentialDisable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessCredentialDisableTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialStatus.java
index a2f46472f1..23b7afeeaf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialStatus.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataCredentialStatus extends BACnetConstructedData
     BACnetBinaryPVTagged binaryPv =
         readSimpleField(
             "binaryPv",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetBinaryPVTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentials.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentials.java
index 88f5f8f2e2..e3f3011883 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentials.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentials.java
@@ -118,8 +118,7 @@ public class BACnetConstructedDataCredentials extends BACnetConstructedData impl
     List<BACnetDeviceObjectReference> credentials =
         readTerminatedArrayField(
             "credentials",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialsInZone.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialsInZone.java
index c91e715695..ac516b123e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialsInZone.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCredentialsInZone.java
@@ -119,8 +119,7 @@ public class BACnetConstructedDataCredentialsInZone extends BACnetConstructedDat
     List<BACnetDeviceObjectReference> credentialsInZone =
         readTerminatedArrayField(
             "credentialsInZone",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCurrentCommandPriority.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCurrentCommandPriority.java
index c3639af553..7749eb5084 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCurrentCommandPriority.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataCurrentCommandPriority.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataCurrentCommandPriority extends BACnetConstruct
     BACnetOptionalUnsigned currentCommandPriority =
         readSimpleField(
             "currentCommandPriority",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalUnsigned.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetOptionalUnsigned.staticParse(readBuffer), readBuffer));
     BACnetOptionalUnsigned actualValue =
         readVirtualField("actualValue", BACnetOptionalUnsigned.class, currentCommandPriority);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatabaseRevision.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatabaseRevision.java
index 976e06aa34..91fb63c280 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatabaseRevision.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatabaseRevision.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDatabaseRevision extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger databaseRevision =
         readSimpleField(
             "databaseRevision",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateList.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateList.java
index a52974c366..1051239820 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateList.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateList.java
@@ -118,8 +118,7 @@ public class BACnetConstructedDataDateList extends BACnetConstructedData impleme
     List<BACnetCalendarEntry> dateList =
         readTerminatedArrayField(
             "dateList",
-            new DataReaderComplexDefault<>(
-                () -> BACnetCalendarEntry.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetCalendarEntry.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValuePresentValue.java
index e9630e37c6..cfa481f823 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataDatePatternValuePresentValue extends BACnetCon
     BACnetApplicationTagDate presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDate) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDate actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValueRelinquishDefault.java
index 2f10446947..8af6194e72 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDatePatternValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDatePatternValueRelinquishDefault extends BACn
     BACnetApplicationTagDate relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDate) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDate actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValuePresentValue.java
index 097aa32eed..045e477682 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValuePresentValue.java
@@ -124,9 +124,7 @@ public class BACnetConstructedDataDateTimePatternValuePresentValue extends BACne
 
     BACnetDateTime presentValue =
         readSimpleField(
-            "presentValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            "presentValue", readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, presentValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValueRelinquishDefault.java
index cce930ac8a..55df4bddf6 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimePatternValueRelinquishDefault.java
@@ -126,8 +126,7 @@ public class BACnetConstructedDataDateTimePatternValueRelinquishDefault
     BACnetDateTime relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, relinquishDefault);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValuePresentValue.java
index 150fd022c3..28df5b82ee 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValuePresentValue.java
@@ -124,9 +124,7 @@ public class BACnetConstructedDataDateTimeValuePresentValue extends BACnetConstr
 
     BACnetDateTime presentValue =
         readSimpleField(
-            "presentValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            "presentValue", readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, presentValue);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValueRelinquishDefault.java
index 24ba6ae973..ab58184c23 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateTimeValueRelinquishDefault.java
@@ -126,8 +126,7 @@ public class BACnetConstructedDataDateTimeValueRelinquishDefault extends BACnetC
     BACnetDateTime relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, relinquishDefault);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValuePresentValue.java
index 658944c4f0..4b10eaab38 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataDateValuePresentValue extends BACnetConstructe
     BACnetApplicationTagDate presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDate) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDate actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValueRelinquishDefault.java
index c7b6561e39..27da5fe844 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDateValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDateValueRelinquishDefault extends BACnetConst
     BACnetApplicationTagDate relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDate) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDate actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaylightSavingsStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaylightSavingsStatus.java
index 8a40899ac1..d93ab21fed 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaylightSavingsStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaylightSavingsStatus.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataDaylightSavingsStatus extends BACnetConstructe
     BACnetApplicationTagBoolean daylightSavingsStatus =
         readSimpleField(
             "daylightSavingsStatus",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaysRemaining.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaysRemaining.java
index a07a5b69d3..9ea67d75d8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaysRemaining.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDaysRemaining.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDaysRemaining extends BACnetConstructedData im
     BACnetApplicationTagSignedInteger daysRemaining =
         readSimpleField(
             "daysRemaining",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeadband.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeadband.java
index 009f354fd2..c4a6da2f4c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeadband.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeadband.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDeadband extends BACnetConstructedData impleme
     BACnetApplicationTagReal deadband =
         readSimpleField(
             "deadband",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultFadeTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultFadeTime.java
index afb9942f12..dbd41edbe3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultFadeTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultFadeTime.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataDefaultFadeTime extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger defaultFadeTime =
         readSimpleField(
             "defaultFadeTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultRampRate.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultRampRate.java
index daaa9e74b0..f7bafa3a45 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultRampRate.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultRampRate.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataDefaultRampRate extends BACnetConstructedData
     BACnetApplicationTagReal defaultRampRate =
         readSimpleField(
             "defaultRampRate",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultStepIncrement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultStepIncrement.java
index 99ddd8fce8..fc1769e0cf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultStepIncrement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultStepIncrement.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDefaultStepIncrement extends BACnetConstructed
     BACnetApplicationTagReal defaultStepIncrement =
         readSimpleField(
             "defaultStepIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultSubordinateRelationship.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultSubordinateRelationship.java
index 23e0283509..d1ad085382 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultSubordinateRelationship.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultSubordinateRelationship.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataDefaultSubordinateRelationship extends BACnetC
     BACnetRelationshipTagged defaultSubordinateRelationship =
         readSimpleField(
             "defaultSubordinateRelationship",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetRelationshipTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultTimeout.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultTimeout.java
index ad627865ab..17131f15b2 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultTimeout.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDefaultTimeout.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDefaultTimeout extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger defaultTimeout =
         readSimpleField(
             "defaultTimeout",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeployedProfileLocation.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeployedProfileLocation.java
index bf7633eb5a..bab85e358d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeployedProfileLocation.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeployedProfileLocation.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataDeployedProfileLocation extends BACnetConstruc
     BACnetApplicationTagCharacterString deployedProfileLocation =
         readSimpleField(
             "deployedProfileLocation",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstant.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstant.java
index f5d19230b6..bf47495373 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstant.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstant.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDerivativeConstant extends BACnetConstructedDa
     BACnetApplicationTagReal derivativeConstant =
         readSimpleField(
             "derivativeConstant",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstantUnits.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstantUnits.java
index 9e166efc84..c75b4e6b6d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstantUnits.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDerivativeConstantUnits.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataDerivativeConstantUnits extends BACnetConstruc
     BACnetEngineeringUnitsTagged units =
         readSimpleField(
             "units",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEngineeringUnitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescription.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescription.java
index b6b22f6d3a..a0fb2cd0df 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescription.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescription.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDescription extends BACnetConstructedData impl
     BACnetApplicationTagCharacterString description =
         readSimpleField(
             "description",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescriptionOfHalt.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescriptionOfHalt.java
index 0b535de9e5..ab4400a034 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescriptionOfHalt.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDescriptionOfHalt.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDescriptionOfHalt extends BACnetConstructedDat
     BACnetApplicationTagCharacterString descriptionForHalt =
         readSimpleField(
             "descriptionForHalt",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceAddressBinding.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceAddressBinding.java
index 78b52e4211..915b27e005 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceAddressBinding.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceAddressBinding.java
@@ -119,8 +119,7 @@ public class BACnetConstructedDataDeviceAddressBinding extends BACnetConstructed
     List<BACnetAddressBinding> deviceAddressBinding =
         readTerminatedArrayField(
             "deviceAddressBinding",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAddressBinding.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetAddressBinding.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxInfoFrames.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxInfoFrames.java
index fb3bd1723b..fbd53cae98 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxInfoFrames.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxInfoFrames.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataDeviceMaxInfoFrames extends BACnetConstructedD
     BACnetApplicationTagUnsignedInteger maxInfoFrames =
         readSimpleField(
             "maxInfoFrames",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxMaster.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxMaster.java
index 3e1682fbfa..13aa724765 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxMaster.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceMaxMaster.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDeviceMaxMaster extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger maxMaster =
         readSimpleField(
             "maxMaster",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceType.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceType.java
index e75bc218c9..e655099c67 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceType.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDeviceType.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDeviceType extends BACnetConstructedData imple
     BACnetApplicationTagCharacterString deviceType =
         readSimpleField(
             "deviceType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDirectReading.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDirectReading.java
index b45444167b..b5a68e9835 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDirectReading.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDirectReading.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDirectReading extends BACnetConstructedData im
     BACnetApplicationTagReal directReading =
         readSimpleField(
             "directReading",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDistributionKeyRevision.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDistributionKeyRevision.java
index ab732b0967..0dc2349bee 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDistributionKeyRevision.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDistributionKeyRevision.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataDistributionKeyRevision extends BACnetConstruc
     BACnetApplicationTagUnsignedInteger distributionKeyRevision =
         readSimpleField(
             "distributionKeyRevision",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoNotHide.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoNotHide.java
index 95e62d820a..18fa8f6572 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoNotHide.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoNotHide.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDoNotHide extends BACnetConstructedData implem
     BACnetApplicationTagBoolean doNotHide =
         readSimpleField(
             "doNotHide",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorAlarmState.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorAlarmState.java
index 26deb11343..0479c88130 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorAlarmState.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorAlarmState.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDoorAlarmState extends BACnetConstructedData i
     BACnetDoorAlarmStateTagged doorAlarmState =
         readSimpleField(
             "doorAlarmState",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorAlarmStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorExtendedPulseTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorExtendedPulseTime.java
index 28760d1e7c..04c139d347 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorExtendedPulseTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorExtendedPulseTime.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataDoorExtendedPulseTime extends BACnetConstructe
     BACnetApplicationTagUnsignedInteger doorExtendedPulseTime =
         readSimpleField(
             "doorExtendedPulseTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorMembers.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorMembers.java
index 74080691d1..3547dcbf01 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorMembers.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorMembers.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataDoorMembers extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,8 +161,7 @@ public class BACnetConstructedDataDoorMembers extends BACnetConstructedData impl
     List<BACnetDeviceObjectReference> doorMembers =
         readTerminatedArrayField(
             "doorMembers",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorOpenTooLongTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorOpenTooLongTime.java
index 036b40a22f..33c875516a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorOpenTooLongTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorOpenTooLongTime.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDoorOpenTooLongTime extends BACnetConstructedD
     BACnetApplicationTagUnsignedInteger doorOpenTooLongTime =
         readSimpleField(
             "doorOpenTooLongTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorPulseTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorPulseTime.java
index 7b48054450..88dbff5f13 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorPulseTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorPulseTime.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDoorPulseTime extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger doorPulseTime =
         readSimpleField(
             "doorPulseTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorStatus.java
index 1c26228188..72b06fc91c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorStatus.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDoorStatus extends BACnetConstructedData imple
     BACnetDoorStatusTagged doorStatus =
         readSimpleField(
             "doorStatus",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetDoorStatusTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorUnlockDelayTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorUnlockDelayTime.java
index 8e3e51aadf..ca90e9f2f4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorUnlockDelayTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDoorUnlockDelayTime.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataDoorUnlockDelayTime extends BACnetConstructedD
     BACnetApplicationTagUnsignedInteger doorUnlockDelayTime =
         readSimpleField(
             "doorUnlockDelayTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDutyWindow.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDutyWindow.java
index 1926fa2e27..34a68181ad 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDutyWindow.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataDutyWindow.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataDutyWindow extends BACnetConstructedData imple
     BACnetApplicationTagUnsignedInteger dutyWindow =
         readSimpleField(
             "dutyWindow",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEffectivePeriod.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEffectivePeriod.java
index c2698c6d4f..1dbf1aa0bd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEffectivePeriod.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEffectivePeriod.java
@@ -123,9 +123,7 @@ public class BACnetConstructedDataEffectivePeriod extends BACnetConstructedData
 
     BACnetDateRange dateRange =
         readSimpleField(
-            "dateRange",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateRange.staticParse(readBuffer), readBuffer));
+            "dateRange", readComplex(() -> BACnetDateRange.staticParse(readBuffer), readBuffer));
     BACnetDateRange actualValue = readVirtualField("actualValue", BACnetDateRange.class, dateRange);
 
     readBuffer.closeContext("BACnetConstructedDataEffectivePeriod");
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressActive.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressActive.java
index 7ebfca4541..ed269632da 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressActive.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressActive.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEgressActive extends BACnetConstructedData imp
     BACnetApplicationTagBoolean egressActive =
         readSimpleField(
             "egressActive",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressTime.java
index 0018ce70bb..4d317bde37 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEgressTime.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEgressTime extends BACnetConstructedData imple
     BACnetApplicationTagUnsignedInteger egressTime =
         readSimpleField(
             "egressTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElapsedActiveTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElapsedActiveTime.java
index 5cbed9e61f..946387705d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElapsedActiveTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElapsedActiveTime.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataElapsedActiveTime extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger elapsedActiveTime =
         readSimpleField(
             "elapsedActiveTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElement.java
index 2ecf5ddc66..c21d436754 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElement.java
@@ -191,8 +191,7 @@ public class BACnetConstructedDataElement implements Message {
     BACnetTagHeader peekedTagHeader =
         readPeekField(
             "peekedTagHeader",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTagHeader.staticParse(readBuffer), readBuffer));
     short peekedTagNumber =
         readVirtualField("peekedTagNumber", short.class, peekedTagHeader.getActualTagNumber());
     boolean isApplicationTag =
@@ -217,14 +216,13 @@ public class BACnetConstructedDataElement implements Message {
     BACnetApplicationTag applicationTag =
         readOptionalField(
             "applicationTag",
-            new DataReaderComplexDefault<>(
-                () -> BACnetApplicationTag.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetApplicationTag.staticParse(readBuffer), readBuffer),
             isApplicationTag);
 
     BACnetContextTag contextTag =
         readOptionalField(
             "contextTag",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetContextTag.staticParse(
                         readBuffer,
@@ -236,7 +234,7 @@ public class BACnetConstructedDataElement implements Message {
     BACnetConstructedData constructedData =
         readOptionalField(
             "constructedData",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetConstructedData.staticParse(
                         readBuffer,
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroup.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroup.java
index 3f0d1e0786..38859ddb08 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroup.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroup.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataElevatorGroup extends BACnetConstructedData im
     BACnetApplicationTagObjectIdentifier elevatorGroup =
         readSimpleField(
             "elevatorGroup",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroupGroupMembers.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroupGroupMembers.java
index e76fd8ef28..4ee0ef5cd9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroupGroupMembers.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataElevatorGroupGroupMembers.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataElevatorGroupGroupMembers extends BACnetConstr
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataElevatorGroupGroupMembers extends BACnetConstr
     List<BACnetApplicationTagObjectIdentifier> groupMembers =
         readTerminatedArrayField(
             "groupMembers",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnable.java
index a5316f0735..b00fdab2c9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnable.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEnable extends BACnetConstructedData implement
     BACnetApplicationTagBoolean enable =
         readSimpleField(
             "enable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeter.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeter.java
index a333c55602..6ba1678da1 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeter.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeter.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEnergyMeter extends BACnetConstructedData impl
     BACnetApplicationTagReal energyMeter =
         readSimpleField(
             "energyMeter",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeterRef.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeterRef.java
index 1d54b20202..65b8ad03fd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeterRef.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEnergyMeterRef.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataEnergyMeterRef extends BACnetConstructedData i
     BACnetDeviceObjectReference energyMeterRef =
         readSimpleField(
             "energyMeterRef",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, energyMeterRef);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEntryPoints.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEntryPoints.java
index 4c95a0ee15..9ca830d492 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEntryPoints.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEntryPoints.java
@@ -118,8 +118,7 @@ public class BACnetConstructedDataEntryPoints extends BACnetConstructedData impl
     List<BACnetDeviceObjectReference> entryPoints =
         readTerminatedArrayField(
             "entryPoints",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataErrorLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataErrorLimit.java
index 11bbab21b4..4a08e23612 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataErrorLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataErrorLimit.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataErrorLimit extends BACnetConstructedData imple
     BACnetApplicationTagReal errorLimit =
         readSimpleField(
             "errorLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorFaultSignals.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorFaultSignals.java
index 5f1d3573ac..6b734ce92f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorFaultSignals.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorFaultSignals.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataEscalatorFaultSignals extends BACnetConstructe
     List<BACnetEscalatorFaultTagged> faultSignals =
         readTerminatedArrayField(
             "faultSignals",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEscalatorFaultTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorMode.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorMode.java
index 384b6485ad..f0036c66b3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorMode.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEscalatorMode.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEscalatorMode extends BACnetConstructedData im
     BACnetEscalatorModeTagged escalatorMode =
         readSimpleField(
             "escalatorMode",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEscalatorModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibit.java
index 7c6a82ad67..08aea8bfd5 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibit.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataEventAlgorithmInhibit extends BACnetConstructe
     BACnetApplicationTagBoolean eventAlgorithmInhibit =
         readSimpleField(
             "eventAlgorithmInhibit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibitRef.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibitRef.java
index 82c227857b..7543614af3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibitRef.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventAlgorithmInhibitRef.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataEventAlgorithmInhibitRef extends BACnetConstru
     BACnetObjectPropertyReference eventAlgorithmInhibitRef =
         readSimpleField(
             "eventAlgorithmInhibitRef",
-            new DataReaderComplexDefault<>(
-                () -> BACnetObjectPropertyReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetObjectPropertyReference.staticParse(readBuffer), readBuffer));
     BACnetObjectPropertyReference actualValue =
         readVirtualField(
             "actualValue", BACnetObjectPropertyReference.class, eventAlgorithmInhibitRef);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventDetectionEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventDetectionEnable.java
index ebdaedb14b..176403ae69 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventDetectionEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventDetectionEnable.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataEventDetectionEnable extends BACnetConstructed
     BACnetApplicationTagBoolean eventDetectionEnable =
         readSimpleField(
             "eventDetectionEnable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventEnable.java
index de71d8df98..fcad63f882 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventEnable.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEventEnable extends BACnetConstructedData impl
     BACnetEventTransitionBitsTagged eventEnable =
         readSimpleField(
             "eventEnable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventTransitionBitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventLogLogBuffer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventLogLogBuffer.java
index fd2c121178..fcda3226f0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventLogLogBuffer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventLogLogBuffer.java
@@ -119,8 +119,7 @@ public class BACnetConstructedDataEventLogLogBuffer extends BACnetConstructedDat
     List<BACnetEventLogRecord> floorText =
         readTerminatedArrayField(
             "floorText",
-            new DataReaderComplexDefault<>(
-                () -> BACnetEventLogRecord.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetEventLogRecord.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTexts.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTexts.java
index 63dd5a7ad9..8c1d2bdd2e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTexts.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTexts.java
@@ -185,7 +185,7 @@ public class BACnetConstructedDataEventMessageTexts extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -195,8 +195,7 @@ public class BACnetConstructedDataEventMessageTexts extends BACnetConstructedDat
     List<BACnetOptionalCharacterString> eventMessageTexts =
         readTerminatedArrayField(
             "eventMessageTexts",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTextsConfig.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTextsConfig.java
index 38be4ff0e8..0a198716cc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTextsConfig.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventMessageTextsConfig.java
@@ -191,7 +191,7 @@ public class BACnetConstructedDataEventMessageTextsConfig extends BACnetConstruc
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -201,8 +201,7 @@ public class BACnetConstructedDataEventMessageTextsConfig extends BACnetConstruc
     List<BACnetOptionalCharacterString> eventMessageTextsConfig =
         readTerminatedArrayField(
             "eventMessageTextsConfig",
-            new DataReaderComplexDefault<>(
-                () -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetOptionalCharacterString.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventParameters.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventParameters.java
index 0ccff2ecd5..0caa16f681 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventParameters.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventParameters.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataEventParameters extends BACnetConstructedData
     BACnetEventParameter eventParameter =
         readSimpleField(
             "eventParameter",
-            new DataReaderComplexDefault<>(
-                () -> BACnetEventParameter.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetEventParameter.staticParse(readBuffer), readBuffer));
     BACnetEventParameter actualValue =
         readVirtualField("actualValue", BACnetEventParameter.class, eventParameter);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventState.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventState.java
index 963008fa32..44b7c12ea3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventState.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventState.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEventState extends BACnetConstructedData imple
     BACnetEventStateTagged eventState =
         readSimpleField(
             "eventState",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventTimeStamps.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventTimeStamps.java
index 6e28dc9140..e8a029dcd4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventTimeStamps.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventTimeStamps.java
@@ -184,7 +184,7 @@ public class BACnetConstructedDataEventTimeStamps extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -194,8 +194,7 @@ public class BACnetConstructedDataEventTimeStamps extends BACnetConstructedData
     List<BACnetTimeStamp> eventTimeStamps =
         readTerminatedArrayField(
             "eventTimeStamps",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTimeStamp.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetTimeStamp.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventType.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventType.java
index 7db7c619ce..3f788c576e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventType.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataEventType.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataEventType extends BACnetConstructedData implem
     BACnetEventTypeTagged eventType =
         readSimpleField(
             "eventType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEventTypeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExceptionSchedule.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExceptionSchedule.java
index f569e86cc7..d4551a62a0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExceptionSchedule.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExceptionSchedule.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataExceptionSchedule extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataExceptionSchedule extends BACnetConstructedDat
     List<BACnetSpecialEvent> exceptionSchedule =
         readTerminatedArrayField(
             "exceptionSchedule",
-            new DataReaderComplexDefault<>(
-                () -> BACnetSpecialEvent.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetSpecialEvent.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExecutionDelay.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExecutionDelay.java
index 7dc74ef7dd..548c691dfc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExecutionDelay.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExecutionDelay.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataExecutionDelay extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataExecutionDelay extends BACnetConstructedData i
     List<BACnetApplicationTagUnsignedInteger> executionDelay =
         readTerminatedArrayField(
             "executionDelay",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExitPoints.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExitPoints.java
index ab46497b25..2ca4b28e0c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExitPoints.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExitPoints.java
@@ -118,8 +118,7 @@ public class BACnetConstructedDataExitPoints extends BACnetConstructedData imple
     List<BACnetDeviceObjectReference> exitPoints =
         readTerminatedArrayField(
             "exitPoints",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpectedShedLevel.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpectedShedLevel.java
index d79e84de26..eb33382026 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpectedShedLevel.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpectedShedLevel.java
@@ -126,8 +126,7 @@ public class BACnetConstructedDataExpectedShedLevel extends BACnetConstructedDat
     BACnetShedLevel expectedShedLevel =
         readSimpleField(
             "expectedShedLevel",
-            new DataReaderComplexDefault<>(
-                () -> BACnetShedLevel.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetShedLevel.staticParse(readBuffer), readBuffer));
     BACnetShedLevel actualValue =
         readVirtualField("actualValue", BACnetShedLevel.class, expectedShedLevel);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpirationTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpirationTime.java
index d27d79db82..f4166a1242 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpirationTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExpirationTime.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataExpirationTime extends BACnetConstructedData i
     BACnetDateTime expirationTime =
         readSimpleField(
             "expirationTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, expirationTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExtendedTimeEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExtendedTimeEnable.java
index fe4c3e5582..f090b20578 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExtendedTimeEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataExtendedTimeEnable.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataExtendedTimeEnable extends BACnetConstructedDa
     BACnetApplicationTagBoolean extendedTimeEnable =
         readSimpleField(
             "extendedTimeEnable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDBBMDAddress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDBBMDAddress.java
index fe8716384d..4e3cf2036f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDBBMDAddress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDBBMDAddress.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataFDBBMDAddress extends BACnetConstructedData im
     BACnetHostNPort fDBBMDAddress =
         readSimpleField(
             "fDBBMDAddress",
-            new DataReaderComplexDefault<>(
-                () -> BACnetHostNPort.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetHostNPort.staticParse(readBuffer), readBuffer));
     BACnetHostNPort actualValue =
         readVirtualField("actualValue", BACnetHostNPort.class, fDBBMDAddress);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDSubscriptionLifetime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDSubscriptionLifetime.java
index 5c2fd31908..b9b2478536 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDSubscriptionLifetime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFDSubscriptionLifetime.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataFDSubscriptionLifetime extends BACnetConstruct
     BACnetApplicationTagUnsignedInteger fdSubscriptionLifetime =
         readSimpleField(
             "fdSubscriptionLifetime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptEvents.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptEvents.java
index d6036d253d..a27cb98473 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptEvents.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptEvents.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataFailedAttemptEvents extends BACnetConstructedD
     List<BACnetAccessEventTagged> failedAttemptEvents =
         readTerminatedArrayField(
             "failedAttemptEvents",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessEventTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttempts.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttempts.java
index 3aad2a9356..1148cceeb8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttempts.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttempts.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFailedAttempts extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger failedAttempts =
         readSimpleField(
             "failedAttempts",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptsTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptsTime.java
index acab769a61..3a73634329 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptsTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFailedAttemptsTime.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataFailedAttemptsTime extends BACnetConstructedDa
     BACnetApplicationTagUnsignedInteger failedAttemptsTime =
         readSimpleField(
             "failedAttemptsTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultHighLimit.java
index 205abb378a..0d5fdd8b45 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultHighLimit.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFaultHighLimit extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger faultHighLimit =
         readSimpleField(
             "faultHighLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultLowLimit.java
index d0d8e61153..6b3602b5e2 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultLowLimit.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFaultLowLimit extends BACnetConstructedData im
     BACnetApplicationTagReal faultLowLimit =
         readSimpleField(
             "faultLowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultParameters.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultParameters.java
index c2dcd08d4c..41d77c4be4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultParameters.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultParameters.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataFaultParameters extends BACnetConstructedData
     BACnetFaultParameter faultParameters =
         readSimpleField(
             "faultParameters",
-            new DataReaderComplexDefault<>(
-                () -> BACnetFaultParameter.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetFaultParameter.staticParse(readBuffer), readBuffer));
     BACnetFaultParameter actualValue =
         readVirtualField("actualValue", BACnetFaultParameter.class, faultParameters);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultSignals.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultSignals.java
index 09a125f15c..75da9bf99f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultSignals.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultSignals.java
@@ -118,7 +118,7 @@ public class BACnetConstructedDataFaultSignals extends BACnetConstructedData imp
     List<BACnetLiftFaultTagged> faultSignals =
         readTerminatedArrayField(
             "faultSignals",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftFaultTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultType.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultType.java
index a1895a48b5..dd771d24b8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultType.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultType.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFaultType extends BACnetConstructedData implem
     BACnetFaultTypeTagged faultType =
         readSimpleField(
             "faultType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetFaultTypeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultValues.java
index f29291d218..ed7cab4fb3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFaultValues.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataFaultValues extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataFaultValues extends BACnetConstructedData impl
     List<BACnetLifeSafetyStateTagged> faultValues =
         readTerminatedArrayField(
             "faultValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileAccessMethod.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileAccessMethod.java
index 8ebf1d43a5..6dffdbaa7f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileAccessMethod.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileAccessMethod.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataFileAccessMethod extends BACnetConstructedData
     BACnetFileAccessMethodTagged fileAccessMethod =
         readSimpleField(
             "fileAccessMethod",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetFileAccessMethodTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileRecordCount.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileRecordCount.java
index e40c43ca9d..ab6be65d9c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileRecordCount.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileRecordCount.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFileRecordCount extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger recordCount =
         readSimpleField(
             "recordCount",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileSize.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileSize.java
index c194c8fa73..8741f24818 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileSize.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileSize.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFileSize extends BACnetConstructedData impleme
     BACnetApplicationTagUnsignedInteger fileSize =
         readSimpleField(
             "fileSize",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileType.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileType.java
index 7e0ead0fed..289e2a7a5d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileType.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFileType.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataFileType extends BACnetConstructedData impleme
     BACnetApplicationTagCharacterString fileType =
         readSimpleField(
             "fileType",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFirmwareRevision.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFirmwareRevision.java
index 526c654e61..df83a56bcc 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFirmwareRevision.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFirmwareRevision.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataFirmwareRevision extends BACnetConstructedData
     BACnetApplicationTagCharacterString firmwareRevision =
         readSimpleField(
             "firmwareRevision",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFloorText.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFloorText.java
index 6d74f7aadc..26a6b5c871 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFloorText.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFloorText.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataFloorText extends BACnetConstructedData implem
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataFloorText extends BACnetConstructedData implem
     List<BACnetApplicationTagCharacterString> floorText =
         readTerminatedArrayField(
             "floorText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFullDutyBaseline.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFullDutyBaseline.java
index 4cbe06dc12..d370a312c3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFullDutyBaseline.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataFullDutyBaseline.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataFullDutyBaseline extends BACnetConstructedData
     BACnetApplicationTagReal fullDutyBaseLine =
         readSimpleField(
             "fullDutyBaseLine",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupGroupMembers.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupGroupMembers.java
index acc58c810c..0ee3267490 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupGroupMembers.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupGroupMembers.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataGlobalGroupGroupMembers extends BACnetConstruc
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataGlobalGroupGroupMembers extends BACnetConstruc
     List<BACnetDeviceObjectPropertyReference> groupMembers =
         readTerminatedArrayField(
             "groupMembers",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> BACnetDeviceObjectPropertyReference.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupPresentValue.java
index baba5e3e0d..d0e6ca5a24 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalGroupPresentValue.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataGlobalGroupPresentValue extends BACnetConstruc
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataGlobalGroupPresentValue extends BACnetConstruc
     List<BACnetPropertyAccessResult> presentValue =
         readTerminatedArrayField(
             "presentValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetPropertyAccessResult.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetPropertyAccessResult.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalIdentifier.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalIdentifier.java
index 3b8577b471..e40f49c0d0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalIdentifier.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGlobalIdentifier.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataGlobalIdentifier extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger globalIdentifier =
         readSimpleField(
             "globalIdentifier",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupID.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupID.java
index c7aed6eef5..92376d3d39 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupID.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupID.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataGroupID extends BACnetConstructedData implemen
     BACnetApplicationTagUnsignedInteger groupId =
         readSimpleField(
             "groupId",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMemberNames.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMemberNames.java
index f29081e448..b273616353 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMemberNames.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMemberNames.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataGroupMemberNames extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,7 +162,7 @@ public class BACnetConstructedDataGroupMemberNames extends BACnetConstructedData
     List<BACnetApplicationTagCharacterString> groupMemberNames =
         readTerminatedArrayField(
             "groupMemberNames",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMembers.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMembers.java
index 91a9797b14..3001319e0f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMembers.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMembers.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataGroupMembers extends BACnetConstructedData imp
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataGroupMembers extends BACnetConstructedData imp
     List<BACnetApplicationTagObjectIdentifier> groupMembers =
         readTerminatedArrayField(
             "groupMembers",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMode.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMode.java
index 1501038d42..22fc21dc15 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMode.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupMode.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataGroupMode extends BACnetConstructedData implem
     BACnetLiftGroupModeTagged groupMode =
         readSimpleField(
             "groupMode",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLiftGroupModeTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupPresentValue.java
index ea83964c88..a591f77607 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataGroupPresentValue.java
@@ -119,8 +119,7 @@ public class BACnetConstructedDataGroupPresentValue extends BACnetConstructedDat
     List<BACnetReadAccessResult> presentValue =
         readTerminatedArrayField(
             "presentValue",
-            new DataReaderComplexDefault<>(
-                () -> BACnetReadAccessResult.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetReadAccessResult.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHighLimit.java
index 14580b06d6..83f1013748 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHighLimit.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataHighLimit extends BACnetConstructedData implem
     BACnetApplicationTagReal highLimit =
         readSimpleField(
             "highLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHigherDeck.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHigherDeck.java
index 3f900ed49f..142aa8bbaa 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHigherDeck.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataHigherDeck.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataHigherDeck extends BACnetConstructedData imple
     BACnetApplicationTagObjectIdentifier higherDeck =
         readSimpleField(
             "higherDeck",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagObjectIdentifier)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPAddress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPAddress.java
index eb5679243f..f63f720c8b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPAddress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPAddress.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPAddress extends BACnetConstructedData implem
     BACnetApplicationTagOctetString ipAddress =
         readSimpleField(
             "ipAddress",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPEnable.java
index a1df8b8eaa..451393590a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPEnable.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPDHCPEnable extends BACnetConstructedData imp
     BACnetApplicationTagBoolean ipDhcpEnable =
         readSimpleField(
             "ipDhcpEnable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTime.java
index 6378526a7d..b0f2952045 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTime.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIPDHCPLeaseTime extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger ipDhcpLeaseTime =
         readSimpleField(
             "ipDhcpLeaseTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTimeRemaining.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTimeRemaining.java
index 1a11823277..7f6e05b187 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTimeRemaining.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPLeaseTimeRemaining.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataIPDHCPLeaseTimeRemaining extends BACnetConstru
     BACnetApplicationTagUnsignedInteger ipDhcpLeaseTimeRemaining =
         readSimpleField(
             "ipDhcpLeaseTimeRemaining",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPServer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPServer.java
index ef3ae92257..0b0fa084b0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPServer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDHCPServer.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPDHCPServer extends BACnetConstructedData imp
     BACnetApplicationTagOctetString dhcpServer =
         readSimpleField(
             "dhcpServer",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDNSServer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDNSServer.java
index 266f6303a6..d95308c1c8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDNSServer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDNSServer.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataIPDNSServer extends BACnetConstructedData impl
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataIPDNSServer extends BACnetConstructedData impl
     List<BACnetApplicationTagOctetString> ipDnsServer =
         readTerminatedArrayField(
             "ipDnsServer",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDefaultGateway.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDefaultGateway.java
index 9866bfe8d9..b16457ed03 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDefaultGateway.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPDefaultGateway.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIPDefaultGateway extends BACnetConstructedData
     BACnetApplicationTagOctetString ipDefaultGateway =
         readSimpleField(
             "ipDefaultGateway",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPSubnetMask.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPSubnetMask.java
index 05ec0dc8c7..5892e667cd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPSubnetMask.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPSubnetMask.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPSubnetMask extends BACnetConstructedData imp
     BACnetApplicationTagOctetString ipSubnetMask =
         readSimpleField(
             "ipSubnetMask",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6Address.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6Address.java
index c18148a078..e51b82fff7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6Address.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6Address.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPv6Address extends BACnetConstructedData impl
     BACnetApplicationTagOctetString ipv6Address =
         readSimpleField(
             "ipv6Address",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6AutoAddressingEnable.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6AutoAddressingEnable.java
index 1a14b4d0ea..7567f19a0d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6AutoAddressingEnable.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6AutoAddressingEnable.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIPv6AutoAddressingEnable extends BACnetConstru
     BACnetApplicationTagBoolean autoAddressingEnable =
         readSimpleField(
             "autoAddressingEnable",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTime.java
index 533961f755..69b39006cd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTime.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIPv6DHCPLeaseTime extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger ipv6DhcpLeaseTime =
         readSimpleField(
             "ipv6DhcpLeaseTime",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTimeRemaining.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTimeRemaining.java
index 3dc0993e05..2d638d8d6f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTimeRemaining.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPLeaseTimeRemaining.java
@@ -128,7 +128,7 @@ public class BACnetConstructedDataIPv6DHCPLeaseTimeRemaining extends BACnetConst
     BACnetApplicationTagUnsignedInteger ipv6DhcpLeaseTimeRemaining =
         readSimpleField(
             "ipv6DhcpLeaseTimeRemaining",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPServer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPServer.java
index 773dadd868..7bb968af51 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPServer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DHCPServer.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPv6DHCPServer extends BACnetConstructedData i
     BACnetApplicationTagOctetString dhcpServer =
         readSimpleField(
             "dhcpServer",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DNSServer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DNSServer.java
index e2705c10be..d33f567cbf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DNSServer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DNSServer.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataIPv6DNSServer extends BACnetConstructedData im
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,7 +161,7 @@ public class BACnetConstructedDataIPv6DNSServer extends BACnetConstructedData im
     List<BACnetApplicationTagOctetString> ipv6DnsServer =
         readTerminatedArrayField(
             "ipv6DnsServer",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DefaultGateway.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DefaultGateway.java
index 0db6984f53..b98ff76f4f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DefaultGateway.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6DefaultGateway.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIPv6DefaultGateway extends BACnetConstructedDa
     BACnetApplicationTagOctetString ipv6DefaultGateway =
         readSimpleField(
             "ipv6DefaultGateway",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagOctetString) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6PrefixLength.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6PrefixLength.java
index cef19b511f..1245d0ed89 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6PrefixLength.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6PrefixLength.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIPv6PrefixLength extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger ipv6PrefixLength =
         readSimpleField(
             "ipv6PrefixLength",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6ZoneIndex.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6ZoneIndex.java
index 58cb1aafa6..bbe8b43f15 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6ZoneIndex.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIPv6ZoneIndex.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIPv6ZoneIndex extends BACnetConstructedData im
     BACnetApplicationTagCharacterString ipv6ZoneIndex =
         readSimpleField(
             "ipv6ZoneIndex",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProcess.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProcess.java
index 76bcf4c6ee..523cda54b2 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProcess.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProcess.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataInProcess extends BACnetConstructedData implem
     BACnetApplicationTagBoolean inProcess =
         readSimpleField(
             "inProcess",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProgress.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProgress.java
index c7c033b16c..2eb4b028b3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProgress.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInProgress.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataInProgress extends BACnetConstructedData imple
     BACnetLightingInProgressTagged inProgress =
         readSimpleField(
             "inProgress",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLightingInProgressTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInactiveText.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInactiveText.java
index 4155763234..79c7d6fe2a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInactiveText.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInactiveText.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataInactiveText extends BACnetConstructedData imp
     BACnetApplicationTagCharacterString inactiveText =
         readSimpleField(
             "inactiveText",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInitialTimeout.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInitialTimeout.java
index 0cc9bbb514..4f67d9bb23 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInitialTimeout.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInitialTimeout.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataInitialTimeout extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger initialTimeout =
         readSimpleField(
             "initialTimeout",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInputReference.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInputReference.java
index d2cefd48e3..2d193f8826 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInputReference.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInputReference.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataInputReference extends BACnetConstructedData i
     BACnetObjectPropertyReference inputReference =
         readSimpleField(
             "inputReference",
-            new DataReaderComplexDefault<>(
-                () -> BACnetObjectPropertyReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetObjectPropertyReference.staticParse(readBuffer), readBuffer));
     BACnetObjectPropertyReference actualValue =
         readVirtualField("actualValue", BACnetObjectPropertyReference.class, inputReference);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstallationID.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstallationID.java
index 680358fb37..d50e119e61 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstallationID.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstallationID.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataInstallationID extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger installationId =
         readSimpleField(
             "installationId",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstanceOf.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstanceOf.java
index 71091f7098..79d6668605 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstanceOf.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstanceOf.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataInstanceOf extends BACnetConstructedData imple
     BACnetApplicationTagCharacterString instanceOf =
         readSimpleField(
             "instanceOf",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagCharacterString)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstantaneousPower.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstantaneousPower.java
index b3e6276d48..9db67f283c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstantaneousPower.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataInstantaneousPower.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataInstantaneousPower extends BACnetConstructedDa
     BACnetApplicationTagReal instantaneousPower =
         readSimpleField(
             "instantaneousPower",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueCOVIncrement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueCOVIncrement.java
index b93b440307..9ac204c807 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueCOVIncrement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueCOVIncrement.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueCOVIncrement extends BACnetConstru
     BACnetApplicationTagUnsignedInteger covIncrement =
         readSimpleField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueDeadband.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueDeadband.java
index 47fbc4b983..62c5b2de3c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueDeadband.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueDeadband.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueDeadband extends BACnetConstructed
     BACnetApplicationTagUnsignedInteger deadband =
         readSimpleField(
             "deadband",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultHighLimit.java
index 0f90bfd1c4..e11afec7bd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultHighLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueFaultHighLimit extends BACnetConst
     BACnetApplicationTagSignedInteger faultHighLimit =
         readSimpleField(
             "faultHighLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultLowLimit.java
index 6594fda991..4af202b41c 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueFaultLowLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueFaultLowLimit extends BACnetConstr
     BACnetApplicationTagSignedInteger faultLowLimit =
         readSimpleField(
             "faultLowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueHighLimit.java
index ae957ff9f8..ac6b5c1b4f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueHighLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueHighLimit extends BACnetConstructe
     BACnetApplicationTagSignedInteger highLimit =
         readSimpleField(
             "highLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueLowLimit.java
index 45f02a8200..014c4f80c7 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueLowLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueLowLimit extends BACnetConstructed
     BACnetApplicationTagSignedInteger lowLimit =
         readSimpleField(
             "lowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMaxPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMaxPresValue.java
index d95466662a..cd6fdb8c17 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMaxPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMaxPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueMaxPresValue extends BACnetConstru
     BACnetApplicationTagSignedInteger maxPresValue =
         readSimpleField(
             "maxPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMinPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMinPresValue.java
index 8774375803..9d0d819ed3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMinPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueMinPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueMinPresValue extends BACnetConstru
     BACnetApplicationTagSignedInteger minPresValue =
         readSimpleField(
             "minPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValuePresentValue.java
index e4f29bf63c..28eecc7fe4 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValuePresentValue extends BACnetConstru
     BACnetApplicationTagSignedInteger presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueRelinquishDefault.java
index 2880618aa6..eaaf53346a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIntegerValueRelinquishDefault extends BACnetCo
     BACnetApplicationTagSignedInteger relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueResolution.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueResolution.java
index 2b90b57b08..afccde404d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueResolution.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegerValueResolution.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegerValueResolution extends BACnetConstruct
     BACnetApplicationTagSignedInteger resolution =
         readSimpleField(
             "resolution",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagSignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstant.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstant.java
index 0860354e56..9c5cf3abd0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstant.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstant.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataIntegralConstant extends BACnetConstructedData
     BACnetApplicationTagReal integralConstant =
         readSimpleField(
             "integralConstant",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagReal) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagReal actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstantUnits.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstantUnits.java
index 6e9a3d0f11..9ed8bb42ec 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstantUnits.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntegralConstantUnits.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataIntegralConstantUnits extends BACnetConstructe
     BACnetEngineeringUnitsTagged units =
         readSimpleField(
             "units",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetEngineeringUnitsTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntervalOffset.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntervalOffset.java
index 20288d03ef..623061a355 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntervalOffset.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIntervalOffset.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIntervalOffset extends BACnetConstructedData i
     BACnetApplicationTagUnsignedInteger intervalOffset =
         readSimpleField(
             "intervalOffset",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIsUTC.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIsUTC.java
index 53edce46c3..c5ded61d16 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIsUTC.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataIsUTC.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataIsUTC extends BACnetConstructedData implements
     BACnetApplicationTagBoolean isUtc =
         readSimpleField(
             "isUtc",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagBoolean) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagBoolean actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataKeySets.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataKeySets.java
index 74f246ab01..eeb761e891 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataKeySets.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataKeySets.java
@@ -151,7 +151,7 @@ public class BACnetConstructedDataKeySets extends BACnetConstructedData implemen
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -161,8 +161,7 @@ public class BACnetConstructedDataKeySets extends BACnetConstructedData implemen
     List<BACnetSecurityKeySet> keySets =
         readTerminatedArrayField(
             "keySets",
-            new DataReaderComplexDefault<>(
-                () -> BACnetSecurityKeySet.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetSecurityKeySet.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCallControl.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCallControl.java
index 2c73e0f2cf..db1e1de507 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCallControl.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCallControl.java
@@ -126,8 +126,7 @@ public class BACnetConstructedDataLandingCallControl extends BACnetConstructedDa
     BACnetLandingCallStatus landingCallControl =
         readSimpleField(
             "landingCallControl",
-            new DataReaderComplexDefault<>(
-                () -> BACnetLandingCallStatus.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetLandingCallStatus.staticParse(readBuffer), readBuffer));
     BACnetLandingCallStatus actualValue =
         readVirtualField("actualValue", BACnetLandingCallStatus.class, landingCallControl);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCalls.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCalls.java
index e63e95a5c3..f17cf2157d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCalls.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingCalls.java
@@ -118,8 +118,7 @@ public class BACnetConstructedDataLandingCalls extends BACnetConstructedData imp
     List<BACnetLandingCallStatus> landingCallStatus =
         readTerminatedArrayField(
             "landingCallStatus",
-            new DataReaderComplexDefault<>(
-                () -> BACnetLandingCallStatus.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetLandingCallStatus.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingDoorStatus.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingDoorStatus.java
index f3ca776df6..ce6c679477 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingDoorStatus.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLandingDoorStatus.java
@@ -152,7 +152,7 @@ public class BACnetConstructedDataLandingDoorStatus extends BACnetConstructedDat
     BACnetApplicationTagUnsignedInteger numberOfDataElements =
         readOptionalField(
             "numberOfDataElements",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
@@ -162,8 +162,7 @@ public class BACnetConstructedDataLandingDoorStatus extends BACnetConstructedDat
     List<BACnetLandingDoorStatus> landingDoorStatus =
         readTerminatedArrayField(
             "landingDoorStatus",
-            new DataReaderComplexDefault<>(
-                () -> BACnetLandingDoorStatus.staticParse(readBuffer), readBuffer),
+            readComplex(() -> BACnetLandingDoorStatus.staticParse(readBuffer), readBuffer),
             () ->
                 ((boolean)
                     (org.apache.plc4x.java.bacnetip.readwrite.utils.StaticHelper
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueCOVIncrement.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueCOVIncrement.java
index 611146ebc8..c3ccfa95ca 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueCOVIncrement.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueCOVIncrement.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueCOVIncrement extends BACnetCon
     BACnetApplicationTagDouble covIncrement =
         readSimpleField(
             "covIncrement",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueDeadband.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueDeadband.java
index b1fb407862..bebd772b74 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueDeadband.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueDeadband.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueDeadband extends BACnetConstru
     BACnetApplicationTagDouble deadband =
         readSimpleField(
             "deadband",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultHighLimit.java
index 897dbad555..83fcb681b3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultHighLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueFaultHighLimit extends BACnetC
     BACnetApplicationTagDouble faultHighLimit =
         readSimpleField(
             "faultHighLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultLowLimit.java
index 035e8ef77d..ef130b9dbd 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueFaultLowLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueFaultLowLimit extends BACnetCo
     BACnetApplicationTagDouble faultLowLimit =
         readSimpleField(
             "faultLowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueHighLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueHighLimit.java
index 21f807d272..41331fdd6b 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueHighLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueHighLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueHighLimit extends BACnetConstr
     BACnetApplicationTagDouble highLimit =
         readSimpleField(
             "highLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueLowLimit.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueLowLimit.java
index 56e933c037..4c09f68a19 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueLowLimit.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueLowLimit.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueLowLimit extends BACnetConstru
     BACnetApplicationTagDouble lowLimit =
         readSimpleField(
             "lowLimit",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMaxPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMaxPresValue.java
index db7927f475..19925627cb 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMaxPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMaxPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueMaxPresValue extends BACnetCon
     BACnetApplicationTagDouble maxPresValue =
         readSimpleField(
             "maxPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMinPresValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMinPresValue.java
index a0249e49dd..c251549eb3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMinPresValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueMinPresValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueMinPresValue extends BACnetCon
     BACnetApplicationTagDouble minPresValue =
         readSimpleField(
             "minPresValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValuePresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValuePresentValue.java
index 87dbb818ff..6bc376bc16 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValuePresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValuePresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValuePresentValue extends BACnetCon
     BACnetApplicationTagDouble presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueRelinquishDefault.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueRelinquishDefault.java
index 018edd913b..46f0da1965 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueRelinquishDefault.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueRelinquishDefault.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataLargeAnalogValueRelinquishDefault extends BACn
     BACnetApplicationTagDouble relinquishDefault =
         readSimpleField(
             "relinquishDefault",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueResolution.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueResolution.java
index 5f573343f7..78f0ef62c8 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueResolution.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLargeAnalogValueResolution.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLargeAnalogValueResolution extends BACnetConst
     BACnetApplicationTagDouble resolution =
         readSimpleField(
             "resolution",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () -> (BACnetApplicationTagDouble) BACnetApplicationTag.staticParse(readBuffer),
                 readBuffer));
     BACnetApplicationTagDouble actualValue =
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessEvent.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessEvent.java
index 66c5ed6acb..379efae179 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessEvent.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessEvent.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLastAccessEvent extends BACnetConstructedData
     BACnetAccessEventTagged lastAccessEvent =
         readSimpleField(
             "lastAccessEvent",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetAccessEventTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessPoint.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessPoint.java
index b08a851c9d..d6225e1cda 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessPoint.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastAccessPoint.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataLastAccessPoint extends BACnetConstructedData
     BACnetDeviceObjectReference lastAccessPoint =
         readSimpleField(
             "lastAccessPoint",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, lastAccessPoint);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCommandTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCommandTime.java
index 8a84b95a1f..25397f7729 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCommandTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCommandTime.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataLastCommandTime extends BACnetConstructedData
     BACnetTimeStamp lastCommandTime =
         readSimpleField(
             "lastCommandTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
     BACnetTimeStamp actualValue =
         readVirtualField("actualValue", BACnetTimeStamp.class, lastCommandTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAdded.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAdded.java
index 22eefcbad9..757fca3d22 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAdded.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAdded.java
@@ -126,8 +126,7 @@ public class BACnetConstructedDataLastCredentialAdded extends BACnetConstructedD
     BACnetDeviceObjectReference lastCredentialAdded =
         readSimpleField(
             "lastCredentialAdded",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, lastCredentialAdded);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAddedTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAddedTime.java
index b8023c4026..65d5945051 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAddedTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialAddedTime.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataLastCredentialAddedTime extends BACnetConstruc
     BACnetDateTime lastCredentialAddedTime =
         readSimpleField(
             "lastCredentialAddedTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, lastCredentialAddedTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemoved.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemoved.java
index dbff4eb840..315847460f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemoved.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemoved.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataLastCredentialRemoved extends BACnetConstructe
     BACnetDeviceObjectReference lastCredentialRemoved =
         readSimpleField(
             "lastCredentialRemoved",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDeviceObjectReference.staticParse(readBuffer), readBuffer));
     BACnetDeviceObjectReference actualValue =
         readVirtualField("actualValue", BACnetDeviceObjectReference.class, lastCredentialRemoved);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemovedTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemovedTime.java
index 3864a007e9..7800def5fb 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemovedTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastCredentialRemovedTime.java
@@ -128,8 +128,7 @@ public class BACnetConstructedDataLastCredentialRemovedTime extends BACnetConstr
     BACnetDateTime lastCredentialRemovedTime =
         readSimpleField(
             "lastCredentialRemovedTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue =
         readVirtualField("actualValue", BACnetDateTime.class, lastCredentialRemovedTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastKeyServer.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastKeyServer.java
index 5ff194fa1c..0c739633e3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastKeyServer.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastKeyServer.java
@@ -124,8 +124,7 @@ public class BACnetConstructedDataLastKeyServer extends BACnetConstructedData im
     BACnetAddressBinding lastKeyServer =
         readSimpleField(
             "lastKeyServer",
-            new DataReaderComplexDefault<>(
-                () -> BACnetAddressBinding.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetAddressBinding.staticParse(readBuffer), readBuffer));
     BACnetAddressBinding actualValue =
         readVirtualField("actualValue", BACnetAddressBinding.class, lastKeyServer);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastNotifyRecord.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastNotifyRecord.java
index d43137d544..02e2a79268 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastNotifyRecord.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastNotifyRecord.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataLastNotifyRecord extends BACnetConstructedData
     BACnetApplicationTagUnsignedInteger lastNotifyRecord =
         readSimpleField(
             "lastNotifyRecord",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastPriority.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastPriority.java
index 894f5b36ec..05c2dfea61 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastPriority.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastPriority.java
@@ -124,7 +124,7 @@ public class BACnetConstructedDataLastPriority extends BACnetConstructedData imp
     BACnetApplicationTagUnsignedInteger lastPriority =
         readSimpleField(
             "lastPriority",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     (BACnetApplicationTagUnsignedInteger)
                         BACnetApplicationTag.staticParse(readBuffer),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestartReason.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestartReason.java
index fe6ae7af63..12c744fc0e 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestartReason.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestartReason.java
@@ -126,7 +126,7 @@ public class BACnetConstructedDataLastRestartReason extends BACnetConstructedDat
     BACnetRestartReasonTagged lastRestartReason =
         readSimpleField(
             "lastRestartReason",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetRestartReasonTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestoreTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestoreTime.java
index 3c9a057478..70da891dd9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestoreTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastRestoreTime.java
@@ -125,8 +125,7 @@ public class BACnetConstructedDataLastRestoreTime extends BACnetConstructedData
     BACnetTimeStamp lastRestoreTime =
         readSimpleField(
             "lastRestoreTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
+            readComplex(() -> BACnetTimeStamp.staticParse(readBuffer), readBuffer));
     BACnetTimeStamp actualValue =
         readVirtualField("actualValue", BACnetTimeStamp.class, lastRestoreTime);
 
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastStateChange.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastStateChange.java
index fe4127de99..f142669d23 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastStateChange.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastStateChange.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLastStateChange extends BACnetConstructedData
     BACnetTimerTransitionTagged lastStateChange =
         readSimpleField(
             "lastStateChange",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetTimerTransitionTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastUseTime.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastUseTime.java
index 890809ca3e..3d9219103d 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastUseTime.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLastUseTime.java
@@ -123,9 +123,7 @@ public class BACnetConstructedDataLastUseTime extends BACnetConstructedData impl
 
     BACnetDateTime lastUseTime =
         readSimpleField(
-            "lastUseTime",
-            new DataReaderComplexDefault<>(
-                () -> BACnetDateTime.staticParse(readBuffer), readBuffer));
+            "lastUseTime", readComplex(() -> BACnetDateTime.staticParse(readBuffer), readBuffer));
     BACnetDateTime actualValue = readVirtualField("actualValue", BACnetDateTime.class, lastUseTime);
 
     readBuffer.closeContext("BACnetConstructedDataLastUseTime");
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyAlarmValues.java
index 18cf9e9dc0..2f7f35e9b0 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyAlarmValues.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataLifeSafetyAlarmValues extends BACnetConstructe
     List<BACnetLifeSafetyStateTagged> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointAlarmValues.java
index 52b7ab54d9..f909ea7f41 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointAlarmValues.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataLifeSafetyPointAlarmValues extends BACnetConst
     List<BACnetLifeSafetyStateTagged> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointFaultValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointFaultValues.java
index fb858848e4..c95bc9bc5f 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointFaultValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointFaultValues.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataLifeSafetyPointFaultValues extends BACnetConst
     List<BACnetLifeSafetyStateTagged> faultValues =
         readTerminatedArrayField(
             "faultValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointPresentValue.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointPresentValue.java
index 6ea648cf09..d638c1f9a3 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointPresentValue.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyPointPresentValue.java
@@ -125,7 +125,7 @@ public class BACnetConstructedDataLifeSafetyPointPresentValue extends BACnetCons
     BACnetLifeSafetyStateTagged presentValue =
         readSimpleField(
             "presentValue",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneAlarmValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneAlarmValues.java
index d733913046..cd02a92baf 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneAlarmValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneAlarmValues.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataLifeSafetyZoneAlarmValues extends BACnetConstr
     List<BACnetLifeSafetyStateTagged> alarmValues =
         readTerminatedArrayField(
             "alarmValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
                         readBuffer, (short) (0), (TagClass) (TagClass.APPLICATION_TAGS)),
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneFaultValues.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneFaultValues.java
index cb1e652f14..71d9354a8a 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneFaultValues.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetConstructedDataLifeSafetyZoneFaultValues.java
@@ -119,7 +119,7 @@ public class BACnetConstructedDataLifeSafetyZoneFaultValues extends BACnetConstr
     List<BACnetLifeSafetyStateTagged> faultValues =
         readTerminatedArrayField(
             "faultValues",
-            new DataReaderComplexDefault<>(
+            readComplex(
                 () ->
                     BACnetLifeSafetyStateTagged.staticParse(
... 27329 lines suppressed ...