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 2022/02/14 12:49:07 UTC

[plc4x] branch develop updated: refactor(plc4go/codegen): fixed virtual field implementation

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


The following commit(s) were added to refs/heads/develop by this push:
     new e02e64d  refactor(plc4go/codegen): fixed virtual field implementation
e02e64d is described below

commit e02e64d518b164e214fa7e6c753f1436a73f2262
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Feb 14 13:48:55 2022 +0100

    refactor(plc4go/codegen): fixed virtual field implementation
    
    + Added parser arguments as field like in plc4j
    + fixed several bugs in code generation
---
 .../BaseFreemarkerLanguageTemplateHelper.java      |   2 +-
 .../language/go/GoLanguageTemplateHelper.java      | 114 +++++----
 .../templates/go/data-io-template.go.ftlh          |  16 +-
 .../resources/templates/go/enum-template.go.ftlh   |   6 +-
 .../resources/templates/go/model-template.go.ftlh  | 147 ++++++------
 .../protocols/bacnet/ParserSerializerTestsuite.xml |  32 +--
 .../model/CIPEncapsulationConnectionRequest.go     |  21 +-
 .../model/CIPEncapsulationConnectionResponse.go    |  21 +-
 .../readwrite/model/CIPEncapsulationPacket.go      |  25 +-
 .../readwrite/model/CIPEncapsulationReadRequest.go |  23 +-
 .../model/CIPEncapsulationReadResponse.go          |  28 ++-
 .../readwrite/model/DF1CommandRequestMessage.go    |  23 +-
 ...mandResponseMessageProtectedTypedLogicalRead.go |  28 ++-
 .../abeth/readwrite/model/DF1RequestCommand.go     |  23 +-
 .../abeth/readwrite/model/DF1RequestMessage.go     |  23 +-
 .../model/DF1RequestProtectedTypedLogicalRead.go   |  21 +-
 .../abeth/readwrite/model/DF1ResponseMessage.go    |  32 +--
 .../model/AdsAddDeviceNotificationRequest.go       |  21 +-
 .../model/AdsAddDeviceNotificationResponse.go      |  21 +-
 .../internal/plc4go/ads/readwrite/model/AdsData.go |  23 +-
 .../plc4go/ads/readwrite/model/AdsDataType.go      |   6 +-
 .../model/AdsDeleteDeviceNotificationRequest.go    |  21 +-
 .../model/AdsDeleteDeviceNotificationResponse.go   |  21 +-
 .../model/AdsDeviceNotificationRequest.go          |  23 +-
 .../model/AdsDeviceNotificationResponse.go         |  21 +-
 .../ads/readwrite/model/AdsInvalidRequest.go       |  21 +-
 .../ads/readwrite/model/AdsInvalidResponse.go      |  21 +-
 .../ads/readwrite/model/AdsMultiRequestItem.go     |  23 +-
 .../ads/readwrite/model/AdsMultiRequestItemRead.go |  21 +-
 .../model/AdsMultiRequestItemReadWrite.go          |  21 +-
 .../readwrite/model/AdsMultiRequestItemWrite.go    |  21 +-
 .../ads/readwrite/model/AdsNotificationSample.go   |  19 +-
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |  21 +-
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |  21 +-
 .../plc4go/ads/readwrite/model/AdsReadRequest.go   |  21 +-
 .../plc4go/ads/readwrite/model/AdsReadResponse.go  |  23 +-
 .../ads/readwrite/model/AdsReadStateRequest.go     |  21 +-
 .../ads/readwrite/model/AdsReadStateResponse.go    |  21 +-
 .../ads/readwrite/model/AdsReadWriteRequest.go     |  25 +-
 .../ads/readwrite/model/AdsReadWriteResponse.go    |  23 +-
 .../plc4go/ads/readwrite/model/AdsStampHeader.go   |  21 +-
 .../ads/readwrite/model/AdsWriteControlRequest.go  |  23 +-
 .../ads/readwrite/model/AdsWriteControlResponse.go |  21 +-
 .../plc4go/ads/readwrite/model/AdsWriteRequest.go  |  23 +-
 .../plc4go/ads/readwrite/model/AdsWriteResponse.go |  21 +-
 .../plc4go/ads/readwrite/model/AmsNetId.go         |  19 +-
 .../plc4go/ads/readwrite/model/AmsPacket.go        |  31 +--
 .../readwrite/model/AmsSerialAcknowledgeFrame.go   |  19 +-
 .../plc4go/ads/readwrite/model/AmsSerialFrame.go   |  21 +-
 .../ads/readwrite/model/AmsSerialResetFrame.go     |  19 +-
 .../plc4go/ads/readwrite/model/AmsTCPPacket.go     |  23 +-
 .../plc4go/ads/readwrite/model/CommandId.go        |   6 +-
 .../plc4go/ads/readwrite/model/DataItem.go         |  12 +-
 .../ads/readwrite/model/ReservedIndexGroups.go     |   6 +-
 .../plc4go/ads/readwrite/model/ReturnCode.go       |   6 +-
 .../internal/plc4go/ads/readwrite/model/State.go   |  19 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |  32 +--
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |  28 ++-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |  30 ++-
 .../readwrite/model/APDUConfirmedRequest.go        |  30 ++-
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |  30 ++-
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |  28 ++-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |  28 ++-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |  28 ++-
 .../readwrite/model/APDUUnconfirmedRequest.go      |  30 ++-
 .../plc4go/bacnetip/readwrite/model/APDUUnknown.go |  28 ++-
 .../bacnetip/readwrite/model/BACnetAction.go       |  54 +++--
 .../readwrite/model/BACnetActionCommand.go         |  39 +--
 .../bacnetip/readwrite/model/BACnetAddress.go      |  19 +-
 .../readwrite/model/BACnetApplicationTag.go        |  57 +++--
 .../model/BACnetApplicationTagBitString.go         |  33 ++-
 .../readwrite/model/BACnetApplicationTagBoolean.go |  46 ++--
 .../model/BACnetApplicationTagCharacterString.go   |  44 ++--
 .../readwrite/model/BACnetApplicationTagDate.go    |  31 ++-
 .../readwrite/model/BACnetApplicationTagDouble.go  |  44 ++--
 .../model/BACnetApplicationTagEnumerated.go        |  46 ++--
 .../readwrite/model/BACnetApplicationTagNull.go    |  29 ++-
 .../model/BACnetApplicationTagObjectIdentifier.go  |  55 ++---
 .../model/BACnetApplicationTagOctetString.go       |  44 ++--
 .../readwrite/model/BACnetApplicationTagReal.go    |  44 ++--
 .../model/BACnetApplicationTagSignedInteger.go     |  33 ++-
 .../readwrite/model/BACnetApplicationTagTime.go    |  31 ++-
 .../model/BACnetApplicationTagUnsignedInteger.go   |  33 ++-
 .../bacnetip/readwrite/model/BACnetBinaryPV.go     |  54 +++--
 .../readwrite/model/BACnetCharacterEncoding.go     |   6 +-
 .../bacnetip/readwrite/model/BACnetClosingTag.go   |  34 +--
 .../readwrite/model/BACnetConfirmedServiceACK.go   |  23 +-
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |  21 +-
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |  21 +-
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |  21 +-
 .../model/BACnetConfirmedServiceACKCreateObject.go |  21 +-
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |  21 +-
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |  21 +-
 ...BACnetConfirmedServiceACKGetEventInformation.go |  21 +-
 .../model/BACnetConfirmedServiceACKReadProperty.go |  21 +-
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |  21 +-
 .../model/BACnetConfirmedServiceACKReadRange.go    |  21 +-
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |  21 +-
 ...rmedServiceACKRemovedReadPropertyConditional.go |  21 +-
 .../model/BACnetConfirmedServiceACKVTData.go       |  21 +-
 .../model/BACnetConfirmedServiceACKVTOpen.go       |  21 +-
 .../model/BACnetConfirmedServiceAddListElement.go  |  21 +-
 .../model/BACnetConfirmedServiceRequest.go         |  30 ++-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |  28 ++-
 .../BACnetConfirmedServiceRequestAddListElement.go |  28 ++-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |  32 +--
 ...tConfirmedServiceRequestAtomicReadFileRecord.go |  32 +--
 ...tConfirmedServiceRequestAtomicReadFileStream.go |  32 +--
 ...edServiceRequestAtomicReadFileStreamOrRecord.go |  48 ++--
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |  38 +--
 ...firmedServiceRequestConfirmedCOVNotification.go |  40 ++--
 ...rviceRequestConfirmedCOVNotificationMultiple.go |  28 ++-
 ...rmedServiceRequestConfirmedEventNotification.go |  56 +++--
 ...firmedServiceRequestConfirmedPrivateTransfer.go |  28 ++-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |  28 ++-
 ...ACnetConfirmedServiceRequestConfirmedUnknown.go |  28 ++-
 .../BACnetConfirmedServiceRequestCreateObject.go   |  28 ++-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |  28 ++-
 ...rmedServiceRequestDeviceCommunicationControl.go |  34 +--
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |  28 ++-
 ...etConfirmedServiceRequestGetEventInformation.go |  28 ++-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |  28 ++-
 .../BACnetConfirmedServiceRequestReadProperty.go   |  34 +--
 ...tConfirmedServiceRequestReadPropertyMultiple.go |  30 ++-
 .../BACnetConfirmedServiceRequestReadRange.go      |  28 ++-
 ...netConfirmedServiceRequestReinitializeDevice.go |  32 +--
 ...erviceRequestReinitializeDeviceEnableDisable.go |  65 ++---
 ...CnetConfirmedServiceRequestRemoveListElement.go |  28 ++-
 ...etConfirmedServiceRequestRemovedAuthenticate.go |  28 ++-
 ...ServiceRequestRemovedReadPropertyConditional.go |  28 ++-
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |  28 ++-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |  36 +--
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |  28 ++-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |  28 ++-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |  28 ++-
 .../model/BACnetConfirmedServiceRequestVTData.go   |  28 ++-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |  28 ++-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |  40 ++--
 ...ConfirmedServiceRequestWritePropertyMultiple.go |  28 ++-
 .../readwrite/model/BACnetConstructedData.go       |  54 +++--
 .../model/BACnetConstructedDataCommand.go          |  38 +--
 .../model/BACnetConstructedDataElement.go          | 101 +++++---
 .../model/BACnetConstructedDataEventTimestamps.go  |  38 +--
 .../model/BACnetConstructedDataLifeSafetyZone.go   |  34 +--
 .../model/BACnetConstructedDataUnspecified.go      |  51 ++--
 .../bacnetip/readwrite/model/BACnetContextTag.go   |  71 +++---
 .../readwrite/model/BACnetContextTagBitString.go   |  38 +--
 .../readwrite/model/BACnetContextTagBoolean.go     |  53 ++---
 .../model/BACnetContextTagCharacterString.go       |  38 +--
 .../readwrite/model/BACnetContextTagDate.go        |  36 +--
 .../readwrite/model/BACnetContextTagDeviceState.go |  34 +--
 .../readwrite/model/BACnetContextTagDouble.go      |  49 ++--
 .../readwrite/model/BACnetContextTagEmpty.go       |  33 +--
 .../readwrite/model/BACnetContextTagEnumerated.go  |  54 +++--
 .../readwrite/model/BACnetContextTagEventState.go  |  50 ++--
 .../readwrite/model/BACnetContextTagEventType.go   |  50 ++--
 .../readwrite/model/BACnetContextTagNotifyType.go  |  35 +--
 .../model/BACnetContextTagObjectIdentifier.go      |  60 +++--
 .../readwrite/model/BACnetContextTagOctetString.go |  38 +--
 .../model/BACnetContextTagPropertyIdentifier.go    |  50 ++--
 .../readwrite/model/BACnetContextTagReal.go        |  49 ++--
 .../model/BACnetContextTagSignedInteger.go         |  38 +--
 .../readwrite/model/BACnetContextTagTime.go        |  36 +--
 .../model/BACnetContextTagUnsignedInteger.go       |  38 +--
 .../bacnetip/readwrite/model/BACnetDataType.go     |   6 +-
 .../bacnetip/readwrite/model/BACnetDateTime.go     |  36 +--
 .../model/BACnetDeviceObjectPropertyReference.go   |  40 ++--
 .../bacnetip/readwrite/model/BACnetDeviceState.go  |   6 +-
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |  27 ++-
 .../readwrite/model/BACnetErrorAcknowledgeAlarm.go |  21 +-
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |  21 +-
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |  21 +-
 .../model/BACnetErrorConfirmedEventNotification.go |  21 +-
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |  21 +-
 .../readwrite/model/BACnetErrorCreateObject.go     |  21 +-
 .../BACnetErrorDeviceCommunicationProtocol.go      |  21 +-
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |  21 +-
 .../model/BACnetErrorGetEnrollmentSummary.go       |  21 +-
 .../model/BACnetErrorGetEventInformation.go        |  21 +-
 .../readwrite/model/BACnetErrorPasswordFailure.go  |  21 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |  21 +-
 .../model/BACnetErrorReadPropertyMultiple.go       |  21 +-
 .../readwrite/model/BACnetErrorReadRange.go        |  21 +-
 .../model/BACnetErrorRemovedAuthenticate.go        |  21 +-
 .../BACnetErrorRemovedReadPropertyConditional.go   |  21 +-
 .../bacnetip/readwrite/model/BACnetErrorUnknown.go |  21 +-
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |  21 +-
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |  21 +-
 .../readwrite/model/BACnetErrorWriteProperty.go    |  21 +-
 .../bacnetip/readwrite/model/BACnetEventState.go   |   6 +-
 .../bacnetip/readwrite/model/BACnetEventType.go    |   6 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |   6 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |   6 +-
 .../model/BACnetNotificationParameters.go          |  50 ++--
 .../BACnetNotificationParametersBufferReady.go     |  42 ++--
 ...ACnetNotificationParametersChangeOfBitString.go |  40 ++--
 .../BACnetNotificationParametersChangeOfState.go   |  40 ++--
 .../BACnetNotificationParametersChangeOfValue.go   |  40 ++--
 ...tNotificationParametersChangeOfValueNewValue.go |  49 ++--
 ...onParametersChangeOfValueNewValueChangedBits.go |  33 +--
 ...nParametersChangeOfValueNewValueChangedValue.go |  33 +--
 ...BACnetNotificationParametersComplexEventType.go |  34 +--
 .../model/BACnetNotificationParametersExtended.go  |  42 ++--
 ...CnetNotificationParametersExtendedParameters.go |  60 ++---
 .../BACnetNotificationParametersFloatingLimit.go   |  44 ++--
 .../BACnetNotificationParametersOutOfRange.go      |  44 ++--
 .../BACnetNotificationParametersUnsignedRange.go   |  42 ++--
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   6 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |   6 +-
 .../bacnetip/readwrite/model/BACnetOpeningTag.go   |  34 +--
 .../readwrite/model/BACnetPropertyIdentifier.go    |   6 +-
 .../readwrite/model/BACnetPropertyReference.go     |  23 +-
 .../readwrite/model/BACnetPropertyStates.go        |  49 ++--
 .../readwrite/model/BACnetPropertyStatesAction.go  |  33 +--
 .../model/BACnetPropertyStatesBinaryValue.go       |  33 +--
 .../readwrite/model/BACnetPropertyStatesBoolean.go |  33 +--
 .../readwrite/model/BACnetPropertyValue.go         |  36 +--
 .../readwrite/model/BACnetPropertyValues.go        |  35 +--
 .../model/BACnetReadAccessSpecification.go         |  27 ++-
 .../bacnetip/readwrite/model/BACnetSegmentation.go |  65 +++--
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |  23 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |  25 +-
 .../model/BACnetServiceAckAtomicReadFileRecord.go  |  38 +--
 .../model/BACnetServiceAckAtomicReadFileStream.go  |  32 +--
 ...BACnetServiceAckAtomicReadFileStreamOrRecord.go |  48 ++--
 .../model/BACnetServiceAckAtomicWriteFile.go       |  23 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |  21 +-
 .../model/BACnetServiceAckCreateObject.go          |  21 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |  21 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |  21 +-
 .../model/BACnetServiceAckGetEventInformation.go   |  21 +-
 .../model/BACnetServiceAckReadProperty.go          |  31 +--
 .../model/BACnetServiceAckReadPropertyMultiple.go  |  21 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |  21 +-
 .../model/BACnetServiceAckRemovedAuthenticate.go   |  21 +-
 ...CnetServiceAckRemovedReadPropertyConditional.go |  21 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |  21 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |  21 +-
 .../bacnetip/readwrite/model/BACnetStatusFlags.go  |  68 +++---
 .../bacnetip/readwrite/model/BACnetTagHeader.go    | 118 ++++++---
 .../readwrite/model/BACnetTagPayloadBitString.go   |  28 ++-
 .../readwrite/model/BACnetTagPayloadBoolean.go     |  49 ++--
 .../model/BACnetTagPayloadCharacterString.go       |  43 ++--
 .../readwrite/model/BACnetTagPayloadDate.go        | 164 ++++++-------
 .../readwrite/model/BACnetTagPayloadDouble.go      |  19 +-
 .../readwrite/model/BACnetTagPayloadEnumerated.go  |  37 +--
 .../model/BACnetTagPayloadObjectIdentifier.go      |  36 +--
 .../readwrite/model/BACnetTagPayloadOctetString.go |  41 ++--
 .../readwrite/model/BACnetTagPayloadReal.go        |  19 +-
 .../model/BACnetTagPayloadSignedInteger.go         | 265 ++++++++++++++++-----
 .../readwrite/model/BACnetTagPayloadTime.go        | 114 +++++----
 .../model/BACnetTagPayloadUnsignedInteger.go       | 109 ++++++---
 .../bacnetip/readwrite/model/BACnetTimeStamp.go    |  49 ++--
 .../readwrite/model/BACnetTimeStampDateTime.go     |  33 +--
 .../readwrite/model/BACnetTimeStampSequence.go     |  33 +--
 .../readwrite/model/BACnetTimeStampTime.go         |  33 +--
 .../model/BACnetUnconfirmedServiceRequest.go       |  30 ++-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |  36 +--
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |  34 +--
 ...UnconfirmedServiceRequestTimeSynchronization.go |  32 +--
 ...onfirmedServiceRequestUTCTimeSynchronization.go |  28 ++-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |  40 ++--
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |  28 ++-
 ...edServiceRequestUnconfirmedEventNotification.go |  28 ++-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |  34 +--
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |  28 ++-
 ...tUnconfirmedServiceRequestUnconfirmedUnknown.go |  28 ++-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |  36 +--
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |  32 +--
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |  28 ++-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |  42 ++--
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |  29 ++-
 .../model/BVLCDistributeBroadcastToNetwork.go      |  32 +--
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |  32 +--
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |  32 +--
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |  32 +--
 .../model/BVLCReadBroadcastDistributionTable.go    |  29 ++-
 .../model/BVLCReadBroadcastDistributionTableAck.go |  29 ++-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |  29 ++-
 .../model/BVLCReadForeignDeviceTableAck.go         |  29 ++-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |  29 ++-
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |  29 ++-
 .../bacnetip/readwrite/model/BVLCResultCode.go     |   6 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |  29 ++-
 .../model/BVLCWriteBroadcastDistributionTable.go   |  32 +--
 .../BVLCWriteBroadcastDistributionTableEntry.go    |  19 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |  32 +--
 .../model/NLMDisconnectConnectionToNetwork.go      |  28 ++-
 .../model/NLMEstablishConnectionToNetwork.go       |  28 ++-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |  28 ++-
 .../readwrite/model/NLMICouldBeRouterToNetwork.go  |  28 ++-
 .../readwrite/model/NLMInitalizeRoutingTable.go    |  30 ++-
 .../readwrite/model/NLMInitalizeRoutingTableAck.go |  30 ++-
 .../model/NLMInitalizeRoutingTablePortMapping.go   |  19 +-
 .../readwrite/model/NLMRejectRouterToNetwork.go    |  28 ++-
 .../model/NLMRejectRouterToNetworkRejectReason.go  |   6 +-
 .../readwrite/model/NLMRouterAvailableToNetwork.go |  28 ++-
 .../readwrite/model/NLMRouterBusyToNetwork.go      |  28 ++-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |  28 ++-
 .../plc4go/bacnetip/readwrite/model/NPDU.go        | 125 ++++++----
 .../plc4go/bacnetip/readwrite/model/NPDUControl.go |  19 +-
 .../readwrite/model/NPDUNetworkPriority.go         |   6 +-
 .../plc4go/bacnetip/readwrite/model/TagClass.go    |   6 +-
 .../plc4go/df1/readwrite/model/DF1Command.go       |  23 +-
 .../plc4go/df1/readwrite/model/DF1Symbol.go        |  23 +-
 .../df1/readwrite/model/DF1SymbolMessageFrame.go   |  25 +-
 .../readwrite/model/DF1SymbolMessageFrameACK.go    |  21 +-
 .../readwrite/model/DF1SymbolMessageFrameNAK.go    |  21 +-
 .../readwrite/model/DF1UnprotectedReadRequest.go   |  21 +-
 .../readwrite/model/DF1UnprotectedReadResponse.go  |  21 +-
 plc4go/internal/plc4go/eip/Reader.go               |  16 +-
 plc4go/internal/plc4go/eip/Writer.go               |  16 +-
 .../plc4go/eip/readwrite/model/CIPDataTypeCode.go  |   6 +-
 .../plc4go/eip/readwrite/model/CipExchange.go      |  32 +--
 .../plc4go/eip/readwrite/model/CipRRData.go        |  28 ++-
 .../plc4go/eip/readwrite/model/CipReadRequest.go   |  28 ++-
 .../plc4go/eip/readwrite/model/CipReadResponse.go  |  28 ++-
 .../plc4go/eip/readwrite/model/CipService.go       |  32 +--
 .../eip/readwrite/model/CipUnconnectedRequest.go   |  32 +--
 .../plc4go/eip/readwrite/model/CipWriteRequest.go  |  28 ++-
 .../plc4go/eip/readwrite/model/CipWriteResponse.go |  28 ++-
 .../plc4go/eip/readwrite/model/EiPCommand.go       |   6 +-
 .../eip/readwrite/model/EipConnectionRequest.go    |  21 +-
 .../eip/readwrite/model/EipDisconnectRequest.go    |  21 +-
 .../plc4go/eip/readwrite/model/EipPacket.go        |  25 +-
 .../eip/readwrite/model/MultipleServiceRequest.go  |  30 ++-
 .../eip/readwrite/model/MultipleServiceResponse.go |  28 ++-
 .../plc4go/eip/readwrite/model/Services.go         |  30 ++-
 .../firmata/readwrite/model/FirmataCommand.go      |  32 +--
 .../model/FirmataCommandProtocolVersion.go         |  28 ++-
 .../model/FirmataCommandSetDigitalPinValue.go      |  28 ++-
 .../readwrite/model/FirmataCommandSetPinMode.go    |  28 ++-
 .../firmata/readwrite/model/FirmataCommandSysex.go |  30 ++-
 .../readwrite/model/FirmataCommandSystemReset.go   |  28 ++-
 .../firmata/readwrite/model/FirmataMessage.go      |  32 +--
 .../readwrite/model/FirmataMessageAnalogIO.go      |  28 ++-
 .../readwrite/model/FirmataMessageCommand.go       |  30 ++-
 .../readwrite/model/FirmataMessageDigitalIO.go     |  28 ++-
 .../model/FirmataMessageSubscribeAnalogPinValue.go |  28 ++-
 .../FirmataMessageSubscribeDigitalPinValue.go      |  28 ++-
 .../plc4go/firmata/readwrite/model/PinMode.go      |   6 +-
 .../plc4go/firmata/readwrite/model/SysexCommand.go |  23 +-
 .../model/SysexCommandAnalogMappingQueryRequest.go |  21 +-
 .../SysexCommandAnalogMappingQueryResponse.go      |  21 +-
 .../model/SysexCommandAnalogMappingResponse.go     |  21 +-
 .../readwrite/model/SysexCommandCapabilityQuery.go |  21 +-
 .../model/SysexCommandCapabilityResponse.go        |  21 +-
 .../readwrite/model/SysexCommandExtendedAnalog.go  |  21 +-
 .../readwrite/model/SysexCommandExtendedId.go      |  21 +-
 .../readwrite/model/SysexCommandPinStateQuery.go   |  21 +-
 .../model/SysexCommandPinStateResponse.go          |  21 +-
 .../model/SysexCommandReportFirmwareRequest.go     |  21 +-
 .../model/SysexCommandReportFirmwareResponse.go    |  21 +-
 .../model/SysexCommandSamplingInterval.go          |  21 +-
 .../readwrite/model/SysexCommandStringData.go      |  21 +-
 .../model/SysexCommandSysexNonRealtime.go          |  21 +-
 .../readwrite/model/SysexCommandSysexRealtime.go   |  21 +-
 .../knxnetip/ConnectionInternalOperations.go       |  47 +++-
 plc4go/internal/plc4go/knxnetip/Reader.go          |   2 +-
 plc4go/internal/plc4go/knxnetip/Subscriber.go      |   2 +-
 .../plc4go/knxnetip/readwrite/model/AccessLevel.go |   6 +-
 .../plc4go/knxnetip/readwrite/model/Apdu.go        |  32 +--
 .../plc4go/knxnetip/readwrite/model/ApduControl.go |  23 +-
 .../knxnetip/readwrite/model/ApduControlAck.go     |  21 +-
 .../knxnetip/readwrite/model/ApduControlConnect.go |  21 +-
 .../readwrite/model/ApduControlContainer.go        |  30 ++-
 .../readwrite/model/ApduControlDisconnect.go       |  21 +-
 .../knxnetip/readwrite/model/ApduControlNack.go    |  21 +-
 .../plc4go/knxnetip/readwrite/model/ApduData.go    |  32 +--
 .../knxnetip/readwrite/model/ApduDataAdcRead.go    |  28 ++-
 .../readwrite/model/ApduDataAdcResponse.go         |  28 ++-
 .../knxnetip/readwrite/model/ApduDataContainer.go  |  30 ++-
 .../model/ApduDataDeviceDescriptorRead.go          |  28 ++-
 .../model/ApduDataDeviceDescriptorResponse.go      |  28 ++-
 .../plc4go/knxnetip/readwrite/model/ApduDataExt.go |  32 +--
 .../readwrite/model/ApduDataExtAuthorizeRequest.go |  28 ++-
 .../model/ApduDataExtAuthorizeResponse.go          |  28 ++-
 .../model/ApduDataExtDomainAddressRead.go          |  28 ++-
 .../model/ApduDataExtDomainAddressResponse.go      |  28 ++-
 .../model/ApduDataExtDomainAddressSelectiveRead.go |  28 ++-
 .../ApduDataExtDomainAddressSerialNumberRead.go    |  28 ++-
 ...ApduDataExtDomainAddressSerialNumberResponse.go |  28 ++-
 .../ApduDataExtDomainAddressSerialNumberWrite.go   |  28 ++-
 .../model/ApduDataExtDomainAddressWrite.go         |  28 ++-
 .../model/ApduDataExtFileStreamInfoReport.go       |  28 ++-
 .../ApduDataExtGroupPropertyValueInfoReport.go     |  28 ++-
 .../model/ApduDataExtGroupPropertyValueRead.go     |  28 ++-
 .../model/ApduDataExtGroupPropertyValueResponse.go |  28 ++-
 .../model/ApduDataExtGroupPropertyValueWrite.go    |  28 ++-
 ...ApduDataExtIndividualAddressSerialNumberRead.go |  28 ++-
 ...DataExtIndividualAddressSerialNumberResponse.go |  28 ++-
 ...pduDataExtIndividualAddressSerialNumberWrite.go |  28 ++-
 .../readwrite/model/ApduDataExtKeyResponse.go      |  28 ++-
 .../readwrite/model/ApduDataExtKeyWrite.go         |  28 ++-
 .../readwrite/model/ApduDataExtLinkRead.go         |  28 ++-
 .../readwrite/model/ApduDataExtLinkResponse.go     |  28 ++-
 .../readwrite/model/ApduDataExtLinkWrite.go        |  28 ++-
 .../readwrite/model/ApduDataExtMemoryBitWrite.go   |  28 ++-
 .../model/ApduDataExtNetworkParameterRead.go       |  28 ++-
 .../model/ApduDataExtNetworkParameterResponse.go   |  28 ++-
 .../model/ApduDataExtNetworkParameterWrite.go      |  28 ++-
 .../model/ApduDataExtOpenRoutingTableRequest.go    |  28 ++-
 .../model/ApduDataExtPropertyDescriptionRead.go    |  28 ++-
 .../ApduDataExtPropertyDescriptionResponse.go      |  28 ++-
 .../model/ApduDataExtPropertyValueRead.go          |  28 ++-
 .../model/ApduDataExtPropertyValueResponse.go      |  28 ++-
 .../model/ApduDataExtPropertyValueWrite.go         |  28 ++-
 .../model/ApduDataExtReadRouterMemoryRequest.go    |  28 ++-
 .../model/ApduDataExtReadRouterMemoryResponse.go   |  28 ++-
 .../model/ApduDataExtReadRouterStatusRequest.go    |  28 ++-
 .../model/ApduDataExtReadRouterStatusResponse.go   |  28 ++-
 .../model/ApduDataExtReadRoutingTableRequest.go    |  28 ++-
 .../model/ApduDataExtReadRoutingTableResponse.go   |  28 ++-
 .../model/ApduDataExtWriteRouterMemoryRequest.go   |  28 ++-
 .../model/ApduDataExtWriteRouterStatusRequest.go   |  28 ++-
 .../model/ApduDataExtWriteRoutingTableRequest.go   |  28 ++-
 .../readwrite/model/ApduDataGroupValueRead.go      |  28 ++-
 .../readwrite/model/ApduDataGroupValueResponse.go  |  28 ++-
 .../readwrite/model/ApduDataGroupValueWrite.go     |  28 ++-
 .../model/ApduDataIndividualAddressRead.go         |  28 ++-
 .../model/ApduDataIndividualAddressResponse.go     |  28 ++-
 .../model/ApduDataIndividualAddressWrite.go        |  28 ++-
 .../knxnetip/readwrite/model/ApduDataMemoryRead.go |  28 ++-
 .../readwrite/model/ApduDataMemoryResponse.go      |  30 ++-
 .../readwrite/model/ApduDataMemoryWrite.go         |  28 ++-
 .../knxnetip/readwrite/model/ApduDataOther.go      |  30 ++-
 .../knxnetip/readwrite/model/ApduDataRestart.go    |  28 ++-
 .../readwrite/model/ApduDataUserMessage.go         |  28 ++-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |  30 ++-
 .../readwrite/model/CEMIAdditionalInformation.go   |  23 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |  21 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |  23 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |   6 +-
 .../knxnetip/readwrite/model/ChannelInformation.go |  19 +-
 .../knxnetip/readwrite/model/ComObjectTable.go     |  23 +-
 .../readwrite/model/ComObjectTableAddresses.go     |   6 +-
 .../model/ComObjectTableRealisationType1.go        |  23 +-
 .../model/ComObjectTableRealisationType2.go        |  23 +-
 .../model/ComObjectTableRealisationType6.go        |  23 +-
 .../knxnetip/readwrite/model/ComObjectValueType.go |   6 +-
 .../knxnetip/readwrite/model/ConnectionRequest.go  |  27 ++-
 .../model/ConnectionRequestInformation.go          |  25 +-
 ...ConnectionRequestInformationDeviceManagement.go |  21 +-
 ...ConnectionRequestInformationTunnelConnection.go |  21 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |  25 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |  25 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |  21 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |  23 +-
 .../readwrite/model/ConnectionStateRequest.go      |  23 +-
 .../readwrite/model/ConnectionStateResponse.go     |  21 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |  31 +--
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |  23 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |  23 +-
 .../readwrite/model/DescriptionResponse.go         |  25 +-
 .../readwrite/model/DeviceConfigurationAck.go      |  23 +-
 .../model/DeviceConfigurationAckDataBlock.go       |  21 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |  32 +--
 .../model/DeviceConfigurationRequestDataBlock.go   |  21 +-
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |   6 +-
 .../readwrite/model/DeviceDescriptorMediumType.go  |   6 +-
 .../readwrite/model/DeviceDescriptorType2.go       |  27 ++-
 .../knxnetip/readwrite/model/DeviceStatus.go       |  19 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |  23 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |  21 +-
 .../knxnetip/readwrite/model/FirmwareType.go       |   6 +-
 .../model/GroupObjectDescriptorRealisationType1.go |  19 +-
 .../model/GroupObjectDescriptorRealisationType2.go |  19 +-
 .../model/GroupObjectDescriptorRealisationType6.go |  19 +-
 .../model/GroupObjectDescriptorRealisationType7.go |  19 +-
 .../model/GroupObjectDescriptorRealisationTypeB.go |  19 +-
 .../readwrite/model/HPAIControlEndpoint.go         |  23 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |  23 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |  23 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |   6 +-
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |  19 +-
 .../plc4go/knxnetip/readwrite/model/KnxAddress.go  |  19 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       |   6 +
 .../readwrite/model/KnxDatapointMainType.go        |   6 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   |   6 +-
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |  23 +-
 .../readwrite/model/KnxGroupAddress2Level.go       |  21 +-
 .../readwrite/model/KnxGroupAddress3Level.go       |  21 +-
 .../readwrite/model/KnxGroupAddressFreeLevel.go    |  21 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |   6 +-
 .../readwrite/model/KnxInterfaceObjectType.go      |   6 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |   6 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    |   6 +-
 .../plc4go/knxnetip/readwrite/model/KnxMedium.go   |   6 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |  21 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |  21 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |  25 +-
 .../knxnetip/readwrite/model/KnxNetIpRouting.go    |  21 +-
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |  21 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |  21 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |  21 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |  21 +-
 .../plc4go/knxnetip/readwrite/model/KnxProperty.go |  10 +-
 .../readwrite/model/KnxPropertyDataType.go         |   6 +-
 .../plc4go/knxnetip/readwrite/model/LBusmonInd.go  |  32 +--
 .../plc4go/knxnetip/readwrite/model/LDataCon.go    |  32 +--
 .../knxnetip/readwrite/model/LDataExtended.go      |  27 ++-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |  23 +-
 .../knxnetip/readwrite/model/LDataFrameACK.go      |  21 +-
 .../plc4go/knxnetip/readwrite/model/LDataInd.go    |  32 +--
 .../plc4go/knxnetip/readwrite/model/LDataReq.go    |  32 +--
 .../plc4go/knxnetip/readwrite/model/LPollData.go   |  23 +-
 .../knxnetip/readwrite/model/LPollDataCon.go       |  28 ++-
 .../knxnetip/readwrite/model/LPollDataReq.go       |  28 ++-
 .../plc4go/knxnetip/readwrite/model/LRawCon.go     |  28 ++-
 .../plc4go/knxnetip/readwrite/model/LRawInd.go     |  28 ++-
 .../plc4go/knxnetip/readwrite/model/LRawReq.go     |  28 ++-
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |  19 +-
 .../readwrite/model/MFuncPropCommandReq.go         |  28 ++-
 .../knxnetip/readwrite/model/MFuncPropCon.go       |  28 ++-
 .../readwrite/model/MFuncPropStateReadReq.go       |  28 ++-
 .../knxnetip/readwrite/model/MPropInfoInd.go       |  28 ++-
 .../knxnetip/readwrite/model/MPropReadCon.go       |  28 ++-
 .../knxnetip/readwrite/model/MPropReadReq.go       |  28 ++-
 .../knxnetip/readwrite/model/MPropWriteCon.go      |  28 ++-
 .../knxnetip/readwrite/model/MPropWriteReq.go      |  28 ++-
 .../plc4go/knxnetip/readwrite/model/MResetInd.go   |  28 ++-
 .../plc4go/knxnetip/readwrite/model/MResetReq.go   |  28 ++-
 .../model/ProjectInstallationIdentifier.go         |  19 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |  19 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |  21 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |  23 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |  27 ++-
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |  23 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |   6 +-
 .../readwrite/model/SupportedPhysicalMedia.go      |   6 +-
 .../knxnetip/readwrite/model/TDataConnectedInd.go  |  28 ++-
 .../knxnetip/readwrite/model/TDataConnectedReq.go  |  28 ++-
 .../knxnetip/readwrite/model/TDataIndividualInd.go |  28 ++-
 .../knxnetip/readwrite/model/TDataIndividualReq.go |  28 ++-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |  32 +--
 .../readwrite/model/TunnelingRequestDataBlock.go   |  21 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |  23 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |  21 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |  26 +-
 plc4go/internal/plc4go/modbus/Connection.go        |   2 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |  42 ++--
 .../modbus/readwrite/model/ModbusConstants.go      |  19 +-
 .../modbus/readwrite/model/ModbusDataType.go       |   6 +-
 .../modbus/readwrite/model/ModbusErrorCode.go      |   6 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |  23 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |  21 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |  21 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |  21 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |  21 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |  21 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |  21 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |  23 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |  21 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |  21 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |  21 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |  23 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |  21 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |  21 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |  21 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |  23 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |  21 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |  21 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |  21 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |  25 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |  27 ++-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |  19 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |  27 ++-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |  21 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |  21 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |  23 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |  21 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |  23 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |  23 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |  23 +-
 .../model/ModbusPDUReportServerIdRequest.go        |  21 +-
 .../model/ModbusPDUReportServerIdResponse.go       |  23 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |  27 ++-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |  21 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |  27 ++-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |  21 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |  23 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |  21 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |  23 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |  21 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |  21 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |  21 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |  21 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |  21 +-
 .../modbus/readwrite/model/ModbusSerialADU.go      |  30 ++-
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |  32 +--
 plc4go/internal/plc4go/s7/Connection.go            |  12 +-
 plc4go/internal/plc4go/s7/Reader.go                |   1 +
 plc4go/internal/plc4go/s7/Writer.go                |   3 +-
 .../model/AlarmMessageAckObjectPushType.go         |  23 +-
 .../s7/readwrite/model/AlarmMessageAckPushType.go  |  23 +-
 .../readwrite/model/AlarmMessageAckResponseType.go |  19 +-
 .../s7/readwrite/model/AlarmMessageAckType.go      |  21 +-
 .../readwrite/model/AlarmMessageObjectAckType.go   |  23 +-
 .../readwrite/model/AlarmMessageObjectPushType.go  |  29 +--
 .../readwrite/model/AlarmMessageObjectQueryType.go |  33 +--
 .../s7/readwrite/model/AlarmMessagePushType.go     |  23 +-
 .../s7/readwrite/model/AlarmMessageQueryType.go    |  21 +-
 .../plc4go/s7/readwrite/model/AlarmStateType.go    |   6 +-
 .../plc4go/s7/readwrite/model/AlarmType.go         |   6 +-
 .../s7/readwrite/model/AssociatedValueType.go      |  21 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |  38 +--
 .../readwrite/model/COTPPacketConnectionRequest.go |  28 ++-
 .../model/COTPPacketConnectionResponse.go          |  28 ++-
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |  28 ++-
 .../readwrite/model/COTPPacketDisconnectRequest.go |  28 ++-
 .../model/COTPPacketDisconnectResponse.go          |  28 ++-
 .../s7/readwrite/model/COTPPacketTpduError.go      |  28 ++-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |  32 +--
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |  28 ++-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |  28 ++-
 .../s7/readwrite/model/COTPParameterChecksum.go    |  28 ++-
 ...COTPParameterDisconnectAdditionalInformation.go |  28 ++-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |  28 ++-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |   6 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |   6 +-
 .../s7/readwrite/model/CpuSubscribeEvents.go       |   6 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |  12 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |   6 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |   6 +-
 .../plc4go/s7/readwrite/model/DateAndTime.go       |  33 +--
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |   6 +-
 .../plc4go/s7/readwrite/model/EventType.go         |   6 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |   6 +-
 .../s7/readwrite/model/ModeTransitionType.go       |   6 +-
 .../plc4go/s7/readwrite/model/QueryType.go         |   6 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |  23 +-
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |  21 +-
 .../s7/readwrite/model/S7DataAlarmMessage.go       |  23 +-
 .../plc4go/s7/readwrite/model/S7Message.go         |  31 +--
 .../s7/readwrite/model/S7MessageObjectRequest.go   |  21 +-
 .../s7/readwrite/model/S7MessageObjectResponse.go  |  21 +-
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |  21 +-
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |  21 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |  21 +-
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |  21 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |  23 +-
 .../readwrite/model/S7ParameterModeTransition.go   |  23 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |  25 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |  21 +-
 .../model/S7ParameterSetupCommunication.go         |  21 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |  25 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |  23 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |  23 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |  25 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |  21 +-
 .../plc4go/s7/readwrite/model/S7Payload.go         |  32 +--
 .../plc4go/s7/readwrite/model/S7PayloadAlarm8.go   |  23 +-
 .../s7/readwrite/model/S7PayloadAlarmAckInd.go     |  23 +-
 .../plc4go/s7/readwrite/model/S7PayloadAlarmS.go   |  23 +-
 .../plc4go/s7/readwrite/model/S7PayloadAlarmSC.go  |  23 +-
 .../plc4go/s7/readwrite/model/S7PayloadAlarmSQ.go  |  23 +-
 .../readwrite/model/S7PayloadDiagnosticMessage.go  |  23 +-
 .../plc4go/s7/readwrite/model/S7PayloadNotify.go   |  23 +-
 .../plc4go/s7/readwrite/model/S7PayloadNotify8.go  |  23 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |  34 +--
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |  36 +--
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |  25 +-
 .../S7PayloadUserDataItemCpuFunctionAlarmAck.go    |  25 +-
 ...yloadUserDataItemCpuFunctionAlarmAckResponse.go |  23 +-
 .../S7PayloadUserDataItemCpuFunctionAlarmQuery.go  |  21 +-
 ...oadUserDataItemCpuFunctionAlarmQueryResponse.go |  21 +-
 ...ayloadUserDataItemCpuFunctionMsgSubscription.go |  21 +-
 ...aItemCpuFunctionMsgSubscriptionAlarmResponse.go |  21 +-
 ...erDataItemCpuFunctionMsgSubscriptionResponse.go |  21 +-
 ...ataItemCpuFunctionMsgSubscriptionSysResponse.go |  21 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |  23 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |  27 ++-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |  34 +--
 .../readwrite/model/S7PayloadWriteVarResponse.go   |  34 +--
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  27 ++-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |  19 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |  23 +-
 .../model/S7VarRequestParameterItemAddress.go      |  25 +-
 plc4go/internal/plc4go/s7/readwrite/model/State.go |  19 +-
 .../plc4go/s7/readwrite/model/SyntaxIdType.go      |   6 +-
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |  19 +-
 plc4go/internal/plc4go/s7/readwrite/model/SzlId.go |  19 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |   6 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |   6 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |  23 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |   6 +-
 plc4go/internal/plc4go/s7/s7Io_test.go             |  41 ++--
 .../plc4go/simulated/readwrite/model/DataItem.go   |  42 ++--
 .../plc4go/simulated/readwrite/model/Dummy.go      |  19 +-
 .../readwrite/model/SimulatedDataTypeSizes.go      |   6 +-
 .../plc4x/java/bacnetip/RandomPackagesTest.java    |   2 +-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  23 +-
 .../protocols/bacnet/ParserSerializerTestsuite.xml |  32 +--
 693 files changed, 10132 insertions(+), 8448 deletions(-)

diff --git a/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java b/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
index f32f0ea..1634b2e 100644
--- a/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
+++ b/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
@@ -510,7 +510,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         if (isSimpleTypeReference(typeReference)) {
             return false;
         }
-        TypeDefinition typeDefinition = getTypeDefinitionForTypeReference(typedField.getType());
+        TypeDefinition typeDefinition = getTypeDefinitionForTypeReference(typeReference);
         return typeDefinition instanceof EnumTypeDefinition;
     }
 
diff --git a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index 0eb16eb..5a9e5c5 100644
--- a/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/code-generation/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -540,7 +540,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
     }
 
     private String toExpression(Field field, TypeReference fieldType, Term term, List<Argument> parserArguments, List<Argument> serializerArguments, boolean serialize, boolean suppressPointerAccess) {
-        Tracer tracer = Tracer.start("toExpression(suppressPointerAccess="+suppressPointerAccess+")");
+        Tracer tracer = Tracer.start("toExpression(suppressPointerAccess=" + suppressPointerAccess + ")");
         if (term == null) {
             return "";
         }
@@ -563,9 +563,10 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             Term a = ternaryTerm.getA();
             Term b = ternaryTerm.getB();
             Term c = ternaryTerm.getC();
+            String castExpressionForTypeReference = getCastExpressionForTypeReference(fieldType);
             return tracer + "utils.InlineIf(" + toExpression(field, new DefaultBooleanTypeReference(), a, parserArguments, serializerArguments, serialize, false) + ", " +
-                "func() interface{} {return " + getCastExpressionForTypeReference(fieldType) + "(" + toExpression(field, fieldType, b, parserArguments, serializerArguments, serialize, false) + ")}, " +
-                "func() interface{} {return " + getCastExpressionForTypeReference(fieldType) + "(" + toExpression(field, fieldType, c, parserArguments, serializerArguments, serialize, false) + ")}).(" + getCastExpressionForTypeReference(fieldType) + ")";
+                "func() interface{} {return " + castExpressionForTypeReference + "(" + toExpression(field, fieldType, b, parserArguments, serializerArguments, serialize, false) + ")}, " +
+                "func() interface{} {return " + castExpressionForTypeReference + "(" + toExpression(field, fieldType, c, parserArguments, serializerArguments, serialize, false) + ")}).(" + castExpressionForTypeReference + ")";
         } else {
             throw new RuntimeException("Unsupported ternary operation type " + ternaryTerm.getOperation());
         }
@@ -663,26 +664,31 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
     }
 
     private String toVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean serialize, boolean suppressPointerAccess) {
-        Tracer tracer = Tracer.start("toVariableExpression");
-        if ("lengthInBytes".equals(variableLiteral.getName())) {
+        return toVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, false);
+    }
+
+    private String toVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean serialize, boolean suppressPointerAccess, boolean isChild) {
+        Tracer tracer = Tracer.start("toVariableExpression(serialize=" + serialize + ")");
+        String variableLiteralName = variableLiteral.getName();
+        if ("lengthInBytes".equals(variableLiteralName)) {
             return toLengthInBytesVariableExpression(typeReference, serialize, tracer);
-        } else if ("lengthInBits".equals(variableLiteral.getName())) {
+        } else if ("lengthInBits".equals(variableLiteralName)) {
             return toLengthInBitsVariableExpression(typeReference, serialize, tracer);
-        } else if ("_value".equals(variableLiteral.getName())) {
+        } else if ("_value".equals(variableLiteralName)) {
             return toValueVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
         }
         if ("length".equals(variableLiteral.getChild().map(VariableLiteral::getName).orElse(""))) {
             return toLengthVariableExpression(field, variableLiteral, serialize, tracer);
         }
         // If this literal references an Enum type, then we have to output it differently.
-        else if (getTypeDefinitions().get(variableLiteral.getName()) instanceof EnumTypeDefinition) {
+        else if (getTypeDefinitions().get(variableLiteralName) instanceof EnumTypeDefinition) {
             return toEnumVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, suppressPointerAccess, tracer);
         }
         // If we are accessing enum constants, these also need to be output differently.
         else if (thisType.isComplexTypeDefinition()
             && thisType.asComplexTypeDefinition()
             .orElseThrow(IllegalAccessError::new)
-            .getPropertyFieldByName(variableLiteral.getName())
+            .getPropertyFieldByName(variableLiteralName)
             .filter(EnumField.class::isInstance)
             .isPresent()
             && (variableLiteral.getChild().isPresent())
@@ -693,11 +699,22 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         else if (!serialize && thisType.isComplexTypeDefinition()
             && thisType.asComplexTypeDefinition()
             .orElseThrow(IllegalStateException::new)
-            .getPropertyFieldByName(variableLiteral.getName())
+            .getPropertyFieldByName(variableLiteralName)
             .filter(OptionalField.class::isInstance)
             .isPresent()
         ) {
             return toOptionalVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, suppressPointerAccess, tracer);
+        } // If we are accessing optional fields, (we might need to use pointer-access).
+        else if (thisType.isComplexTypeDefinition()
+            && thisType.asComplexTypeDefinition()
+            .orElseThrow(IllegalStateException::new)
+            .getPropertyFieldByName(variableLiteralName)
+            .filter(OptionalField.class::isInstance)
+            .isPresent()
+        ) {
+            tracer = tracer.dive("optional fields 2");
+            return tracer + "(" + (suppressPointerAccess ? "" : "*") + "m.Get"+capitalize(variableLiteral.getName()) + "())" +
+                variableLiteral.getChild().map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true))).orElse("");
         }
         // If we are accessing implicit fields, we need to rely on local variable instead.
         //else if (isVariableLiteralImplicitField(vl)) {
@@ -708,34 +725,35 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         // If we are accessing implicit fields, we need to rely on a local variable instead.
 
         // CAST expressions are special as we need to add a ".class" to the second parameter in Java.
-        else if ("CAST".equals(variableLiteral.getName())) {
+        else if ("CAST".equals(variableLiteralName)) {
             return toCastVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
-        } else if ("STATIC_CALL".equals(variableLiteral.getName())) {
+        } else if ("STATIC_CALL".equals(variableLiteralName)) {
             return toStaticCallVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
-        } else if ("COUNT".equals(variableLiteral.getName())) {
+        } else if ("COUNT".equals(variableLiteralName)) {
             return toCountVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
-        } else if ("ARRAY_SIZE_IN_BYTES".equals(variableLiteral.getName())) {
+        } else if ("ARRAY_SIZE_IN_BYTES".equals(variableLiteralName)) {
             return toArraySizeInBytesVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, suppressPointerAccess, tracer);
-        } else if ("CEIL".equals(variableLiteral.getName())) {
+        } else if ("CEIL".equals(variableLiteralName)) {
             return toCeilVariableExpression(field, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
         }
         // All uppercase names are not fields, but utility methods.
-        else if (variableLiteral.getName().equals(variableLiteral.getName().toUpperCase())) {
+        else if (variableLiteralName.equals(variableLiteralName.toUpperCase())) {
+            tracer = tracer.dive("utility");
             return toUppercaseVariableExpression(field, typeReference, variableLiteral, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer);
         }
         // If the current property references a discriminator value, we have to serialize it differently.
         else if (thisType.isComplexTypeDefinition() && thisType.asComplexTypeDefinition()
             .orElseThrow(IllegalStateException::new)
-            .getPropertyFieldFromThisOrParentByName(variableLiteral.getName())
+            .getPropertyFieldFromThisOrParentByName(variableLiteralName)
             .filter(DiscriminatorField.class::isInstance)
             .isPresent()) {
             tracer = tracer.dive("discriminator value");
             // TODO: Should this return something?
         }
         // If the variable has a child element and we're able to find a type for this ... get the type.
-        else if ((variableLiteral.getChild().isPresent()) && (getTypeReferenceForProperty(((ComplexTypeDefinition) thisType), variableLiteral.getName()).isPresent())) {
+        else if ((variableLiteral.getChild().isPresent()) && (getTypeReferenceForProperty(((ComplexTypeDefinition) thisType), variableLiteralName).isPresent())) {
             tracer = tracer.dive("child element");
-            final Optional<ComplexTypeReference> typeReferenceForProperty = getTypeReferenceForProperty(((ComplexTypeDefinition) thisType), variableLiteral.getName())
+            final Optional<ComplexTypeReference> typeReferenceForProperty = getTypeReferenceForProperty(((ComplexTypeDefinition) thisType), variableLiteralName)
                 .flatMap(TypeReferenceConversions::asComplexTypeReference);
             if (typeReferenceForProperty.isPresent()) {
                 tracer = tracer.dive("complex");
@@ -751,13 +769,17 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                         .filter(curField -> (curField instanceof DiscriminatorField) && ((DiscriminatorField) curField).getName().equals(childProperty))
                         .findFirst();
                     if (matchingDiscriminatorField.isPresent()) {
-                        return tracer + "Cast" + getLanguageTypeNameForTypeReference(complexTypeReference) + "(" + variableLiteral.getName() + ").Child." + capitalize(childProperty) + "()";
+                        return tracer + "Cast" + getLanguageTypeNameForTypeReference(complexTypeReference) + "(" + variableLiteralName + ").Child." + capitalize(childProperty) + "()";
                     }
                     // TODO: is this really meant to fall through?
                     tracer = tracer.dive("we fell through the complex complex");
                 } else if (typeDefinition instanceof EnumTypeDefinition) {
                     tracer = tracer.dive("enum");
-                    return tracer + (serialize ? "m." + capitalize(variableLiteral.getName()) : variableLiteral.getName()) +
+                    String variableAccess = variableLiteralName;
+                    if (isChild) {
+                        variableAccess = "Get" + capitalize(variableLiteralName) + "()";
+                    }
+                    return tracer + (serialize ? "m.Get" + capitalize(variableLiteralName) + "()" : variableAccess) +
                         "." + capitalize(variableLiteral.getChild().orElseThrow(() -> new RuntimeException("enum needs a child")).getName()) + "()";
                 }
             }
@@ -770,17 +792,17 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                 final ImplicitField referencedImplicitField = getReferencedImplicitField(variableLiteral);
                 return tracer + toSerializationExpression(referencedImplicitField, referencedImplicitField.getType(), getReferencedImplicitField(variableLiteral).getSerializeExpression(), serializerArguments);
             } else {
-                return tracer + variableLiteral.getName();
+                return tracer + variableLiteralName;
                 //return toParseExpression(getReferencedImplicitField(vl), getReferencedImplicitField(vl).getSerializeExpression(), serializerArguments);
             }
         }
-        // If the current term references a serialization argument, handle it differently (don't prefix it with "m.")
-        else if ((serializerArguments != null) && serializerArguments.stream()
-            .anyMatch(argument -> argument.getName().equals(variableLiteral.getName()))) {
+
+        if ((serializerArguments != null) && serializerArguments.stream()
+            .anyMatch(argument -> argument.getName().equals(variableLiteralName))) {
             tracer = tracer.dive("serialization argument");
-            return tracer + variableLiteral.getName() +
+            return tracer + "m." + capitalize(variableLiteralName) +
                 variableLiteral.getChild()
-                    .map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess)))
+                    .map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true)))
                     .orElse("");
         }
         String indexCall = "";
@@ -789,15 +811,21 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             // We have a index call
             indexCall = "[" + variableLiteral.getIndex() + "]";
         }
-        return tracer + (serialize ? "m." + capitalize(variableLiteral.getName()) : variableLiteral.getName()) + indexCall +
+        tracer = tracer.dive("else");
+        Tracer tracer2 = tracer;
+        String variableAccess = variableLiteralName;
+        if (isChild) {
+            variableAccess = "Get" + capitalize(variableAccess) + "()";
+        }
+        return tracer + (serialize ? "m.Get" + capitalize(variableLiteralName) + "()" : variableAccess) + indexCall +
             variableLiteral.getChild()
-                .map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess)))
+                .map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true)))
                 .orElse("");
     }
 
     private String toUppercaseVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean serialize, boolean suppressPointerAccess, Tracer tracer) {
         tracer = tracer.dive("toUppercaseVariableExpression");
-        StringBuilder sb = new StringBuilder(capitalize(variableLiteral.getName()));
+        StringBuilder sb = new StringBuilder("Get" + capitalize(variableLiteral.getName()) + "()");
         if (variableLiteral.getArgs().isPresent()) {
             sb.append("(");
             boolean firstArg = true;
@@ -814,7 +842,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             sb.append("[").append(variableLiteral.getIndex()).append("]");
         }
         return tracer + sb.toString() + variableLiteral.getChild()
-            .map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess))
+            .map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true))
             .orElse("");
     }
 
@@ -849,7 +877,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         }
         StringBuilder sb = new StringBuilder();
         if (isSerializerArg) {
-            sb.append(va.getName()).append(va.getChild().map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, true, suppressPointerAccess)).orElse(""));
+            sb.append(va.getName()).append(va.getChild().map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, true, suppressPointerAccess, true)).orElse(""));
         } else {
             sb.append(toVariableExpression(field, typeReference, va, parserArguments, serializerArguments, true, suppressPointerAccess));
         }
@@ -905,7 +933,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                 }
                 if (isParserArg) {
                     if (va.getName().equals("_value")) {
-                        sb.append(va.getName().substring(1)).append(va.getChild().map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess)).orElse(""));
+                        sb.append(va.getName().substring(1)).append(va.getChild().map(child -> "." + toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true)).orElse(""));
                     } else {
                         sb.append(va.getName()).append((va.getChild().isPresent()) ?
                             "." + toVariableExpression(field, typeReference, variableLiteral.getChild().orElseThrow(IllegalStateException::new), parserArguments, serializerArguments, false, suppressPointerAccess) : "");
@@ -939,12 +967,12 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             } else if (arg instanceof BooleanLiteral) {
                 tracer = tracer.dive("BooleanLiteral");
                 sb.append(((BooleanLiteral) arg).getValue());
-            }else if (arg instanceof NumericLiteral) {
+            } else if (arg instanceof NumericLiteral) {
                 tracer = tracer.dive("NumericLiteral");
                 sb.append(((NumericLiteral) arg).getNumber());
             } else if (arg instanceof BinaryTerm) {
                 tracer = tracer.dive("BinaryTerm");
-                sb.append(toBinaryTermExpression(field, typeReference,(BinaryTerm) arg, parserArguments,serializerArguments,serialize,tracer));
+                sb.append(toBinaryTermExpression(field, typeReference, (BinaryTerm) arg, parserArguments, serializerArguments, serialize, tracer));
             } else {
                 throw new RuntimeException(arg.getClass().getName());
             }
@@ -974,49 +1002,49 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         }
         sb.append(typeLiteral.getValue());
         sb.append("(").append(toVariableExpression(field, typeReference, firstArgument, parserArguments, serializerArguments, serialize, suppressPointerAccess)).append(")");
-        return tracer + sb.toString() + variableLiteral.getChild().map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess))).orElse("");
+        return tracer + sb.toString() + variableLiteral.getChild().map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true))).orElse("");
     }
 
     private String toOptionalVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean suppressPointerAccess, Tracer tracer) {
         tracer = tracer.dive("optional fields");
         return tracer + "(" + (suppressPointerAccess ? "" : "*") + variableLiteral.getName() + ")" +
-            variableLiteral.getChild().map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess))).orElse("");
+            variableLiteral.getChild().map(child -> "." + capitalize(toVariableExpression(field, typeReference, child, parserArguments, serializerArguments, false, suppressPointerAccess, true))).orElse("");
     }
 
     private String toConstantVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean suppressPointerAccess, Tracer tracer) {
         tracer = tracer.dive("enum constant");
         VariableLiteral child = variableLiteral.getChild().orElseThrow(IllegalStateException::new);
         return tracer + variableLiteral.getName() + "." + capitalize(child.getName()) + "()" +
-            child.getChild().map(childChild -> "." + toVariableExpression(field, typeReference, childChild, parserArguments, serializerArguments, false, suppressPointerAccess)).orElse("");
+            child.getChild().map(childChild -> "." + toVariableExpression(field, typeReference, childChild, parserArguments, serializerArguments, false, suppressPointerAccess, true)).orElse("");
     }
 
     private String toEnumVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean suppressPointerAccess, Tracer tracer) {
         tracer = tracer.dive("enum");
         VariableLiteral child = variableLiteral.getChild().orElseThrow(() -> new RuntimeException("Enum should have a child"));
         return tracer + variableLiteral.getName() + "_" + child.getName() +
-            child.getChild().map(childChild -> "." + toVariableExpression(field, typeReference, childChild, parserArguments, serializerArguments, false, suppressPointerAccess)).orElse("");
+            child.getChild().map(childChild -> "." + toVariableExpression(field, typeReference, childChild, parserArguments, serializerArguments, false, suppressPointerAccess, true)).orElse("");
     }
 
     private String toLengthVariableExpression(Field field, VariableLiteral variableLiteral, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("length");
-        return tracer + (serialize ? ("len(m." + capitalize(variableLiteral.getName()) + ")") : ("(" + variableLiteral.getName() + ")"));
+        return tracer + (serialize ? ("len(m.Get" + capitalize(variableLiteral.getName()) + "())") : ("(" + variableLiteral.getName() + ")"));
     }
 
     private String toValueVariableExpression(Field field, TypeReference typeReference, VariableLiteral variableLiteral, List<Argument> parserArguments, List<Argument> serializerArguments, boolean serialize, boolean suppressPointerAccess, Tracer tracer) {
         final Tracer tracer2 = tracer.dive("_value");
         return variableLiteral.getChild()
-            .map(child -> tracer2.dive("withChild") +"m."+ toUppercaseVariableExpression(field, typeReference, child, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer2))
+            .map(child -> tracer2.dive("withChild") + "m." + toUppercaseVariableExpression(field, typeReference, child, parserArguments, serializerArguments, serialize, suppressPointerAccess, tracer2))
             .orElse(tracer2 + "m");
     }
 
     private String toLengthInBitsVariableExpression(TypeReference typeReference, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("lengthInBits");
-        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m." : "") + "LengthInBits()" + (serialize ? ")" : "");
+        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m.Get" : "Get") + "LengthInBits" + (serialize ? "())" : "()");
     }
 
     private String toLengthInBytesVariableExpression(TypeReference typeReference, boolean serialize, Tracer tracer) {
         tracer = tracer.dive("lengthInBytes");
-        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m." : "") + "LengthInBytes()" + (serialize ? ")" : "");
+        return tracer + (serialize ? getCastExpressionForTypeReference(typeReference) + "(m.Get" : "Get") + "LengthInBytes" + (serialize ? "())" : "()");
     }
 
     public String getSizeInBits(ComplexTypeDefinition complexTypeDefinition, List<Argument> parserArguments) {
diff --git a/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh
index dd33841..f754d53 100644
--- a/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh
@@ -85,7 +85,7 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if parserArguments?has_conte
                         <#assign enumValue=helper.toParseExpression(null, parserArguments[discriminatorValueTerm?index].type, discriminatorValueTerm, parserArguments)>
                         <#assign enumValueWithoutTraces=tracer.removeTraces(enumValue)>
                         <#assign enumValueTraces=tracer.extractTraces(enumValue)>
-                        ${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces}
+                        ${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces?replace("Get","")?replace("()","")}
 					<#else>
 						${helper.toParseExpression(null, parserArguments[discriminatorValueTerm?index].type, discriminatorValueTerm, parserArguments)}
 					</#if>
@@ -204,6 +204,18 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if parserArguments?has_conte
 }
 
 func ${type.name}Serialize(writeBuffer utils.WriteBuffer, value api.PlcValue<#if parserArguments?has_content>, <#list parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type) && !helper.isEnumTypeReference(parserArgument.type)>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
+	<#if parserArguments?has_content>
+	m := struct {
+    	<#list parserArguments as parserArgument>
+			${parserArgument.name?cap_first} <#if helper.isComplexTypeReference(parserArgument.type) && !helper.isEnumTypeReference(parserArgument.type)>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}
+		</#list>
+	}{
+		<#list parserArguments as parserArgument>
+			${parserArgument.name?cap_first}: ${parserArgument.name},
+		</#list>
+	}
+	_ = m
+	</#if>
 	writeBuffer.PushContext("${type.name}")
 	switch {
 	<#assign defaultSet=false>
@@ -221,7 +233,7 @@ func ${type.name}Serialize(writeBuffer utils.WriteBuffer, value api.PlcValue<#if
                         <#assign enumValue=helper.toParseExpression(null, parserArguments[discriminatorValueTerm?index].type, discriminatorValueTerm, parserArguments)>
                         <#assign enumValueWithoutTraces=tracer.removeTraces(enumValue)>
                         <#assign enumValueTraces=tracer.extractTraces(enumValue)>
-                        ${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces}
+                        ${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces?replace("Get","")?replace("()","")}
 					<#else>
 						${helper.toParseExpression(null, parserArguments[discriminatorValueTerm?index].type, discriminatorValueTerm, parserArguments)}
 					</#if>
diff --git a/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh
index de67b1e..09f7000 100644
--- a/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/enum-template.go.ftlh
@@ -162,13 +162,13 @@ func Cast${type.name}(structType interface{}) ${type.name} {
 	return castFunc(structType)
 }
 
-func (m ${type.name}) LengthInBits() uint16 {
+func (m ${type.name}) GetLengthInBits() uint16 {
 	<#assign simpleTypeReference = type.type.asSimpleTypeReference().orElseThrow()>
 	return <#if type.type.isStringTypeReference()>0<#else>${simpleTypeReference.sizeInBits}</#if>
 }
 
-func (m ${type.name}) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m ${type.name}) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 <#if type.type?has_content && helper.isSimpleTypeReference(type.type)>
diff --git a/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
index 4b8ef56..41b1472 100644
--- a/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/model-template.go.ftlh
@@ -91,9 +91,14 @@ type ${type.name} struct {
 	${field.name?cap_first} <#if field.loopType??>[]</#if><#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForField(field)}
 	</#list>
 </#if>
-<#if type.virtualFields?has_content>
-    <#list type.virtualFields as field>
-        ${field.name?cap_first} <#if field.loopType??>[]</#if><#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForField(field)}
+<#if parserArguments?has_content>
+    <#assign filteredParserArguments=parserArguments?filter(arg -> !type.isDiscriminatorField(arg.name) && !type.getPropertyFieldFromThisOrParentByName(arg.name).isPresent())>
+</#if>
+<#if filteredParserArguments?has_content>
+
+	// Arguments.
+    <#list filteredParserArguments as parserArgument>
+	${parserArgument.name?cap_first} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}
     </#list>
 </#if>
 <#if type.isDiscriminatedParentTypeDefinition()>
@@ -123,10 +128,10 @@ type I${type.name} interface {
 	// Get${field.name?cap_first} returns ${field.name?cap_first}
 	Get${field.name?cap_first}() <#if field.loopType??>[]</#if><#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
 </#list>
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -152,7 +157,7 @@ func (m *${type.name}) ${discriminatorName?cap_first}() <#if typeRef.isComplexTy
                             <#assign enumValue=helper.toParseExpression(null, typeRef, discriminatorTerm, parserArguments)>
                             <#assign enumValueWithoutTraces=tracer.removeTraces(enumValue)>
                             <#assign enumValueTraces=tracer.extractTraces(enumValue)>
-                            ${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces}
+                            ${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces?replace("Get","")?replace("()","")}
 						<#else>
 							${helper.toParseExpression(null, typeRef, discriminatorTerm, parserArguments)}
 						</#if>
@@ -177,7 +182,7 @@ func (m *${type.name}) Get${discriminatorName?cap_first}() <#if typeRef.isComple
 							<#assign enumValue=helper.toParseExpression(null, typeRef, discriminatorTerm, parserArguments)>
 							<#assign enumValueWithoutTraces=tracer.removeTraces(enumValue)>
 							<#assign enumValueTraces=tracer.extractTraces(enumValue)>
-							${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces}
+							${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces?replace("Get","")?replace("()","")}
 						<#else>
 							${helper.toParseExpression(null, typeRef, discriminatorTerm, parserArguments)}
 						</#if>
@@ -212,14 +217,6 @@ type I${type.name}Child interface {
 		${helper.getLanguageTypeNameForField(field)}
 		<#sep>, </#sep>
 	</#list>
-	<#if type.virtualFields?has_content>, </#if>
-	<#list type.virtualFields as field>
-		${field.name}
-		<#if field.loopType??>[]</#if>
-		<#if helper.needsPointerAccess(field)>*</#if>
-		${helper.getLanguageTypeNameForField(field)}
-		<#sep>, </#sep>
-		</#list>
 	)
 </...@compress>
 
@@ -247,24 +244,12 @@ func (m *${type.name}) InitializeParent(parent *${type.parentType.name}
         ${helper.getLanguageTypeNameForField(parentField)}
         <#sep>, </#sep>
     </#list>
-    <#assign parentTypeHasVritualFields=type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields?has_content>
-	<#if parentTypeHasVritualFields>, </#if>
-	<#list type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields as parentField>
-		${parentField.name}
-		<#if parentField.loopType??>[]</#if>
-		<#if helper.needsPointerAccess(parentField)>*</#if>
-		${helper.getLanguageTypeNameForField(parentField)}
-		<#sep>, </#sep>
-	</#list>
 	)
 	{
 </...@compress>
 	<#list type.parentType.asComplexTypeDefinition().orElseThrow().allPropertyFields as field>
 	m.${type.parentType.name}.${field.name?cap_first} = ${field.name}
 	</#list>
-	<#list type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields as field>
-	m.${type.parentType.name}.${field.name?cap_first} = ${field.name}
-	</#list>
 }
 </#if>
 ///////////////////////////////////////////////////////////
@@ -284,50 +269,69 @@ func (m *${type.name}) Get${field.name?cap_first}() <#if field.loopType??>[]</#i
 <#list type.virtualFields as field>
     <#assign typeRef=field.asTypedField().orElseThrow().type>
 func (m *${type.name}) Get${field.name?cap_first}() <#if field.loopType??>[]</#if><#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)} {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.${field.name?cap_first}
+    <#list type.propertyFields?filter(f->f.isOptionalField()) as field>
+	${field.name} := m.${field.name?cap_first}
+	_ = ${field.name}
+    </#list>
+	return ${helper.toSerializationExpression(field, field.type, field.valueExpression, parserArguments)}
 }
 
 </#list>
 
+<#if type.parentType?has_content && type.parentType.allParserArguments.isPresent()>
+    <#assign filteredParentParserArguments = type.parentType.allParserArguments.orElseThrow()?filter(arg -> !type.parentType.asComplexTypeDefinition().orElseThrow().isDiscriminatorField(arg.name))>
+</#if>
+
+// New${type.name} factory function for ${type.name}
 <@compress single_line=true>
 func New${type.name}(
 	<#list type.propertyFields as field>
 		${field.name} <#if field.loopType??>[]</#if><#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForField(field)}
 		<#sep>, </#sep>
 	</#list>
-	<#if type.propertyFields?has_content && type.virtualFields?has_content>, </#if>
-	<#list type.virtualFields as field>
-		${field.name} <#if field.loopType??>[]</#if><#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForField(field)}<#sep>, </#sep>
-	</#list>
 	<#if type.parentType?has_content>
-		<#if (type.propertyFields?has_content || type.virtualFields?has_content ) && type.parentPropertyFields?has_content>, </#if>
+		<#if type.propertyFields?has_content && type.parentPropertyFields?has_content>, </#if>
 		<#list type.parentPropertyFields as parentField>
 			${parentField.name} <#if parentField.loopType??>[]</#if><#if helper.needsPointerAccess(parentField)>*</#if>${helper.getLanguageTypeNameForField(parentField)}
 			<#sep>, </#sep>
 		</#list>
-        <#if (type.propertyFields?has_content || type.virtualFields?has_content || type.parentPropertyFields?has_content) && type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields?has_content>, </#if>
-        <#list type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields as parentField>
-            ${parentField.name} <#if parentField.loopType??>[]</#if><#if helper.needsPointerAccess(parentField)>*</#if>${helper.getLanguageTypeNameForField(parentField)}
+	</#if>
+    <#if filteredParserArguments?has_content>
+        <#if type.allPropertyFields?has_content>, </#if>
+        <#list filteredParserArguments as parserArgument>
+			${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}
             <#sep>, </#sep>
         </#list>
-	</#if>
+    </#if>
 	) *<#if type.parentType?has_content>${type.parentType.name}<#else>${type.name}</#if> {
 </...@compress>
+
 <#if type.parentType?has_content>
 	child := &${type.name}{
 	<#list type.propertyFields as field>
 		${field.name?cap_first}: ${field.name},
 	</#list>
-	<#list type.virtualFields as field>
-		${field.name?cap_first}: ${field.name},
-	</#list>
-    	${type.parentType.name}: New${type.parentType.name}(<#list type.parentPropertyFields as parentField>${parentField.name}<#sep>, </#list><#if type.parentPropertyFields?has_content && type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields?has_content>, </#if><#list type.parentType.asComplexTypeDefinition().orElseThrow().virtualFields as parentField>${parentField.name}<#sep>, </#list>),
+    	${type.parentType.name}: New${type.parentType.name}(<#list type.parentPropertyFields as parentField>${parentField.name}<#sep>, </#list><#if filteredParentParserArguments?has_content><#if type.parentPropertyFields?has_content>, </#if><#list filteredParentParserArguments as arg>${arg.name}<#sep>, </#sep></#list></#if>),
 	}
 	child.Child = child
 	return child.${type.parentType.name}
 <#else>
-	return &${type.name}{<#list type.propertyFields as field>${field.name?cap_first}: ${field.name}<#sep>, </#sep></#list><#if type.propertyFields?has_content && type.virtualFields?has_content>, </#if><#list type.virtualFields as field>${field.name?cap_first}: ${field.name}<#sep>, </#sep></#list>}
+	<@compress single_line=true>
+	return &${type.name}{
+		<#list type.propertyFields as field>
+			${field.name?cap_first}: ${field.name}
+			<#sep>, </#sep>
+		</#list>
+        <#if filteredParserArguments?has_content>
+            <#if type.propertyFields?has_content>, </#if>
+            <#list filteredParserArguments as parserArgument>
+                ${parserArgument.name?cap_first}: ${parserArgument.name}
+                <#sep>, </#sep>
+            </#list>
+        </#if>
+	}
+    </...@compress>
+
 </#if>
 }
 
@@ -356,17 +360,17 @@ func (m *${type.name}) GetTypeName() string {
 	return "${type.name}"
 }
 
-func (m *${type.name}) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *${type.name}) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
 <#-- TODO: use serializer args instead of a fixed bool for one case -->
-func (m *${type.name}) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *${type.name}) GetLengthInBitsConditional(lastItem bool) uint16 {
 	<#if type.isDiscriminatedParentTypeDefinition()>
-	return m.Child.LengthInBits()
+	return m.Child.GetLengthInBits()
 	<#else>
 		<#if type.isDiscriminatedChildTypeDefinition()>
-	lengthInBits := uint16(m.ParentLengthInBits())
+	lengthInBits := uint16(m.GetParentLengthInBits())
 		<#else>
 	lengthInBits := uint16(0)
 		</#if>
@@ -387,10 +391,10 @@ func (m *${type.name}) LengthInBitsConditional(lastItem bool) uint16 {
 				<#if arrayField.isCountArrayField()>
 		for i, element := range m.${arrayField.name?cap_first} {
 			last := i == len(m.${arrayField.name?cap_first}) -1
-			lengthInBits += element.LengthInBitsConditional(last)
+			lengthInBits += element.GetLengthInBitsConditional(last)
 				<#else>
 		for _, element := range m.${arrayField.name?cap_first} {
-			lengthInBits += element.LengthInBits()
+			lengthInBits += element.GetLengthInBits()
 				</#if>
 		}
 				</#if>
@@ -469,7 +473,7 @@ func (m *${type.name}) LengthInBitsConditional(lastItem bool) uint16 {
 					<#elseif helper.isEnumField(field)>
 		lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
 					<#else>
-		lengthInBits += (*m.${optionalField.name?cap_first}).LengthInBits()
+		lengthInBits += (*m.${optionalField.name?cap_first}).GetLengthInBits()
 					</#if>
 	}
 					<#break>
@@ -505,14 +509,14 @@ func (m *${type.name}) LengthInBitsConditional(lastItem bool) uint16 {
 					<#elseif helper.isEnumField(field)>
 	lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
 					<#else>
-	lengthInBits += m.${simpleField.name?cap_first}.LengthInBits()
+	lengthInBits += m.${simpleField.name?cap_first}.GetLengthInBits()
 					</#if>
 					<#break>
 				<#case "switch">
 					<#assign switchField = field.asSwitchField().orElseThrow()>
 
 	// Length of sub-type elements will be added by sub-type...
-	lengthInBits += m.Child.LengthInBits()
+	lengthInBits += m.Child.GetLengthInBits()
 					<#break>
 				<#case "unknown">
 					<#assign unknownField = field.asUnknownField().orElseThrow()>
@@ -535,7 +539,7 @@ func (m *${type.name}) LengthInBitsConditional(lastItem bool) uint16 {
 }
 
 <#if type.isDiscriminatedParentTypeDefinition()>
-func (m *${type.name}) ParentLengthInBits() uint16 {
+func (m *${type.name}) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 	<#list type.fields as field>
 		<#switch field.typeName>
@@ -554,10 +558,10 @@ func (m *${type.name}) ParentLengthInBits() uint16 {
 					<#if arrayField.isCountArrayField()>
 		for i, element := range m.${arrayField.name?cap_first} {
 			last := i >= len(m.${arrayField.name?cap_first}) -1
-			lengthInBits += element.LengthInBitsConditional(last)
+			lengthInBits += element.GetLengthInBitsConditional(last)
 					<#else>
 		for _, element := range m.${arrayField.name?cap_first} {
-			lengthInBits += element.LengthInBits()
+			lengthInBits += element.GetLengthInBits()
 					</#if>
 		}
 				</#if>
@@ -598,7 +602,7 @@ func (m *${type.name}) ParentLengthInBits() uint16 {
 				<#elseif helper.isEnumField(discriminatorField)>
 	lengthInBits += ${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits};
 				<#else>
-	lengthInBits += ${discriminatorField.name}.getLengthInBits();
+	lengthInBits += ${discriminatorField.name}.GetLengthInBits();
 				</#if>
 				<#break>
 			<#case "enum">
@@ -637,7 +641,7 @@ func (m *${type.name}) ParentLengthInBits() uint16 {
 				<#elseif helper.isEnumField(field)>
 		lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
 				<#else>
-		lengthInBits += (*m.${optionalField.name?cap_first}).LengthInBits()
+		lengthInBits += (*m.${optionalField.name?cap_first}).GetLengthInBits()
 				</#if>
 	}
 				<#break>
@@ -673,7 +677,7 @@ func (m *${type.name}) ParentLengthInBits() uint16 {
 				<#elseif helper.isEnumField(field)>
 	lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
 				<#else>
-	lengthInBits += m.${simpleField.name?cap_first}.LengthInBits()
+	lengthInBits += m.${simpleField.name?cap_first}.GetLengthInBits()
 				</#if>
 				<#break>
 			<#case "unknown">
@@ -696,8 +700,8 @@ func (m *${type.name}) ParentLengthInBits() uint16 {
 }
 </#if>
 
-func (m *${type.name}) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *${type.name}) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 <#assign hasParserArguments=parserArguments?has_content/>
@@ -1278,7 +1282,7 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
 											<#assign enumValue=helper.toParseExpression(null, discriminatorType,discriminatorValueTerm, parserArguments)>
 											<#assign enumValueWithoutTraces=tracer.removeTraces(enumValue)>
 											<#assign enumValueTraces=tracer.extractTraces(enumValue)>
-											${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces}
+											${enumTypeTraces}${enumValueTraces}${enumTypeWithoutTraces}_${enumValueWithoutTraces?replace("Get","")?replace("()","")}
 										<#else>
 											${helper.toParseExpression(null, discriminatorType,discriminatorValueTerm, parserArguments)}
 										</#if>
@@ -1321,6 +1325,7 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
 	// Virtual field
 	_${virtualField.name} := ${helper.toParseExpression(virtualField, virtualField.type, virtualField.valueExpression, parserArguments)}
 	${virtualField.name} := ${helper.getLanguageTypeNameForTypeReference(virtualField.type)}(_${virtualField.name})
+	_ = ${virtualField.name}
 				<#break>
             <#case "validation">
                 <#assign validationField = field.asValidationField().orElseThrow()>
@@ -1398,11 +1403,6 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
 				${field.name}
 				<#sep>, </#sep>
 			</#list>
-			<#if type.virtualFields?has_content>, </#if>
-			<#list type.virtualFields as field>
-				${field.name}
-				<#sep>, </#sep>
-			</#list>
 			)
 		</...@compress>
 
@@ -1413,16 +1413,13 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
 		<#list type.propertyFields as field>
 		${field.name?cap_first}: <#if helper.isComplex(field) && !helper.isEnumField(field) && !field.isArrayField() && !field.isManualArrayField()>Cast${helper.getLanguageTypeNameForField(field)}(</#if>${field.name}<#if helper.isComplex(field) && !helper.isEnumField(field) && !field.isArrayField() && !field.isManualArrayField()>)</#if>,
 		</#list>
-        <#list type.virtualFields as field>
-            ${field.name?cap_first}: <#if helper.isComplex(field) && !helper.isEnumField(field) && !field.isArrayField() && !field.isManualArrayField()>Cast${helper.getLanguageTypeNameForField(field)}(</#if>${field.name}<#if helper.isComplex(field) && !helper.isEnumField(field) && !field.isArrayField() && !field.isManualArrayField()>)</#if>,
-        </#list>
         ${type.parentType.name}: &${type.parentType.name}{},
 	}
 	_child.${type.parentType.name}.Child = _child
 	return _child.${type.parentType.name}, nil
 	<#else>
 	// Create the instance
-	return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list><#if type.propertyFields?has_content && type.virtualFields?has_content>, </#if><#list type.virtualFields as field>${field.name}<#sep>, </#sep></#list>), nil
+	return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list><#if filteredParserArguments?has_content><#if type.propertyFields?has_content>, </#if><#list filteredParserArguments as arg><#if arg.type.isComplexTypeReference() && !helper.isEnumTypeReference(arg.type)>*</#if>${arg.name}<#sep>, </#sep></#list></#if>), nil
 	</#if>
 }
 
@@ -1450,7 +1447,7 @@ func (m *${type.name}) Serialize(writeBuffer utils.WriteBuffer) error {
 	${key}ArraySizeInBytes := func(items []*${typeName}) uint32 {
 		var sizeInBytes uint32 = 0
 		for _, v := range items {
-			sizeInBytes += uint32(v.LengthInBytes())
+			sizeInBytes += uint32(v.GetLengthInBytes())
 		}
 		return sizeInBytes
 	}
@@ -1721,7 +1718,7 @@ func (m *${type.name}) Serialize(writeBuffer utils.WriteBuffer) error {
                 	<#assign typedField = field.asTypedField().orElseThrow()>
                 	<#assign namedField = field.asNamedField().orElseThrow()>
 	// Virtual field
-	if _${namedField.name}Err := writeBuffer.WriteVirtual("${namedField.name}", m.${namedField.name?cap_first}); _${namedField.name}Err != nil {
+	if _${namedField.name}Err := writeBuffer.WriteVirtual("${namedField.name}", m.Get${namedField.name?cap_first}()); _${namedField.name}Err != nil {
 		return errors.Wrap(_${namedField.name}Err, "Error serializing '${namedField.name}' field")<@emitImport import="github.com/pkg/errors" />
 	}
 					<#break>
diff --git a/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml b/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
index 681c2de..ffd9e5a 100644
--- a/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
+++ b/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
@@ -522,10 +522,10 @@
                               <BACnetApplicationTagDate>
                                 <payload>
                                   <BACnetTagPayloadDate>
-                                    <yearMinus1900 dataType="int" bitLength="8">106</yearMinus1900>
-                                    <month dataType="int" bitLength="8">9</month>
-                                    <dayOfMonth dataType="int" bitLength="8">23</dayOfMonth>
-                                    <dayOfWeek dataType="int" bitLength="8">6</dayOfWeek>
+                                    <yearMinus1900 dataType="uint" bitLength="8">106</yearMinus1900>
+                                    <month dataType="uint" bitLength="8">9</month>
+                                    <dayOfMonth dataType="uint" bitLength="8">23</dayOfMonth>
+                                    <dayOfWeek dataType="uint" bitLength="8">6</dayOfWeek>
                                   </BACnetTagPayloadDate>
                                 </payload>
                               </BACnetApplicationTagDate>
@@ -545,10 +545,10 @@
                               <BACnetApplicationTagTime>
                                 <payload>
                                   <BACnetTagPayloadTime>
-                                    <hour dataType="int" bitLength="8">23</hour>
-                                    <minute dataType="int" bitLength="8">9</minute>
-                                    <second dataType="int" bitLength="8">54</second>
-                                    <fractional dataType="int" bitLength="8">0</fractional>
+                                    <hour dataType="uint" bitLength="8">23</hour>
+                                    <minute dataType="uint" bitLength="8">9</minute>
+                                    <second dataType="uint" bitLength="8">54</second>
+                                    <fractional dataType="uint" bitLength="8">0</fractional>
                                   </BACnetTagPayloadTime>
                                 </payload>
                               </BACnetApplicationTagTime>
@@ -7767,10 +7767,10 @@ make -f wp.mak clean</value>
                               <BACnetApplicationTagDate>
                                 <payload>
                                   <BACnetTagPayloadDate>
-                                    <yearMinus1900 dataType="int" bitLength="8">106</yearMinus1900>
-                                    <month dataType="int" bitLength="8">9</month>
-                                    <dayOfMonth dataType="int" bitLength="8">23</dayOfMonth>
-                                    <dayOfWeek dataType="int" bitLength="8">-1</dayOfWeek>
+                                    <yearMinus1900 dataType="uint" bitLength="8">106</yearMinus1900>
+                                    <month dataType="uint" bitLength="8">9</month>
+                                    <dayOfMonth dataType="uint" bitLength="8">23</dayOfMonth>
+                                    <dayOfWeek dataType="uint" bitLength="8">255</dayOfWeek>
                                   </BACnetTagPayloadDate>
                                 </payload>
                               </BACnetApplicationTagDate>
@@ -7790,10 +7790,10 @@ make -f wp.mak clean</value>
                               <BACnetApplicationTagTime>
                                 <payload>
                                   <BACnetTagPayloadTime>
-                                    <hour dataType="int" bitLength="8">23</hour>
-                                    <minute dataType="int" bitLength="8">21</minute>
-                                    <second dataType="int" bitLength="8">13</second>
-                                    <fractional dataType="int" bitLength="8">0</fractional>
+                                    <hour dataType="uint" bitLength="8">23</hour>
+                                    <minute dataType="uint" bitLength="8">21</minute>
+                                    <second dataType="uint" bitLength="8">13</second>
+                                    <fractional dataType="uint" bitLength="8">0</fractional>
                                   </BACnetTagPayloadTime>
                                 </payload>
                               </BACnetApplicationTagTime>
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go
index d68bf38..339d603 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionRequest.go
@@ -32,10 +32,10 @@ type CIPEncapsulationConnectionRequest struct {
 
 // The corresponding interface
 type ICIPEncapsulationConnectionRequest interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -66,6 +66,7 @@ func (m *CIPEncapsulationConnectionRequest) InitializeParent(parent *CIPEncapsul
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewCIPEncapsulationConnectionRequest factory function for CIPEncapsulationConnectionRequest
 func NewCIPEncapsulationConnectionRequest(sessionHandle uint32, status uint32, senderContext []uint8, options uint32) *CIPEncapsulationPacket {
 	child := &CIPEncapsulationConnectionRequest{
 		CIPEncapsulationPacket: NewCIPEncapsulationPacket(sessionHandle, status, senderContext, options),
@@ -97,18 +98,18 @@ func (m *CIPEncapsulationConnectionRequest) GetTypeName() string {
 	return "CIPEncapsulationConnectionRequest"
 }
 
-func (m *CIPEncapsulationConnectionRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *CIPEncapsulationConnectionRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *CIPEncapsulationConnectionRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *CIPEncapsulationConnectionRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *CIPEncapsulationConnectionRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *CIPEncapsulationConnectionRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func CIPEncapsulationConnectionRequestParse(readBuffer utils.ReadBuffer) (*CIPEncapsulationPacket, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go
index e144e8e..2ecf4bb 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationConnectionResponse.go
@@ -32,10 +32,10 @@ type CIPEncapsulationConnectionResponse struct {
 
 // The corresponding interface
 type ICIPEncapsulationConnectionResponse interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -66,6 +66,7 @@ func (m *CIPEncapsulationConnectionResponse) InitializeParent(parent *CIPEncapsu
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewCIPEncapsulationConnectionResponse factory function for CIPEncapsulationConnectionResponse
 func NewCIPEncapsulationConnectionResponse(sessionHandle uint32, status uint32, senderContext []uint8, options uint32) *CIPEncapsulationPacket {
 	child := &CIPEncapsulationConnectionResponse{
 		CIPEncapsulationPacket: NewCIPEncapsulationPacket(sessionHandle, status, senderContext, options),
@@ -97,18 +98,18 @@ func (m *CIPEncapsulationConnectionResponse) GetTypeName() string {
 	return "CIPEncapsulationConnectionResponse"
 }
 
-func (m *CIPEncapsulationConnectionResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *CIPEncapsulationConnectionResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *CIPEncapsulationConnectionResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *CIPEncapsulationConnectionResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *CIPEncapsulationConnectionResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *CIPEncapsulationConnectionResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func CIPEncapsulationConnectionResponseParse(readBuffer utils.ReadBuffer) (*CIPEncapsulationPacket, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationPacket.go b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationPacket.go
index 31351a3..b1e8662 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationPacket.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationPacket.go
@@ -48,10 +48,10 @@ type ICIPEncapsulationPacket interface {
 	GetSenderContext() []uint8
 	// GetOptions returns Options
 	GetOptions() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -91,6 +91,7 @@ func (m *CIPEncapsulationPacket) GetOptions() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewCIPEncapsulationPacket factory function for CIPEncapsulationPacket
 func NewCIPEncapsulationPacket(sessionHandle uint32, status uint32, senderContext []uint8, options uint32) *CIPEncapsulationPacket {
 	return &CIPEncapsulationPacket{SessionHandle: sessionHandle, Status: status, SenderContext: senderContext, Options: options}
 }
@@ -112,15 +113,15 @@ func (m *CIPEncapsulationPacket) GetTypeName() string {
 	return "CIPEncapsulationPacket"
 }
 
-func (m *CIPEncapsulationPacket) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *CIPEncapsulationPacket) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *CIPEncapsulationPacket) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *CIPEncapsulationPacket) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *CIPEncapsulationPacket) ParentLengthInBits() uint16 {
+func (m *CIPEncapsulationPacket) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (commandType)
 	lengthInBits += 16
@@ -148,8 +149,8 @@ func (m *CIPEncapsulationPacket) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *CIPEncapsulationPacket) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *CIPEncapsulationPacket) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func CIPEncapsulationPacketParse(readBuffer utils.ReadBuffer) (*CIPEncapsulationPacket, error) {
@@ -271,7 +272,7 @@ func (m *CIPEncapsulationPacket) SerializeParent(writeBuffer utils.WriteBuffer,
 	}
 
 	// Implicit Field (len) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-	len := uint16(uint16(uint16(m.LengthInBytes())) - uint16(uint16(28)))
+	len := uint16(uint16(uint16(m.GetLengthInBytes())) - uint16(uint16(28)))
 	_lenErr := writeBuffer.WriteUint16("len", 16, (len))
 	if _lenErr != nil {
 		return errors.Wrap(_lenErr, "Error serializing 'len' field")
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadRequest.go b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadRequest.go
index 3c12514..7fd17bc 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadRequest.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadRequest.go
@@ -36,10 +36,10 @@ type CIPEncapsulationReadRequest struct {
 type ICIPEncapsulationReadRequest interface {
 	// GetRequest returns Request
 	GetRequest() *DF1RequestMessage
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -73,6 +73,7 @@ func (m *CIPEncapsulationReadRequest) GetRequest() *DF1RequestMessage {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewCIPEncapsulationReadRequest factory function for CIPEncapsulationReadRequest
 func NewCIPEncapsulationReadRequest(request *DF1RequestMessage, sessionHandle uint32, status uint32, senderContext []uint8, options uint32) *CIPEncapsulationPacket {
 	child := &CIPEncapsulationReadRequest{
 		Request:                request,
@@ -105,21 +106,21 @@ func (m *CIPEncapsulationReadRequest) GetTypeName() string {
 	return "CIPEncapsulationReadRequest"
 }
 
-func (m *CIPEncapsulationReadRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *CIPEncapsulationReadRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *CIPEncapsulationReadRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *CIPEncapsulationReadRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (request)
-	lengthInBits += m.Request.LengthInBits()
+	lengthInBits += m.Request.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *CIPEncapsulationReadRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *CIPEncapsulationReadRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func CIPEncapsulationReadRequestParse(readBuffer utils.ReadBuffer) (*CIPEncapsulationPacket, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadResponse.go b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadResponse.go
index 47e904d..21d1a9b 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadResponse.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/CIPEncapsulationReadResponse.go
@@ -30,16 +30,19 @@ import (
 type CIPEncapsulationReadResponse struct {
 	*CIPEncapsulationPacket
 	Response *DF1ResponseMessage
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type ICIPEncapsulationReadResponse interface {
 	// GetResponse returns Response
 	GetResponse() *DF1ResponseMessage
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -73,7 +76,8 @@ func (m *CIPEncapsulationReadResponse) GetResponse() *DF1ResponseMessage {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewCIPEncapsulationReadResponse(response *DF1ResponseMessage, sessionHandle uint32, status uint32, senderContext []uint8, options uint32) *CIPEncapsulationPacket {
+// NewCIPEncapsulationReadResponse factory function for CIPEncapsulationReadResponse
+func NewCIPEncapsulationReadResponse(response *DF1ResponseMessage, sessionHandle uint32, status uint32, senderContext []uint8, options uint32, len uint16) *CIPEncapsulationPacket {
 	child := &CIPEncapsulationReadResponse{
 		Response:               response,
 		CIPEncapsulationPacket: NewCIPEncapsulationPacket(sessionHandle, status, senderContext, options),
@@ -105,21 +109,21 @@ func (m *CIPEncapsulationReadResponse) GetTypeName() string {
 	return "CIPEncapsulationReadResponse"
 }
 
-func (m *CIPEncapsulationReadResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *CIPEncapsulationReadResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *CIPEncapsulationReadResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *CIPEncapsulationReadResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (response)
-	lengthInBits += m.Response.LengthInBits()
+	lengthInBits += m.Response.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *CIPEncapsulationReadResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *CIPEncapsulationReadResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func CIPEncapsulationReadResponseParse(readBuffer utils.ReadBuffer, len uint16) (*CIPEncapsulationPacket, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandRequestMessage.go b/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandRequestMessage.go
index 5ab16d0..86c0be3 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandRequestMessage.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandRequestMessage.go
@@ -36,10 +36,10 @@ type DF1CommandRequestMessage struct {
 type IDF1CommandRequestMessage interface {
 	// GetCommand returns Command
 	GetCommand() *DF1RequestCommand
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -73,6 +73,7 @@ func (m *DF1CommandRequestMessage) GetCommand() *DF1RequestCommand {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewDF1CommandRequestMessage factory function for DF1CommandRequestMessage
 func NewDF1CommandRequestMessage(command *DF1RequestCommand, destinationAddress uint8, sourceAddress uint8, status uint8, transactionCounter uint16) *DF1RequestMessage {
 	child := &DF1CommandRequestMessage{
 		Command:           command,
@@ -105,21 +106,21 @@ func (m *DF1CommandRequestMessage) GetTypeName() string {
 	return "DF1CommandRequestMessage"
 }
 
-func (m *DF1CommandRequestMessage) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *DF1CommandRequestMessage) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *DF1CommandRequestMessage) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *DF1CommandRequestMessage) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (command)
-	lengthInBits += m.Command.LengthInBits()
+	lengthInBits += m.Command.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *DF1CommandRequestMessage) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *DF1CommandRequestMessage) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func DF1CommandRequestMessageParse(readBuffer utils.ReadBuffer) (*DF1RequestMessage, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go b/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go
index de612d1..7dfbc71 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/DF1CommandResponseMessageProtectedTypedLogicalRead.go
@@ -30,16 +30,19 @@ import (
 type DF1CommandResponseMessageProtectedTypedLogicalRead struct {
 	*DF1ResponseMessage
 	Data []uint8
+
+	// Arguments.
+	PayloadLength uint16
 }
 
 // The corresponding interface
 type IDF1CommandResponseMessageProtectedTypedLogicalRead interface {
 	// GetData returns Data
 	GetData() []uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -73,10 +76,11 @@ func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) GetData() []uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewDF1CommandResponseMessageProtectedTypedLogicalRead(data []uint8, destinationAddress uint8, sourceAddress uint8, status uint8, transactionCounter uint16) *DF1ResponseMessage {
+// NewDF1CommandResponseMessageProtectedTypedLogicalRead factory function for DF1CommandResponseMessageProtectedTypedLogicalRead
+func NewDF1CommandResponseMessageProtectedTypedLogicalRead(data []uint8, destinationAddress uint8, sourceAddress uint8, status uint8, transactionCounter uint16, payloadLength uint16) *DF1ResponseMessage {
 	child := &DF1CommandResponseMessageProtectedTypedLogicalRead{
 		Data:               data,
-		DF1ResponseMessage: NewDF1ResponseMessage(destinationAddress, sourceAddress, status, transactionCounter),
+		DF1ResponseMessage: NewDF1ResponseMessage(destinationAddress, sourceAddress, status, transactionCounter, payloadLength),
 	}
 	child.Child = child
 	return child.DF1ResponseMessage
@@ -105,12 +109,12 @@ func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) GetTypeName() strin
 	return "DF1CommandResponseMessageProtectedTypedLogicalRead"
 }
 
-func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Array field
 	if len(m.Data) > 0 {
@@ -120,8 +124,8 @@ func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) LengthInBitsConditi
 	return lengthInBits
 }
 
-func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *DF1CommandResponseMessageProtectedTypedLogicalRead) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func DF1CommandResponseMessageProtectedTypedLogicalReadParse(readBuffer utils.ReadBuffer, payloadLength uint16) (*DF1ResponseMessage, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestCommand.go b/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestCommand.go
index fbc74d0..32bba0a 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestCommand.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestCommand.go
@@ -35,10 +35,10 @@ type DF1RequestCommand struct {
 type IDF1RequestCommand interface {
 	// FunctionCode returns FunctionCode
 	FunctionCode() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -63,6 +63,7 @@ type IDF1RequestCommandChild interface {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewDF1RequestCommand factory function for DF1RequestCommand
 func NewDF1RequestCommand() *DF1RequestCommand {
 	return &DF1RequestCommand{}
 }
@@ -84,15 +85,15 @@ func (m *DF1RequestCommand) GetTypeName() string {
 	return "DF1RequestCommand"
 }
 
-func (m *DF1RequestCommand) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *DF1RequestCommand) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *DF1RequestCommand) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *DF1RequestCommand) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *DF1RequestCommand) ParentLengthInBits() uint16 {
+func (m *DF1RequestCommand) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (functionCode)
 	lengthInBits += 8
@@ -100,8 +101,8 @@ func (m *DF1RequestCommand) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *DF1RequestCommand) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *DF1RequestCommand) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func DF1RequestCommandParse(readBuffer utils.ReadBuffer) (*DF1RequestCommand, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestMessage.go b/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestMessage.go
index c3ee772..40fb436 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestMessage.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestMessage.go
@@ -48,10 +48,10 @@ type IDF1RequestMessage interface {
 	GetStatus() uint8
 	// GetTransactionCounter returns TransactionCounter
 	GetTransactionCounter() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -91,6 +91,7 @@ func (m *DF1RequestMessage) GetTransactionCounter() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewDF1RequestMessage factory function for DF1RequestMessage
 func NewDF1RequestMessage(destinationAddress uint8, sourceAddress uint8, status uint8, transactionCounter uint16) *DF1RequestMessage {
 	return &DF1RequestMessage{DestinationAddress: destinationAddress, SourceAddress: sourceAddress, Status: status, TransactionCounter: transactionCounter}
 }
@@ -112,15 +113,15 @@ func (m *DF1RequestMessage) GetTypeName() string {
 	return "DF1RequestMessage"
 }
 
-func (m *DF1RequestMessage) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *DF1RequestMessage) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *DF1RequestMessage) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *DF1RequestMessage) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *DF1RequestMessage) ParentLengthInBits() uint16 {
+func (m *DF1RequestMessage) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (destinationAddress)
@@ -143,8 +144,8 @@ func (m *DF1RequestMessage) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *DF1RequestMessage) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *DF1RequestMessage) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func DF1RequestMessageParse(readBuffer utils.ReadBuffer) (*DF1RequestMessage, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go b/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go
index febcdc2..754adf2 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/DF1RequestProtectedTypedLogicalRead.go
@@ -48,10 +48,10 @@ type IDF1RequestProtectedTypedLogicalRead interface {
 	GetElementNumber() uint8
 	// GetSubElementNumber returns SubElementNumber
 	GetSubElementNumber() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -96,6 +96,7 @@ func (m *DF1RequestProtectedTypedLogicalRead) GetSubElementNumber() uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewDF1RequestProtectedTypedLogicalRead factory function for DF1RequestProtectedTypedLogicalRead
 func NewDF1RequestProtectedTypedLogicalRead(byteSize uint8, fileNumber uint8, fileType uint8, elementNumber uint8, subElementNumber uint8) *DF1RequestCommand {
 	child := &DF1RequestProtectedTypedLogicalRead{
 		ByteSize:          byteSize,
@@ -132,12 +133,12 @@ func (m *DF1RequestProtectedTypedLogicalRead) GetTypeName() string {
 	return "DF1RequestProtectedTypedLogicalRead"
 }
 
-func (m *DF1RequestProtectedTypedLogicalRead) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *DF1RequestProtectedTypedLogicalRead) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *DF1RequestProtectedTypedLogicalRead) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *DF1RequestProtectedTypedLogicalRead) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (byteSize)
 	lengthInBits += 8
@@ -157,8 +158,8 @@ func (m *DF1RequestProtectedTypedLogicalRead) LengthInBitsConditional(lastItem b
 	return lengthInBits
 }
 
-func (m *DF1RequestProtectedTypedLogicalRead) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *DF1RequestProtectedTypedLogicalRead) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func DF1RequestProtectedTypedLogicalReadParse(readBuffer utils.ReadBuffer) (*DF1RequestCommand, error) {
diff --git a/plc4go/internal/plc4go/abeth/readwrite/model/DF1ResponseMessage.go b/plc4go/internal/plc4go/abeth/readwrite/model/DF1ResponseMessage.go
index 4469a60..94a3c53 100644
--- a/plc4go/internal/plc4go/abeth/readwrite/model/DF1ResponseMessage.go
+++ b/plc4go/internal/plc4go/abeth/readwrite/model/DF1ResponseMessage.go
@@ -33,7 +33,10 @@ type DF1ResponseMessage struct {
 	SourceAddress      uint8
 	Status             uint8
 	TransactionCounter uint16
-	Child              IDF1ResponseMessageChild
+
+	// Arguments.
+	PayloadLength uint16
+	Child         IDF1ResponseMessageChild
 }
 
 // The corresponding interface
@@ -48,10 +51,10 @@ type IDF1ResponseMessage interface {
 	GetStatus() uint8
 	// GetTransactionCounter returns TransactionCounter
 	GetTransactionCounter() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -91,8 +94,9 @@ func (m *DF1ResponseMessage) GetTransactionCounter() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewDF1ResponseMessage(destinationAddress uint8, sourceAddress uint8, status uint8, transactionCounter uint16) *DF1ResponseMessage {
-	return &DF1ResponseMessage{DestinationAddress: destinationAddress, SourceAddress: sourceAddress, Status: status, TransactionCounter: transactionCounter}
+// NewDF1ResponseMessage factory function for DF1ResponseMessage
+func NewDF1ResponseMessage(destinationAddress uint8, sourceAddress uint8, status uint8, transactionCounter uint16, payloadLength uint16) *DF1ResponseMessage {
+	return &DF1ResponseMessage{DestinationAddress: destinationAddress, SourceAddress: sourceAddress, Status: status, TransactionCounter: transactionCounter, PayloadLength: payloadLength}
 }
 
 func CastDF1ResponseMessage(structType interface{}) *DF1ResponseMessage {
@@ -112,15 +116,15 @@ func (m *DF1ResponseMessage) GetTypeName() string {
 	return "DF1ResponseMessage"
 }
 
-func (m *DF1ResponseMessage) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *DF1ResponseMessage) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *DF1ResponseMessage) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *DF1ResponseMessage) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *DF1ResponseMessage) ParentLengthInBits() uint16 {
+func (m *DF1ResponseMessage) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	// Reserved Field (reserved)
@@ -146,8 +150,8 @@ func (m *DF1ResponseMessage) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *DF1ResponseMessage) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *DF1ResponseMessage) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func DF1ResponseMessageParse(readBuffer utils.ReadBuffer, payloadLength uint16) (*DF1ResponseMessage, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
index 41887b7..8ef2c19 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
@@ -52,10 +52,10 @@ type IAdsAddDeviceNotificationRequest interface {
 	GetMaxDelay() uint32
 	// GetCycleTime returns CycleTime
 	GetCycleTime() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -112,6 +112,7 @@ func (m *AdsAddDeviceNotificationRequest) GetCycleTime() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsAddDeviceNotificationRequest factory function for AdsAddDeviceNotificationRequest
 func NewAdsAddDeviceNotificationRequest(indexGroup uint32, indexOffset uint32, length uint32, transmissionMode uint32, maxDelay uint32, cycleTime uint32) *AdsData {
 	child := &AdsAddDeviceNotificationRequest{
 		IndexGroup:       indexGroup,
@@ -149,12 +150,12 @@ func (m *AdsAddDeviceNotificationRequest) GetTypeName() string {
 	return "AdsAddDeviceNotificationRequest"
 }
 
-func (m *AdsAddDeviceNotificationRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsAddDeviceNotificationRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsAddDeviceNotificationRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsAddDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -183,8 +184,8 @@ func (m *AdsAddDeviceNotificationRequest) LengthInBitsConditional(lastItem bool)
 	return lengthInBits
 }
 
-func (m *AdsAddDeviceNotificationRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsAddDeviceNotificationRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsAddDeviceNotificationRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
index fd8cb02..4dacd50 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
@@ -39,10 +39,10 @@ type IAdsAddDeviceNotificationResponse interface {
 	GetResult() ReturnCode
 	// GetNotificationHandle returns NotificationHandle
 	GetNotificationHandle() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -83,6 +83,7 @@ func (m *AdsAddDeviceNotificationResponse) GetNotificationHandle() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsAddDeviceNotificationResponse factory function for AdsAddDeviceNotificationResponse
 func NewAdsAddDeviceNotificationResponse(result ReturnCode, notificationHandle uint32) *AdsData {
 	child := &AdsAddDeviceNotificationResponse{
 		Result:             result,
@@ -116,12 +117,12 @@ func (m *AdsAddDeviceNotificationResponse) GetTypeName() string {
 	return "AdsAddDeviceNotificationResponse"
 }
 
-func (m *AdsAddDeviceNotificationResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsAddDeviceNotificationResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsAddDeviceNotificationResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsAddDeviceNotificationResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -132,8 +133,8 @@ func (m *AdsAddDeviceNotificationResponse) LengthInBitsConditional(lastItem bool
 	return lengthInBits
 }
 
-func (m *AdsAddDeviceNotificationResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsAddDeviceNotificationResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsAddDeviceNotificationResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
index 13ff858..e758a68 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
@@ -37,10 +37,10 @@ type IAdsData interface {
 	CommandId() CommandId
 	// Response returns Response
 	Response() bool
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -65,6 +65,7 @@ type IAdsDataChild interface {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsData factory function for AdsData
 func NewAdsData() *AdsData {
 	return &AdsData{}
 }
@@ -86,22 +87,22 @@ func (m *AdsData) GetTypeName() string {
 	return "AdsData"
 }
 
-func (m *AdsData) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsData) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsData) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *AdsData) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *AdsData) ParentLengthInBits() uint16 {
+func (m *AdsData) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	return lengthInBits
 }
 
-func (m *AdsData) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsData) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsDataParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
index a94a5ec..44dea26 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
@@ -671,12 +671,12 @@ func CastAdsDataType(structType interface{}) AdsDataType {
 	return castFunc(structType)
 }
 
-func (m AdsDataType) LengthInBits() uint16 {
+func (m AdsDataType) GetLengthInBits() uint16 {
 	return 8
 }
 
-func (m AdsDataType) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m AdsDataType) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsDataTypeParse(readBuffer utils.ReadBuffer) (AdsDataType, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
index 5f59c0a..bb69b0a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
@@ -36,10 +36,10 @@ type AdsDeleteDeviceNotificationRequest struct {
 type IAdsDeleteDeviceNotificationRequest interface {
 	// GetNotificationHandle returns NotificationHandle
 	GetNotificationHandle() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,6 +76,7 @@ func (m *AdsDeleteDeviceNotificationRequest) GetNotificationHandle() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsDeleteDeviceNotificationRequest factory function for AdsDeleteDeviceNotificationRequest
 func NewAdsDeleteDeviceNotificationRequest(notificationHandle uint32) *AdsData {
 	child := &AdsDeleteDeviceNotificationRequest{
 		NotificationHandle: notificationHandle,
@@ -108,12 +109,12 @@ func (m *AdsDeleteDeviceNotificationRequest) GetTypeName() string {
 	return "AdsDeleteDeviceNotificationRequest"
 }
 
-func (m *AdsDeleteDeviceNotificationRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsDeleteDeviceNotificationRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsDeleteDeviceNotificationRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsDeleteDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (notificationHandle)
 	lengthInBits += 32
@@ -121,8 +122,8 @@ func (m *AdsDeleteDeviceNotificationRequest) LengthInBitsConditional(lastItem bo
 	return lengthInBits
 }
 
-func (m *AdsDeleteDeviceNotificationRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsDeleteDeviceNotificationRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsDeleteDeviceNotificationRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
index 2dc40f0..68aeba6 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
@@ -36,10 +36,10 @@ type AdsDeleteDeviceNotificationResponse struct {
 type IAdsDeleteDeviceNotificationResponse interface {
 	// GetResult returns Result
 	GetResult() ReturnCode
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,6 +76,7 @@ func (m *AdsDeleteDeviceNotificationResponse) GetResult() ReturnCode {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsDeleteDeviceNotificationResponse factory function for AdsDeleteDeviceNotificationResponse
 func NewAdsDeleteDeviceNotificationResponse(result ReturnCode) *AdsData {
 	child := &AdsDeleteDeviceNotificationResponse{
 		Result:  result,
@@ -108,12 +109,12 @@ func (m *AdsDeleteDeviceNotificationResponse) GetTypeName() string {
 	return "AdsDeleteDeviceNotificationResponse"
 }
 
-func (m *AdsDeleteDeviceNotificationResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsDeleteDeviceNotificationResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsDeleteDeviceNotificationResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsDeleteDeviceNotificationResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -121,8 +122,8 @@ func (m *AdsDeleteDeviceNotificationResponse) LengthInBitsConditional(lastItem b
 	return lengthInBits
 }
 
-func (m *AdsDeleteDeviceNotificationResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsDeleteDeviceNotificationResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsDeleteDeviceNotificationResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
index fa5613e..d1f6d14 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
@@ -42,10 +42,10 @@ type IAdsDeviceNotificationRequest interface {
 	GetStamps() uint32
 	// GetAdsStampHeaders returns AdsStampHeaders
 	GetAdsStampHeaders() []*AdsStampHeader
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -90,6 +90,7 @@ func (m *AdsDeviceNotificationRequest) GetAdsStampHeaders() []*AdsStampHeader {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsDeviceNotificationRequest factory function for AdsDeviceNotificationRequest
 func NewAdsDeviceNotificationRequest(length uint32, stamps uint32, adsStampHeaders []*AdsStampHeader) *AdsData {
 	child := &AdsDeviceNotificationRequest{
 		Length:          length,
@@ -124,12 +125,12 @@ func (m *AdsDeviceNotificationRequest) GetTypeName() string {
 	return "AdsDeviceNotificationRequest"
 }
 
-func (m *AdsDeviceNotificationRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsDeviceNotificationRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsDeviceNotificationRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsDeviceNotificationRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (length)
 	lengthInBits += 32
@@ -141,15 +142,15 @@ func (m *AdsDeviceNotificationRequest) LengthInBitsConditional(lastItem bool) ui
 	if len(m.AdsStampHeaders) > 0 {
 		for i, element := range m.AdsStampHeaders {
 			last := i == len(m.AdsStampHeaders)-1
-			lengthInBits += element.LengthInBitsConditional(last)
+			lengthInBits += element.GetLengthInBitsConditional(last)
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m *AdsDeviceNotificationRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsDeviceNotificationRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsDeviceNotificationRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
index bc22c60..73f12ad 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
@@ -32,10 +32,10 @@ type AdsDeviceNotificationResponse struct {
 
 // The corresponding interface
 type IAdsDeviceNotificationResponse interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,6 +69,7 @@ func (m *AdsDeviceNotificationResponse) InitializeParent(parent *AdsData) {}
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsDeviceNotificationResponse factory function for AdsDeviceNotificationResponse
 func NewAdsDeviceNotificationResponse() *AdsData {
 	child := &AdsDeviceNotificationResponse{
 		AdsData: NewAdsData(),
@@ -100,18 +101,18 @@ func (m *AdsDeviceNotificationResponse) GetTypeName() string {
 	return "AdsDeviceNotificationResponse"
 }
 
-func (m *AdsDeviceNotificationResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsDeviceNotificationResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsDeviceNotificationResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsDeviceNotificationResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *AdsDeviceNotificationResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsDeviceNotificationResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsDeviceNotificationResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
index fd363a4..b84970e 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
@@ -32,10 +32,10 @@ type AdsInvalidRequest struct {
 
 // The corresponding interface
 type IAdsInvalidRequest interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,6 +69,7 @@ func (m *AdsInvalidRequest) InitializeParent(parent *AdsData) {}
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsInvalidRequest factory function for AdsInvalidRequest
 func NewAdsInvalidRequest() *AdsData {
 	child := &AdsInvalidRequest{
 		AdsData: NewAdsData(),
@@ -100,18 +101,18 @@ func (m *AdsInvalidRequest) GetTypeName() string {
 	return "AdsInvalidRequest"
 }
 
-func (m *AdsInvalidRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsInvalidRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsInvalidRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsInvalidRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *AdsInvalidRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsInvalidRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsInvalidRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
index 2941ba0..d87dd3c 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
@@ -32,10 +32,10 @@ type AdsInvalidResponse struct {
 
 // The corresponding interface
 type IAdsInvalidResponse interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,6 +69,7 @@ func (m *AdsInvalidResponse) InitializeParent(parent *AdsData) {}
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsInvalidResponse factory function for AdsInvalidResponse
 func NewAdsInvalidResponse() *AdsData {
 	child := &AdsInvalidResponse{
 		AdsData: NewAdsData(),
@@ -100,18 +101,18 @@ func (m *AdsInvalidResponse) GetTypeName() string {
 	return "AdsInvalidResponse"
 }
 
-func (m *AdsInvalidResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsInvalidResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsInvalidResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsInvalidResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *AdsInvalidResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsInvalidResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsInvalidResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
index 399f558..b9e24e5 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
@@ -35,10 +35,10 @@ type AdsMultiRequestItem struct {
 type IAdsMultiRequestItem interface {
 	// IndexGroup returns IndexGroup
 	IndexGroup() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -63,6 +63,7 @@ type IAdsMultiRequestItemChild interface {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsMultiRequestItem factory function for AdsMultiRequestItem
 func NewAdsMultiRequestItem() *AdsMultiRequestItem {
 	return &AdsMultiRequestItem{}
 }
@@ -84,22 +85,22 @@ func (m *AdsMultiRequestItem) GetTypeName() string {
 	return "AdsMultiRequestItem"
 }
 
-func (m *AdsMultiRequestItem) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsMultiRequestItem) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsMultiRequestItem) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *AdsMultiRequestItem) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *AdsMultiRequestItem) ParentLengthInBits() uint16 {
+func (m *AdsMultiRequestItem) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	return lengthInBits
 }
 
-func (m *AdsMultiRequestItem) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsMultiRequestItem) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsMultiRequestItemParse(readBuffer utils.ReadBuffer, indexGroup uint32) (*AdsMultiRequestItem, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
index f1fa877..917ec50 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
@@ -42,10 +42,10 @@ type IAdsMultiRequestItemRead interface {
 	GetItemIndexOffset() uint32
 	// GetItemReadLength returns ItemReadLength
 	GetItemReadLength() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -82,6 +82,7 @@ func (m *AdsMultiRequestItemRead) GetItemReadLength() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsMultiRequestItemRead factory function for AdsMultiRequestItemRead
 func NewAdsMultiRequestItemRead(itemIndexGroup uint32, itemIndexOffset uint32, itemReadLength uint32) *AdsMultiRequestItem {
 	child := &AdsMultiRequestItemRead{
 		ItemIndexGroup:      itemIndexGroup,
@@ -116,12 +117,12 @@ func (m *AdsMultiRequestItemRead) GetTypeName() string {
 	return "AdsMultiRequestItemRead"
 }
 
-func (m *AdsMultiRequestItemRead) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsMultiRequestItemRead) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsMultiRequestItemRead) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsMultiRequestItemRead) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (itemIndexGroup)
 	lengthInBits += 32
@@ -135,8 +136,8 @@ func (m *AdsMultiRequestItemRead) LengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *AdsMultiRequestItemRead) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsMultiRequestItemRead) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsMultiRequestItemReadParse(readBuffer utils.ReadBuffer, indexGroup uint32) (*AdsMultiRequestItem, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
index dff3197..5915c40 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
@@ -45,10 +45,10 @@ type IAdsMultiRequestItemReadWrite interface {
 	GetItemReadLength() uint32
 	// GetItemWriteLength returns ItemWriteLength
 	GetItemWriteLength() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -89,6 +89,7 @@ func (m *AdsMultiRequestItemReadWrite) GetItemWriteLength() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsMultiRequestItemReadWrite factory function for AdsMultiRequestItemReadWrite
 func NewAdsMultiRequestItemReadWrite(itemIndexGroup uint32, itemIndexOffset uint32, itemReadLength uint32, itemWriteLength uint32) *AdsMultiRequestItem {
 	child := &AdsMultiRequestItemReadWrite{
 		ItemIndexGroup:      itemIndexGroup,
@@ -124,12 +125,12 @@ func (m *AdsMultiRequestItemReadWrite) GetTypeName() string {
 	return "AdsMultiRequestItemReadWrite"
 }
 
-func (m *AdsMultiRequestItemReadWrite) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsMultiRequestItemReadWrite) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsMultiRequestItemReadWrite) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsMultiRequestItemReadWrite) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (itemIndexGroup)
 	lengthInBits += 32
@@ -146,8 +147,8 @@ func (m *AdsMultiRequestItemReadWrite) LengthInBitsConditional(lastItem bool) ui
 	return lengthInBits
 }
 
-func (m *AdsMultiRequestItemReadWrite) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsMultiRequestItemReadWrite) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsMultiRequestItemReadWriteParse(readBuffer utils.ReadBuffer, indexGroup uint32) (*AdsMultiRequestItem, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
index e6c1752..0870b31 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
@@ -42,10 +42,10 @@ type IAdsMultiRequestItemWrite interface {
 	GetItemIndexOffset() uint32
 	// GetItemWriteLength returns ItemWriteLength
 	GetItemWriteLength() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -82,6 +82,7 @@ func (m *AdsMultiRequestItemWrite) GetItemWriteLength() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsMultiRequestItemWrite factory function for AdsMultiRequestItemWrite
 func NewAdsMultiRequestItemWrite(itemIndexGroup uint32, itemIndexOffset uint32, itemWriteLength uint32) *AdsMultiRequestItem {
 	child := &AdsMultiRequestItemWrite{
 		ItemIndexGroup:      itemIndexGroup,
@@ -116,12 +117,12 @@ func (m *AdsMultiRequestItemWrite) GetTypeName() string {
 	return "AdsMultiRequestItemWrite"
 }
 
-func (m *AdsMultiRequestItemWrite) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsMultiRequestItemWrite) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsMultiRequestItemWrite) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsMultiRequestItemWrite) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (itemIndexGroup)
 	lengthInBits += 32
@@ -135,8 +136,8 @@ func (m *AdsMultiRequestItemWrite) LengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *AdsMultiRequestItemWrite) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsMultiRequestItemWrite) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsMultiRequestItemWriteParse(readBuffer utils.ReadBuffer, indexGroup uint32) (*AdsMultiRequestItem, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
index 121131c..f5413eb 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
@@ -41,10 +41,10 @@ type IAdsNotificationSample interface {
 	GetSampleSize() uint32
 	// GetData returns Data
 	GetData() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -68,6 +68,7 @@ func (m *AdsNotificationSample) GetData() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsNotificationSample factory function for AdsNotificationSample
 func NewAdsNotificationSample(notificationHandle uint32, sampleSize uint32, data []byte) *AdsNotificationSample {
 	return &AdsNotificationSample{NotificationHandle: notificationHandle, SampleSize: sampleSize, Data: data}
 }
@@ -89,11 +90,11 @@ func (m *AdsNotificationSample) GetTypeName() string {
 	return "AdsNotificationSample"
 }
 
-func (m *AdsNotificationSample) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsNotificationSample) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsNotificationSample) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AdsNotificationSample) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (notificationHandle)
@@ -110,8 +111,8 @@ func (m *AdsNotificationSample) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsNotificationSample) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsNotificationSample) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsNotificationSampleParse(readBuffer utils.ReadBuffer) (*AdsNotificationSample, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
index 8b68147..c403266 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
@@ -32,10 +32,10 @@ type AdsReadDeviceInfoRequest struct {
 
 // The corresponding interface
 type IAdsReadDeviceInfoRequest interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,6 +69,7 @@ func (m *AdsReadDeviceInfoRequest) InitializeParent(parent *AdsData) {}
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadDeviceInfoRequest factory function for AdsReadDeviceInfoRequest
 func NewAdsReadDeviceInfoRequest() *AdsData {
 	child := &AdsReadDeviceInfoRequest{
 		AdsData: NewAdsData(),
@@ -100,18 +101,18 @@ func (m *AdsReadDeviceInfoRequest) GetTypeName() string {
 	return "AdsReadDeviceInfoRequest"
 }
 
-func (m *AdsReadDeviceInfoRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadDeviceInfoRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadDeviceInfoRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadDeviceInfoRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *AdsReadDeviceInfoRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadDeviceInfoRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadDeviceInfoRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
index e24c952..dd02eae 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
@@ -48,10 +48,10 @@ type IAdsReadDeviceInfoResponse interface {
 	GetVersion() uint16
 	// GetDevice returns Device
 	GetDevice() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -104,6 +104,7 @@ func (m *AdsReadDeviceInfoResponse) GetDevice() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadDeviceInfoResponse factory function for AdsReadDeviceInfoResponse
 func NewAdsReadDeviceInfoResponse(result ReturnCode, majorVersion uint8, minorVersion uint8, version uint16, device []byte) *AdsData {
 	child := &AdsReadDeviceInfoResponse{
 		Result:       result,
@@ -140,12 +141,12 @@ func (m *AdsReadDeviceInfoResponse) GetTypeName() string {
 	return "AdsReadDeviceInfoResponse"
 }
 
-func (m *AdsReadDeviceInfoResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadDeviceInfoResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadDeviceInfoResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadDeviceInfoResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -167,8 +168,8 @@ func (m *AdsReadDeviceInfoResponse) LengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
-func (m *AdsReadDeviceInfoResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadDeviceInfoResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadDeviceInfoResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
index a099ab4..babcf12 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
@@ -42,10 +42,10 @@ type IAdsReadRequest interface {
 	GetIndexOffset() uint32
 	// GetLength returns Length
 	GetLength() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -90,6 +90,7 @@ func (m *AdsReadRequest) GetLength() uint32 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadRequest factory function for AdsReadRequest
 func NewAdsReadRequest(indexGroup uint32, indexOffset uint32, length uint32) *AdsData {
 	child := &AdsReadRequest{
 		IndexGroup:  indexGroup,
@@ -124,12 +125,12 @@ func (m *AdsReadRequest) GetTypeName() string {
 	return "AdsReadRequest"
 }
 
-func (m *AdsReadRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -143,8 +144,8 @@ func (m *AdsReadRequest) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsReadRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
index cefdae8..4cd3e50 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
@@ -39,10 +39,10 @@ type IAdsReadResponse interface {
 	GetResult() ReturnCode
 	// GetData returns Data
 	GetData() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -83,6 +83,7 @@ func (m *AdsReadResponse) GetData() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadResponse factory function for AdsReadResponse
 func NewAdsReadResponse(result ReturnCode, data []byte) *AdsData {
 	child := &AdsReadResponse{
 		Result:  result,
@@ -116,12 +117,12 @@ func (m *AdsReadResponse) GetTypeName() string {
 	return "AdsReadResponse"
 }
 
-func (m *AdsReadResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -137,8 +138,8 @@ func (m *AdsReadResponse) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsReadResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
@@ -205,7 +206,7 @@ func (m *AdsReadResponse) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-		length := uint32(uint32(len(m.Data)))
+		length := uint32(uint32(len(m.GetData())))
 		_lengthErr := writeBuffer.WriteUint32("length", 32, (length))
 		if _lengthErr != nil {
 			return errors.Wrap(_lengthErr, "Error serializing 'length' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
index 9b3a3fe..779a800 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
@@ -32,10 +32,10 @@ type AdsReadStateRequest struct {
 
 // The corresponding interface
 type IAdsReadStateRequest interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,6 +69,7 @@ func (m *AdsReadStateRequest) InitializeParent(parent *AdsData) {}
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadStateRequest factory function for AdsReadStateRequest
 func NewAdsReadStateRequest() *AdsData {
 	child := &AdsReadStateRequest{
 		AdsData: NewAdsData(),
@@ -100,18 +101,18 @@ func (m *AdsReadStateRequest) GetTypeName() string {
 	return "AdsReadStateRequest"
 }
 
-func (m *AdsReadStateRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadStateRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadStateRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadStateRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *AdsReadStateRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadStateRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadStateRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
index 5b2d23e..783d252 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
@@ -42,10 +42,10 @@ type IAdsReadStateResponse interface {
 	GetAdsState() uint16
 	// GetDeviceState returns DeviceState
 	GetDeviceState() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -90,6 +90,7 @@ func (m *AdsReadStateResponse) GetDeviceState() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadStateResponse factory function for AdsReadStateResponse
 func NewAdsReadStateResponse(result ReturnCode, adsState uint16, deviceState uint16) *AdsData {
 	child := &AdsReadStateResponse{
 		Result:      result,
@@ -124,12 +125,12 @@ func (m *AdsReadStateResponse) GetTypeName() string {
 	return "AdsReadStateResponse"
 }
 
-func (m *AdsReadStateResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadStateResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadStateResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadStateResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -143,8 +144,8 @@ func (m *AdsReadStateResponse) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsReadStateResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadStateResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadStateResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
index 4fc7991..c5fcf4b 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
@@ -48,10 +48,10 @@ type IAdsReadWriteRequest interface {
 	GetItems() []*AdsMultiRequestItem
 	// GetData returns Data
 	GetData() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -104,6 +104,7 @@ func (m *AdsReadWriteRequest) GetData() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadWriteRequest factory function for AdsReadWriteRequest
 func NewAdsReadWriteRequest(indexGroup uint32, indexOffset uint32, readLength uint32, items []*AdsMultiRequestItem, data []byte) *AdsData {
 	child := &AdsReadWriteRequest{
 		IndexGroup:  indexGroup,
@@ -140,12 +141,12 @@ func (m *AdsReadWriteRequest) GetTypeName() string {
 	return "AdsReadWriteRequest"
 }
 
-func (m *AdsReadWriteRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadWriteRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadWriteRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadWriteRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -163,7 +164,7 @@ func (m *AdsReadWriteRequest) LengthInBitsConditional(lastItem bool) uint16 {
 	if len(m.Items) > 0 {
 		for i, element := range m.Items {
 			last := i == len(m.Items)-1
-			lengthInBits += element.LengthInBitsConditional(last)
+			lengthInBits += element.GetLengthInBitsConditional(last)
 		}
 	}
 
@@ -175,8 +176,8 @@ func (m *AdsReadWriteRequest) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsReadWriteRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadWriteRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadWriteRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
@@ -282,7 +283,7 @@ func (m *AdsReadWriteRequest) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Implicit Field (writeLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-		writeLength := uint32(uint32(uint32(uint32(uint32(len(m.Items)))*uint32(uint32(utils.InlineIf(bool(bool((m.IndexGroup) == (61570))), func() interface{} { return uint32(uint32(16)) }, func() interface{} { return uint32(uint32(12)) }).(uint32))))) + uint32(uint32(len(m.Data))))
+		writeLength := uint32(uint32(uint32(uint32(uint32(len(m.GetItems())))*uint32(uint32(utils.InlineIf(bool(bool((m.GetIndexGroup()) == (61570))), func() interface{} { return uint32(uint32(16)) }, func() interface{} { return uint32(uint32(12)) }).(uint32))))) + uint32(uint32(len(m.GetData()))))
 		_writeLengthErr := writeBuffer.WriteUint32("writeLength", 32, (writeLength))
 		if _writeLengthErr != nil {
 			return errors.Wrap(_writeLengthErr, "Error serializing 'writeLength' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
index b49ca94..dd91ee5 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
@@ -39,10 +39,10 @@ type IAdsReadWriteResponse interface {
 	GetResult() ReturnCode
 	// GetData returns Data
 	GetData() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -83,6 +83,7 @@ func (m *AdsReadWriteResponse) GetData() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsReadWriteResponse factory function for AdsReadWriteResponse
 func NewAdsReadWriteResponse(result ReturnCode, data []byte) *AdsData {
 	child := &AdsReadWriteResponse{
 		Result:  result,
@@ -116,12 +117,12 @@ func (m *AdsReadWriteResponse) GetTypeName() string {
 	return "AdsReadWriteResponse"
 }
 
-func (m *AdsReadWriteResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsReadWriteResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsReadWriteResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsReadWriteResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -137,8 +138,8 @@ func (m *AdsReadWriteResponse) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsReadWriteResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsReadWriteResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsReadWriteResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
@@ -205,7 +206,7 @@ func (m *AdsReadWriteResponse) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-		length := uint32(uint32(len(m.Data)))
+		length := uint32(uint32(len(m.GetData())))
 		_lengthErr := writeBuffer.WriteUint32("length", 32, (length))
 		if _lengthErr != nil {
 			return errors.Wrap(_lengthErr, "Error serializing 'length' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
index 868f314..7bd7ba8 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
@@ -41,10 +41,10 @@ type IAdsStampHeader interface {
 	GetSamples() uint32
 	// GetAdsNotificationSamples returns AdsNotificationSamples
 	GetAdsNotificationSamples() []*AdsNotificationSample
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -68,6 +68,7 @@ func (m *AdsStampHeader) GetAdsNotificationSamples() []*AdsNotificationSample {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsStampHeader factory function for AdsStampHeader
 func NewAdsStampHeader(timestamp uint64, samples uint32, adsNotificationSamples []*AdsNotificationSample) *AdsStampHeader {
 	return &AdsStampHeader{Timestamp: timestamp, Samples: samples, AdsNotificationSamples: adsNotificationSamples}
 }
@@ -89,11 +90,11 @@ func (m *AdsStampHeader) GetTypeName() string {
 	return "AdsStampHeader"
 }
 
-func (m *AdsStampHeader) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsStampHeader) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsStampHeader) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AdsStampHeader) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (timestamp)
@@ -106,15 +107,15 @@ func (m *AdsStampHeader) LengthInBitsConditional(lastItem bool) uint16 {
 	if len(m.AdsNotificationSamples) > 0 {
 		for i, element := range m.AdsNotificationSamples {
 			last := i == len(m.AdsNotificationSamples)-1
-			lengthInBits += element.LengthInBitsConditional(last)
+			lengthInBits += element.GetLengthInBitsConditional(last)
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m *AdsStampHeader) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsStampHeader) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsStampHeaderParse(readBuffer utils.ReadBuffer) (*AdsStampHeader, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
index 5ce3b6c..7e1f320 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
@@ -42,10 +42,10 @@ type IAdsWriteControlRequest interface {
 	GetDeviceState() uint16
 	// GetData returns Data
 	GetData() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -90,6 +90,7 @@ func (m *AdsWriteControlRequest) GetData() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsWriteControlRequest factory function for AdsWriteControlRequest
 func NewAdsWriteControlRequest(adsState uint16, deviceState uint16, data []byte) *AdsData {
 	child := &AdsWriteControlRequest{
 		AdsState:    adsState,
@@ -124,12 +125,12 @@ func (m *AdsWriteControlRequest) GetTypeName() string {
 	return "AdsWriteControlRequest"
 }
 
-func (m *AdsWriteControlRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsWriteControlRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsWriteControlRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsWriteControlRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (adsState)
 	lengthInBits += 16
@@ -148,8 +149,8 @@ func (m *AdsWriteControlRequest) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsWriteControlRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsWriteControlRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsWriteControlRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
@@ -220,7 +221,7 @@ func (m *AdsWriteControlRequest) Serialize(writeBuffer utils.WriteBuffer) error
 		}
 
 		// Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-		length := uint32(uint32(len(m.Data)))
+		length := uint32(uint32(len(m.GetData())))
 		_lengthErr := writeBuffer.WriteUint32("length", 32, (length))
 		if _lengthErr != nil {
 			return errors.Wrap(_lengthErr, "Error serializing 'length' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
index b476f3a..cfdc4e3 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
@@ -36,10 +36,10 @@ type AdsWriteControlResponse struct {
 type IAdsWriteControlResponse interface {
 	// GetResult returns Result
 	GetResult() ReturnCode
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,6 +76,7 @@ func (m *AdsWriteControlResponse) GetResult() ReturnCode {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsWriteControlResponse factory function for AdsWriteControlResponse
 func NewAdsWriteControlResponse(result ReturnCode) *AdsData {
 	child := &AdsWriteControlResponse{
 		Result:  result,
@@ -108,12 +109,12 @@ func (m *AdsWriteControlResponse) GetTypeName() string {
 	return "AdsWriteControlResponse"
 }
 
-func (m *AdsWriteControlResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsWriteControlResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsWriteControlResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsWriteControlResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -121,8 +122,8 @@ func (m *AdsWriteControlResponse) LengthInBitsConditional(lastItem bool) uint16
 	return lengthInBits
 }
 
-func (m *AdsWriteControlResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsWriteControlResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsWriteControlResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
index baccd91..9346664 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
@@ -42,10 +42,10 @@ type IAdsWriteRequest interface {
 	GetIndexOffset() uint32
 	// GetData returns Data
 	GetData() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -90,6 +90,7 @@ func (m *AdsWriteRequest) GetData() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsWriteRequest factory function for AdsWriteRequest
 func NewAdsWriteRequest(indexGroup uint32, indexOffset uint32, data []byte) *AdsData {
 	child := &AdsWriteRequest{
 		IndexGroup:  indexGroup,
@@ -124,12 +125,12 @@ func (m *AdsWriteRequest) GetTypeName() string {
 	return "AdsWriteRequest"
 }
 
-func (m *AdsWriteRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsWriteRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsWriteRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsWriteRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (indexGroup)
 	lengthInBits += 32
@@ -148,8 +149,8 @@ func (m *AdsWriteRequest) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsWriteRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsWriteRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsWriteRequestParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
@@ -220,7 +221,7 @@ func (m *AdsWriteRequest) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 
 		// Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-		length := uint32(uint32(len(m.Data)))
+		length := uint32(uint32(len(m.GetData())))
 		_lengthErr := writeBuffer.WriteUint32("length", 32, (length))
 		if _lengthErr != nil {
 			return errors.Wrap(_lengthErr, "Error serializing 'length' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
index 3f41ee3..7aec191 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
@@ -36,10 +36,10 @@ type AdsWriteResponse struct {
 type IAdsWriteResponse interface {
 	// GetResult returns Result
 	GetResult() ReturnCode
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,6 +76,7 @@ func (m *AdsWriteResponse) GetResult() ReturnCode {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAdsWriteResponse factory function for AdsWriteResponse
 func NewAdsWriteResponse(result ReturnCode) *AdsData {
 	child := &AdsWriteResponse{
 		Result:  result,
@@ -108,12 +109,12 @@ func (m *AdsWriteResponse) GetTypeName() string {
 	return "AdsWriteResponse"
 }
 
-func (m *AdsWriteResponse) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AdsWriteResponse) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AdsWriteResponse) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *AdsWriteResponse) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (result)
 	lengthInBits += 32
@@ -121,8 +122,8 @@ func (m *AdsWriteResponse) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AdsWriteResponse) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AdsWriteResponse) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AdsWriteResponseParse(readBuffer utils.ReadBuffer, commandId CommandId, response bool) (*AdsData, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
index 480b62d..b9b5816 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
@@ -50,10 +50,10 @@ type IAmsNetId interface {
 	GetOctet5() uint8
 	// GetOctet6 returns Octet6
 	GetOctet6() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -89,6 +89,7 @@ func (m *AmsNetId) GetOctet6() uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAmsNetId factory function for AmsNetId
 func NewAmsNetId(octet1 uint8, octet2 uint8, octet3 uint8, octet4 uint8, octet5 uint8, octet6 uint8) *AmsNetId {
 	return &AmsNetId{Octet1: octet1, Octet2: octet2, Octet3: octet3, Octet4: octet4, Octet5: octet5, Octet6: octet6}
 }
@@ -110,11 +111,11 @@ func (m *AmsNetId) GetTypeName() string {
 	return "AmsNetId"
 }
 
-func (m *AmsNetId) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AmsNetId) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AmsNetId) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AmsNetId) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (octet1)
@@ -138,8 +139,8 @@ func (m *AmsNetId) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AmsNetId) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AmsNetId) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AmsNetIdParse(readBuffer utils.ReadBuffer) (*AmsNetId, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
index 460c15c..e73753e 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
@@ -59,10 +59,10 @@ type IAmsPacket interface {
 	GetInvokeId() uint32
 	// GetData returns Data
 	GetData() *AdsData
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -110,6 +110,7 @@ func (m *AmsPacket) GetData() *AdsData {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAmsPacket factory function for AmsPacket
 func NewAmsPacket(targetAmsNetId *AmsNetId, targetAmsPort uint16, sourceAmsNetId *AmsNetId, sourceAmsPort uint16, commandId CommandId, state *State, errorCode uint32, invokeId uint32, data *AdsData) *AmsPacket {
 	return &AmsPacket{TargetAmsNetId: targetAmsNetId, TargetAmsPort: targetAmsPort, SourceAmsNetId: sourceAmsNetId, SourceAmsPort: sourceAmsPort, CommandId: commandId, State: state, ErrorCode: errorCode, InvokeId: invokeId, Data: data}
 }
@@ -131,21 +132,21 @@ func (m *AmsPacket) GetTypeName() string {
 	return "AmsPacket"
 }
 
-func (m *AmsPacket) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AmsPacket) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AmsPacket) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AmsPacket) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (targetAmsNetId)
-	lengthInBits += m.TargetAmsNetId.LengthInBits()
+	lengthInBits += m.TargetAmsNetId.GetLengthInBits()
 
 	// Simple field (targetAmsPort)
 	lengthInBits += 16
 
 	// Simple field (sourceAmsNetId)
-	lengthInBits += m.SourceAmsNetId.LengthInBits()
+	lengthInBits += m.SourceAmsNetId.GetLengthInBits()
 
 	// Simple field (sourceAmsPort)
 	lengthInBits += 16
@@ -154,7 +155,7 @@ func (m *AmsPacket) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits += 16
 
 	// Simple field (state)
-	lengthInBits += m.State.LengthInBits()
+	lengthInBits += m.State.GetLengthInBits()
 
 	// Implicit Field (length)
 	lengthInBits += 32
@@ -166,13 +167,13 @@ func (m *AmsPacket) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits += 32
 
 	// Simple field (data)
-	lengthInBits += m.Data.LengthInBits()
+	lengthInBits += m.Data.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *AmsPacket) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AmsPacket) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AmsPacketParse(readBuffer utils.ReadBuffer) (*AmsPacket, error) {
@@ -271,7 +272,7 @@ func AmsPacketParse(readBuffer utils.ReadBuffer) (*AmsPacket, error) {
 	if pullErr := readBuffer.PullContext("data"); pullErr != nil {
 		return nil, pullErr
 	}
-	_data, _dataErr := AdsDataParse(readBuffer, commandId, bool(state.Response))
+	_data, _dataErr := AdsDataParse(readBuffer, commandId, bool(state.GetResponse()))
 	if _dataErr != nil {
 		return nil, errors.Wrap(_dataErr, "Error parsing 'data' field")
 	}
@@ -356,7 +357,7 @@ func (m *AmsPacket) Serialize(writeBuffer utils.WriteBuffer) error {
 	}
 
 	// Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-	length := uint32(m.Data.LengthInBytes())
+	length := uint32(m.GetData().GetLengthInBytes())
 	_lengthErr := writeBuffer.WriteUint32("length", 32, (length))
 	if _lengthErr != nil {
 		return errors.Wrap(_lengthErr, "Error serializing 'length' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
index 1f4dcf9..bbadda5 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
@@ -50,10 +50,10 @@ type IAmsSerialAcknowledgeFrame interface {
 	GetLength() int8
 	// GetCrc returns Crc
 	GetCrc() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -89,6 +89,7 @@ func (m *AmsSerialAcknowledgeFrame) GetCrc() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAmsSerialAcknowledgeFrame factory function for AmsSerialAcknowledgeFrame
 func NewAmsSerialAcknowledgeFrame(magicCookie uint16, transmitterAddress int8, receiverAddress int8, fragmentNumber int8, length int8, crc uint16) *AmsSerialAcknowledgeFrame {
 	return &AmsSerialAcknowledgeFrame{MagicCookie: magicCookie, TransmitterAddress: transmitterAddress, ReceiverAddress: receiverAddress, FragmentNumber: fragmentNumber, Length: length, Crc: crc}
 }
@@ -110,11 +111,11 @@ func (m *AmsSerialAcknowledgeFrame) GetTypeName() string {
 	return "AmsSerialAcknowledgeFrame"
 }
 
-func (m *AmsSerialAcknowledgeFrame) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AmsSerialAcknowledgeFrame) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AmsSerialAcknowledgeFrame) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AmsSerialAcknowledgeFrame) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (magicCookie)
@@ -138,8 +139,8 @@ func (m *AmsSerialAcknowledgeFrame) LengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
-func (m *AmsSerialAcknowledgeFrame) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AmsSerialAcknowledgeFrame) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AmsSerialAcknowledgeFrameParse(readBuffer utils.ReadBuffer) (*AmsSerialAcknowledgeFrame, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
index 4dae953..20eef08 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
@@ -53,10 +53,10 @@ type IAmsSerialFrame interface {
 	GetUserdata() *AmsPacket
 	// GetCrc returns Crc
 	GetCrc() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -96,6 +96,7 @@ func (m *AmsSerialFrame) GetCrc() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAmsSerialFrame factory function for AmsSerialFrame
 func NewAmsSerialFrame(magicCookie uint16, transmitterAddress int8, receiverAddress int8, fragmentNumber int8, length int8, userdata *AmsPacket, crc uint16) *AmsSerialFrame {
 	return &AmsSerialFrame{MagicCookie: magicCookie, TransmitterAddress: transmitterAddress, ReceiverAddress: receiverAddress, FragmentNumber: fragmentNumber, Length: length, Userdata: userdata, Crc: crc}
 }
@@ -117,11 +118,11 @@ func (m *AmsSerialFrame) GetTypeName() string {
 	return "AmsSerialFrame"
 }
 
-func (m *AmsSerialFrame) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AmsSerialFrame) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AmsSerialFrame) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AmsSerialFrame) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (magicCookie)
@@ -140,7 +141,7 @@ func (m *AmsSerialFrame) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits += 8
 
 	// Simple field (userdata)
-	lengthInBits += m.Userdata.LengthInBits()
+	lengthInBits += m.Userdata.GetLengthInBits()
 
 	// Simple field (crc)
 	lengthInBits += 16
@@ -148,8 +149,8 @@ func (m *AmsSerialFrame) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AmsSerialFrame) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AmsSerialFrame) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AmsSerialFrameParse(readBuffer utils.ReadBuffer) (*AmsSerialFrame, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
index 815c602..07e4468 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
@@ -50,10 +50,10 @@ type IAmsSerialResetFrame interface {
 	GetLength() int8
 	// GetCrc returns Crc
 	GetCrc() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -89,6 +89,7 @@ func (m *AmsSerialResetFrame) GetCrc() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAmsSerialResetFrame factory function for AmsSerialResetFrame
 func NewAmsSerialResetFrame(magicCookie uint16, transmitterAddress int8, receiverAddress int8, fragmentNumber int8, length int8, crc uint16) *AmsSerialResetFrame {
 	return &AmsSerialResetFrame{MagicCookie: magicCookie, TransmitterAddress: transmitterAddress, ReceiverAddress: receiverAddress, FragmentNumber: fragmentNumber, Length: length, Crc: crc}
 }
@@ -110,11 +111,11 @@ func (m *AmsSerialResetFrame) GetTypeName() string {
 	return "AmsSerialResetFrame"
 }
 
-func (m *AmsSerialResetFrame) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AmsSerialResetFrame) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AmsSerialResetFrame) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AmsSerialResetFrame) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (magicCookie)
@@ -138,8 +139,8 @@ func (m *AmsSerialResetFrame) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *AmsSerialResetFrame) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AmsSerialResetFrame) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AmsSerialResetFrameParse(readBuffer utils.ReadBuffer) (*AmsSerialResetFrame, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
index 6a6a4aa..4313a2a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
@@ -36,10 +36,10 @@ type AmsTCPPacket struct {
 type IAmsTCPPacket interface {
 	// GetUserdata returns Userdata
 	GetUserdata() *AmsPacket
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -55,6 +55,7 @@ func (m *AmsTCPPacket) GetUserdata() *AmsPacket {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewAmsTCPPacket factory function for AmsTCPPacket
 func NewAmsTCPPacket(userdata *AmsPacket) *AmsTCPPacket {
 	return &AmsTCPPacket{Userdata: userdata}
 }
@@ -76,11 +77,11 @@ func (m *AmsTCPPacket) GetTypeName() string {
 	return "AmsTCPPacket"
 }
 
-func (m *AmsTCPPacket) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *AmsTCPPacket) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *AmsTCPPacket) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *AmsTCPPacket) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Reserved Field (reserved)
@@ -90,13 +91,13 @@ func (m *AmsTCPPacket) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits += 32
 
 	// Simple field (userdata)
-	lengthInBits += m.Userdata.LengthInBits()
+	lengthInBits += m.Userdata.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *AmsTCPPacket) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *AmsTCPPacket) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func AmsTCPPacketParse(readBuffer utils.ReadBuffer) (*AmsTCPPacket, error) {
@@ -160,7 +161,7 @@ func (m *AmsTCPPacket) Serialize(writeBuffer utils.WriteBuffer) error {
 	}
 
 	// Implicit Field (length) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-	length := uint32(m.Userdata.LengthInBytes())
+	length := uint32(m.GetUserdata().GetLengthInBytes())
 	_lengthErr := writeBuffer.WriteUint32("length", 32, (length))
 	if _lengthErr != nil {
 		return errors.Wrap(_lengthErr, "Error serializing 'length' field")
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go b/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
index 7e57a84..19d4d3f 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
@@ -134,12 +134,12 @@ func CastCommandId(structType interface{}) CommandId {
 	return castFunc(structType)
 }
 
-func (m CommandId) LengthInBits() uint16 {
+func (m CommandId) GetLengthInBits() uint16 {
 	return 16
 }
 
-func (m CommandId) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m CommandId) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func CommandIdParse(readBuffer utils.ReadBuffer) (CommandId, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/DataItem.go b/plc4go/internal/plc4go/ads/readwrite/model/DataItem.go
index 7bdd11c..6ee47c0 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/DataItem.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/DataItem.go
@@ -228,6 +228,14 @@ func DataItemParse(readBuffer utils.ReadBuffer, dataFormatName string, stringLen
 }
 
 func DataItemSerialize(writeBuffer utils.WriteBuffer, value api.PlcValue, dataFormatName string, stringLength int32) error {
+	m := struct {
+		DataFormatName string
+		StringLength   int32
+	}{
+		DataFormatName: dataFormatName,
+		StringLength:   stringLength,
+	}
+	_ = m
 	writeBuffer.PushContext("DataItem")
 	switch {
 	case dataFormatName == "IEC61131_BOOL": // BOOL
@@ -317,13 +325,13 @@ func DataItemSerialize(writeBuffer utils.WriteBuffer, value api.PlcValue, dataFo
 		}
 	case dataFormatName == "IEC61131_STRING": // STRING
 		// Manual Field (value)
-		_valueErr := SerializeAmsString(writeBuffer, value, stringLength, "UTF-8")
+		_valueErr := SerializeAmsString(writeBuffer, value, m.StringLength, "UTF-8")
 		if _valueErr != nil {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 	case dataFormatName == "IEC61131_WSTRING": // STRING
 		// Manual Field (value)
-		_valueErr := SerializeAmsString(writeBuffer, value, stringLength, "UTF-16")
+		_valueErr := SerializeAmsString(writeBuffer, value, m.StringLength, "UTF-16")
 		if _valueErr != nil {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go b/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
index df471be..e9e7cb5 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
@@ -254,12 +254,12 @@ func CastReservedIndexGroups(structType interface{}) ReservedIndexGroups {
 	return castFunc(structType)
 }
 
-func (m ReservedIndexGroups) LengthInBits() uint16 {
+func (m ReservedIndexGroups) GetLengthInBits() uint16 {
 	return 32
 }
 
-func (m ReservedIndexGroups) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m ReservedIndexGroups) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func ReservedIndexGroupsParse(readBuffer utils.ReadBuffer) (ReservedIndexGroups, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go b/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
index 10866d8..b0ae736 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
@@ -806,12 +806,12 @@ func CastReturnCode(structType interface{}) ReturnCode {
 	return castFunc(structType)
 }
 
-func (m ReturnCode) LengthInBits() uint16 {
+func (m ReturnCode) GetLengthInBits() uint16 {
 	return 32
 }
 
-func (m ReturnCode) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m ReturnCode) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func ReturnCodeParse(readBuffer utils.ReadBuffer) (ReturnCode, error) {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/State.go b/plc4go/internal/plc4go/ads/readwrite/model/State.go
index f4f3bdb..5fcfe26 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/State.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/State.go
@@ -60,10 +60,10 @@ type IState interface {
 	GetResponse() bool
 	// GetBroadcast returns Broadcast
 	GetBroadcast() bool
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -111,6 +111,7 @@ func (m *State) GetBroadcast() bool {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewState factory function for State
 func NewState(initCommand bool, updCommand bool, timestampAdded bool, highPriorityCommand bool, systemCommand bool, adsCommand bool, noReturn bool, response bool, broadcast bool) *State {
 	return &State{InitCommand: initCommand, UpdCommand: updCommand, TimestampAdded: timestampAdded, HighPriorityCommand: highPriorityCommand, SystemCommand: systemCommand, AdsCommand: adsCommand, NoReturn: noReturn, Response: response, Broadcast: broadcast}
 }
@@ -132,11 +133,11 @@ func (m *State) GetTypeName() string {
 	return "State"
 }
 
-func (m *State) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *State) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *State) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *State) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (initCommand)
@@ -172,8 +173,8 @@ func (m *State) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *State) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *State) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func StateParse(readBuffer utils.ReadBuffer) (*State, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 617efd6..b9315d0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -28,17 +28,20 @@ import (
 
 // The data-structure of this message
 type APDU struct {
-	Child IAPDUChild
+
+	// Arguments.
+	ApduLength uint16
+	Child      IAPDUChild
 }
 
 // The corresponding interface
 type IAPDU interface {
 	// ApduType returns ApduType
 	ApduType() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -63,8 +66,9 @@ type IAPDUChild interface {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDU() *APDU {
-	return &APDU{}
+// NewAPDU factory function for APDU
+func NewAPDU(apduLength uint16) *APDU {
+	return &APDU{ApduLength: apduLength}
 }
 
 func CastAPDU(structType interface{}) *APDU {
@@ -84,15 +88,15 @@ func (m *APDU) GetTypeName() string {
 	return "APDU"
 }
 
-func (m *APDU) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDU) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDU) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *APDU) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *APDU) ParentLengthInBits() uint16 {
+func (m *APDU) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (apduType)
 	lengthInBits += 4
@@ -100,8 +104,8 @@ func (m *APDU) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *APDU) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDU) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
index 4b1acba..9db257a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -33,6 +33,9 @@ type APDUAbort struct {
 	Server           bool
 	OriginalInvokeId uint8
 	AbortReason      uint8
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -43,10 +46,10 @@ type IAPDUAbort interface {
 	GetOriginalInvokeId() uint8
 	// GetAbortReason returns AbortReason
 	GetAbortReason() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -83,12 +86,13 @@ func (m *APDUAbort) GetAbortReason() uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUAbort(server bool, originalInvokeId uint8, abortReason uint8) *APDU {
+// NewAPDUAbort factory function for APDUAbort
+func NewAPDUAbort(server bool, originalInvokeId uint8, abortReason uint8, apduLength uint16) *APDU {
 	child := &APDUAbort{
 		Server:           server,
 		OriginalInvokeId: originalInvokeId,
 		AbortReason:      abortReason,
-		APDU:             NewAPDU(),
+		APDU:             NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -117,12 +121,12 @@ func (m *APDUAbort) GetTypeName() string {
 	return "APDUAbort"
 }
 
-func (m *APDUAbort) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUAbort) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUAbort) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUAbort) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Reserved Field (reserved)
 	lengthInBits += 3
@@ -139,8 +143,8 @@ func (m *APDUAbort) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *APDUAbort) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUAbort) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUAbortParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
index 6df70be..b296bb5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -39,6 +39,9 @@ type APDUComplexAck struct {
 	ServiceAck           *BACnetServiceAck
 	SegmentServiceChoice *uint8
 	Segment              []byte
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -59,10 +62,10 @@ type IAPDUComplexAck interface {
 	GetSegmentServiceChoice() *uint8
 	// GetSegment returns Segment
 	GetSegment() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -119,7 +122,8 @@ func (m *APDUComplexAck) GetSegment() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUComplexAck(segmentedMessage bool, moreFollows bool, originalInvokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceAck *BACnetServiceAck, segmentServiceChoice *uint8, segment []byte) *APDU {
+// NewAPDUComplexAck factory function for APDUComplexAck
+func NewAPDUComplexAck(segmentedMessage bool, moreFollows bool, originalInvokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceAck *BACnetServiceAck, segmentServiceChoice *uint8, segment []byte, apduLength uint16) *APDU {
 	child := &APDUComplexAck{
 		SegmentedMessage:     segmentedMessage,
 		MoreFollows:          moreFollows,
@@ -129,7 +133,7 @@ func NewAPDUComplexAck(segmentedMessage bool, moreFollows bool, originalInvokeId
 		ServiceAck:           serviceAck,
 		SegmentServiceChoice: segmentServiceChoice,
 		Segment:              segment,
-		APDU:                 NewAPDU(),
+		APDU:                 NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -158,12 +162,12 @@ func (m *APDUComplexAck) GetTypeName() string {
 	return "APDUComplexAck"
 }
 
-func (m *APDUComplexAck) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUComplexAck) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUComplexAck) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUComplexAck) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (segmentedMessage)
 	lengthInBits += 1
@@ -189,7 +193,7 @@ func (m *APDUComplexAck) LengthInBitsConditional(lastItem bool) uint16 {
 
 	// Optional Field (serviceAck)
 	if m.ServiceAck != nil {
-		lengthInBits += (*m.ServiceAck).LengthInBits()
+		lengthInBits += (*m.ServiceAck).GetLengthInBits()
 	}
 
 	// Optional Field (segmentServiceChoice)
@@ -205,8 +209,8 @@ func (m *APDUComplexAck) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *APDUComplexAck) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUComplexAck) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUComplexAckParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
index 7bce80a..03c5769 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -39,6 +39,9 @@ type APDUConfirmedRequest struct {
 	SequenceNumber            *uint8
 	ProposedWindowSize        *uint8
 	ServiceRequest            *BACnetConfirmedServiceRequest
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -61,10 +64,10 @@ type IAPDUConfirmedRequest interface {
 	GetProposedWindowSize() *uint8
 	// GetServiceRequest returns ServiceRequest
 	GetServiceRequest() *BACnetConfirmedServiceRequest
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -125,7 +128,8 @@ func (m *APDUConfirmedRequest) GetServiceRequest() *BACnetConfirmedServiceReques
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUConfirmedRequest(segmentedMessage bool, moreFollows bool, segmentedResponseAccepted bool, maxSegmentsAccepted uint8, maxApduLengthAccepted uint8, invokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceRequest *BACnetConfirmedServiceRequest) *APDU {
+// NewAPDUConfirmedRequest factory function for APDUConfirmedRequest
+func NewAPDUConfirmedRequest(segmentedMessage bool, moreFollows bool, segmentedResponseAccepted bool, maxSegmentsAccepted uint8, maxApduLengthAccepted uint8, invokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceRequest *BACnetConfirmedServiceRequest, apduLength uint16) *APDU {
 	child := &APDUConfirmedRequest{
 		SegmentedMessage:          segmentedMessage,
 		MoreFollows:               moreFollows,
@@ -136,7 +140,7 @@ func NewAPDUConfirmedRequest(segmentedMessage bool, moreFollows bool, segmentedR
 		SequenceNumber:            sequenceNumber,
 		ProposedWindowSize:        proposedWindowSize,
 		ServiceRequest:            serviceRequest,
-		APDU:                      NewAPDU(),
+		APDU:                      NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -165,12 +169,12 @@ func (m *APDUConfirmedRequest) GetTypeName() string {
 	return "APDUConfirmedRequest"
 }
 
-func (m *APDUConfirmedRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUConfirmedRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUConfirmedRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUConfirmedRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (segmentedMessage)
 	lengthInBits += 1
@@ -204,13 +208,13 @@ func (m *APDUConfirmedRequest) LengthInBitsConditional(lastItem bool) uint16 {
 	}
 
 	// Simple field (serviceRequest)
-	lengthInBits += m.ServiceRequest.LengthInBits()
+	lengthInBits += m.ServiceRequest.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *APDUConfirmedRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUConfirmedRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUConfirmedRequestParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
index 97910ac..fb0c119 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
@@ -32,6 +32,9 @@ type APDUError struct {
 	*APDU
 	OriginalInvokeId uint8
 	Error            *BACnetError
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -40,10 +43,10 @@ type IAPDUError interface {
 	GetOriginalInvokeId() uint8
 	// GetError returns Error
 	GetError() *BACnetError
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,11 +79,12 @@ func (m *APDUError) GetError() *BACnetError {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUError(originalInvokeId uint8, error *BACnetError) *APDU {
+// NewAPDUError factory function for APDUError
+func NewAPDUError(originalInvokeId uint8, error *BACnetError, apduLength uint16) *APDU {
 	child := &APDUError{
 		OriginalInvokeId: originalInvokeId,
 		Error:            error,
-		APDU:             NewAPDU(),
+		APDU:             NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -109,12 +113,12 @@ func (m *APDUError) GetTypeName() string {
 	return "APDUError"
 }
 
-func (m *APDUError) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUError) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUError) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUError) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Reserved Field (reserved)
 	lengthInBits += 4
@@ -123,13 +127,13 @@ func (m *APDUError) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits += 8
 
 	// Simple field (error)
-	lengthInBits += m.Error.LengthInBits()
+	lengthInBits += m.Error.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *APDUError) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUError) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUErrorParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
index 7715463..144ba92 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
@@ -32,6 +32,9 @@ type APDUReject struct {
 	*APDU
 	OriginalInvokeId uint8
 	RejectReason     uint8
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -40,10 +43,10 @@ type IAPDUReject interface {
 	GetOriginalInvokeId() uint8
 	// GetRejectReason returns RejectReason
 	GetRejectReason() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,11 +79,12 @@ func (m *APDUReject) GetRejectReason() uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUReject(originalInvokeId uint8, rejectReason uint8) *APDU {
+// NewAPDUReject factory function for APDUReject
+func NewAPDUReject(originalInvokeId uint8, rejectReason uint8, apduLength uint16) *APDU {
 	child := &APDUReject{
 		OriginalInvokeId: originalInvokeId,
 		RejectReason:     rejectReason,
-		APDU:             NewAPDU(),
+		APDU:             NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -109,12 +113,12 @@ func (m *APDUReject) GetTypeName() string {
 	return "APDUReject"
 }
 
-func (m *APDUReject) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUReject) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUReject) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUReject) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Reserved Field (reserved)
 	lengthInBits += 4
@@ -128,8 +132,8 @@ func (m *APDUReject) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *APDUReject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUReject) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDURejectParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
index 127031f..38b505e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -35,6 +35,9 @@ type APDUSegmentAck struct {
 	OriginalInvokeId   uint8
 	SequenceNumber     uint8
 	ProposedWindowSize uint8
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -49,10 +52,10 @@ type IAPDUSegmentAck interface {
 	GetSequenceNumber() uint8
 	// GetProposedWindowSize returns ProposedWindowSize
 	GetProposedWindowSize() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -97,14 +100,15 @@ func (m *APDUSegmentAck) GetProposedWindowSize() uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUSegmentAck(negativeAck bool, server bool, originalInvokeId uint8, sequenceNumber uint8, proposedWindowSize uint8) *APDU {
+// NewAPDUSegmentAck factory function for APDUSegmentAck
+func NewAPDUSegmentAck(negativeAck bool, server bool, originalInvokeId uint8, sequenceNumber uint8, proposedWindowSize uint8, apduLength uint16) *APDU {
 	child := &APDUSegmentAck{
 		NegativeAck:        negativeAck,
 		Server:             server,
 		OriginalInvokeId:   originalInvokeId,
 		SequenceNumber:     sequenceNumber,
 		ProposedWindowSize: proposedWindowSize,
-		APDU:               NewAPDU(),
+		APDU:               NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -133,12 +137,12 @@ func (m *APDUSegmentAck) GetTypeName() string {
 	return "APDUSegmentAck"
 }
 
-func (m *APDUSegmentAck) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUSegmentAck) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUSegmentAck) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUSegmentAck) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Reserved Field (reserved)
 	lengthInBits += 2
@@ -161,8 +165,8 @@ func (m *APDUSegmentAck) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *APDUSegmentAck) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUSegmentAck) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUSegmentAckParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
index 6b798f9..93cb394 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
@@ -32,6 +32,9 @@ type APDUSimpleAck struct {
 	*APDU
 	OriginalInvokeId uint8
 	ServiceChoice    uint8
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
@@ -40,10 +43,10 @@ type IAPDUSimpleAck interface {
 	GetOriginalInvokeId() uint8
 	// GetServiceChoice returns ServiceChoice
 	GetServiceChoice() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,11 +79,12 @@ func (m *APDUSimpleAck) GetServiceChoice() uint8 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUSimpleAck(originalInvokeId uint8, serviceChoice uint8) *APDU {
+// NewAPDUSimpleAck factory function for APDUSimpleAck
+func NewAPDUSimpleAck(originalInvokeId uint8, serviceChoice uint8, apduLength uint16) *APDU {
 	child := &APDUSimpleAck{
 		OriginalInvokeId: originalInvokeId,
 		ServiceChoice:    serviceChoice,
-		APDU:             NewAPDU(),
+		APDU:             NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -109,12 +113,12 @@ func (m *APDUSimpleAck) GetTypeName() string {
 	return "APDUSimpleAck"
 }
 
-func (m *APDUSimpleAck) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUSimpleAck) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUSimpleAck) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUSimpleAck) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Reserved Field (reserved)
 	lengthInBits += 4
@@ -128,8 +132,8 @@ func (m *APDUSimpleAck) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *APDUSimpleAck) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUSimpleAck) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUSimpleAckParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
index 43e7c2b..0a5478b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
@@ -31,16 +31,19 @@ import (
 type APDUUnconfirmedRequest struct {
 	*APDU
 	ServiceRequest *BACnetUnconfirmedServiceRequest
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
 type IAPDUUnconfirmedRequest interface {
 	// GetServiceRequest returns ServiceRequest
 	GetServiceRequest() *BACnetUnconfirmedServiceRequest
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,10 +72,11 @@ func (m *APDUUnconfirmedRequest) GetServiceRequest() *BACnetUnconfirmedServiceRe
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUUnconfirmedRequest(serviceRequest *BACnetUnconfirmedServiceRequest) *APDU {
+// NewAPDUUnconfirmedRequest factory function for APDUUnconfirmedRequest
+func NewAPDUUnconfirmedRequest(serviceRequest *BACnetUnconfirmedServiceRequest, apduLength uint16) *APDU {
 	child := &APDUUnconfirmedRequest{
 		ServiceRequest: serviceRequest,
-		APDU:           NewAPDU(),
+		APDU:           NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -101,24 +105,24 @@ func (m *APDUUnconfirmedRequest) GetTypeName() string {
 	return "APDUUnconfirmedRequest"
 }
 
-func (m *APDUUnconfirmedRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUUnconfirmedRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUUnconfirmedRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUUnconfirmedRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Reserved Field (reserved)
 	lengthInBits += 4
 
 	// Simple field (serviceRequest)
-	lengthInBits += m.ServiceRequest.LengthInBits()
+	lengthInBits += m.ServiceRequest.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *APDUUnconfirmedRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUUnconfirmedRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUUnconfirmedRequestParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go
index 7542780..4ecea68 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnknown.go
@@ -30,16 +30,19 @@ import (
 type APDUUnknown struct {
 	*APDU
 	UnknownBytes []byte
+
+	// Arguments.
+	ApduLength uint16
 }
 
 // The corresponding interface
 type IAPDUUnknown interface {
 	// GetUnknownBytes returns UnknownBytes
 	GetUnknownBytes() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -68,10 +71,11 @@ func (m *APDUUnknown) GetUnknownBytes() []byte {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewAPDUUnknown(unknownBytes []byte) *APDU {
+// NewAPDUUnknown factory function for APDUUnknown
+func NewAPDUUnknown(unknownBytes []byte, apduLength uint16) *APDU {
 	child := &APDUUnknown{
 		UnknownBytes: unknownBytes,
-		APDU:         NewAPDU(),
+		APDU:         NewAPDU(apduLength),
 	}
 	child.Child = child
 	return child.APDU
@@ -100,12 +104,12 @@ func (m *APDUUnknown) GetTypeName() string {
 	return "APDUUnknown"
 }
 
-func (m *APDUUnknown) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *APDUUnknown) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *APDUUnknown) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *APDUUnknown) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Array field
 	if len(m.UnknownBytes) > 0 {
@@ -115,8 +119,8 @@ func (m *APDUUnknown) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *APDUUnknown) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *APDUUnknown) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func APDUUnknownParse(readBuffer utils.ReadBuffer, apduLength uint16) (*APDU, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAction.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAction.go
index 67dd261..a63b133 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAction.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAction.go
@@ -29,9 +29,10 @@ import (
 
 // The data-structure of this message
 type BACnetAction struct {
-	RawData   *BACnetContextTagEnumerated
-	IsDirect  bool
-	IsReverse bool
+	RawData *BACnetContextTagEnumerated
+
+	// Arguments.
+	TagNumber uint8
 }
 
 // The corresponding interface
@@ -42,10 +43,10 @@ type IBACnetAction interface {
 	GetIsDirect() bool
 	// GetIsReverse returns IsReverse
 	GetIsReverse() bool
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,17 +62,20 @@ func (m *BACnetAction) GetRawData() *BACnetContextTagEnumerated {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetAction) GetIsDirect() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsDirect
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (0)))
 }
 
 func (m *BACnetAction) GetIsReverse() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsReverse
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (1)))
 }
 
-func NewBACnetAction(rawData *BACnetContextTagEnumerated, isDirect bool, isReverse bool) *BACnetAction {
-	return &BACnetAction{RawData: rawData, IsDirect: isDirect, IsReverse: isReverse}
+// NewBACnetAction factory function for BACnetAction
+func NewBACnetAction(rawData *BACnetContextTagEnumerated, tagNumber uint8) *BACnetAction {
+	return &BACnetAction{RawData: rawData, TagNumber: tagNumber}
 }
 
 func CastBACnetAction(structType interface{}) *BACnetAction {
@@ -91,16 +95,16 @@ func (m *BACnetAction) GetTypeName() string {
 	return "BACnetAction"
 }
 
-func (m *BACnetAction) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetAction) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetAction) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetAction) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Optional Field (rawData)
 	if m.RawData != nil {
-		lengthInBits += (*m.RawData).LengthInBits()
+		lengthInBits += (*m.RawData).GetLengthInBits()
 	}
 
 	// A virtual field doesn't have any in- or output.
@@ -110,8 +114,8 @@ func (m *BACnetAction) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetAction) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetAction) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetActionParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetAction, error) {
@@ -141,19 +145,21 @@ func BACnetActionParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetAct
 	}
 
 	// Virtual field
-	_isDirect := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (0)))
+	_isDirect := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (0)))
 	isDirect := bool(_isDirect)
+	_ = isDirect
 
 	// Virtual field
-	_isReverse := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (1)))
+	_isReverse := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (1)))
 	isReverse := bool(_isReverse)
+	_ = isReverse
 
 	if closeErr := readBuffer.CloseContext("BACnetAction"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create the instance
-	return NewBACnetAction(rawData, isDirect, isReverse), nil
+	return NewBACnetAction(rawData, tagNumber), nil
 }
 
 func (m *BACnetAction) Serialize(writeBuffer utils.WriteBuffer) error {
@@ -177,11 +183,11 @@ func (m *BACnetAction) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 	}
 	// Virtual field
-	if _isDirectErr := writeBuffer.WriteVirtual("isDirect", m.IsDirect); _isDirectErr != nil {
+	if _isDirectErr := writeBuffer.WriteVirtual("isDirect", m.GetIsDirect()); _isDirectErr != nil {
 		return errors.Wrap(_isDirectErr, "Error serializing 'isDirect' field")
 	}
 	// Virtual field
-	if _isReverseErr := writeBuffer.WriteVirtual("isReverse", m.IsReverse); _isReverseErr != nil {
+	if _isReverseErr := writeBuffer.WriteVirtual("isReverse", m.GetIsReverse()); _isReverseErr != nil {
 		return errors.Wrap(_isReverseErr, "Error serializing 'isReverse' field")
 	}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetActionCommand.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetActionCommand.go
index c277ae3..e2794d8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetActionCommand.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetActionCommand.go
@@ -60,10 +60,10 @@ type IBACnetActionCommand interface {
 	GetQuitOnFailure() *BACnetContextTagBoolean
 	// GetWriteSuccessful returns WriteSuccessful
 	GetWriteSuccessful() *BACnetContextTagBoolean
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -111,6 +111,7 @@ func (m *BACnetActionCommand) GetWriteSuccessful() *BACnetContextTagBoolean {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetActionCommand factory function for BACnetActionCommand
 func NewBACnetActionCommand(deviceIdentifier *BACnetContextTagObjectIdentifier, objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *BACnetContextTagUnsignedInteger, propertyValue *BACnetConstructedData, priority *BACnetContextTagUnsignedInteger, postDelay *BACnetContextTagBoolean, quitOnFailure *BACnetContextTagBoolean, writeSuccessful *BACnetContextTagBoolean) *BACnetActionCommand {
 	return &BACnetActionCommand{DeviceIdentifier: deviceIdentifier, ObjectIdentifier: objectIdentifier, PropertyIdentifier: propertyIdentifier, ArrayIndex: arrayIndex, PropertyValue: propertyValue, Priority: priority, PostDelay: postDelay, QuitOnFailure: quitOnFailure, WriteSuccessful: writeSuccessful}
 }
@@ -132,55 +133,55 @@ func (m *BACnetActionCommand) GetTypeName() string {
 	return "BACnetActionCommand"
 }
 
-func (m *BACnetActionCommand) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetActionCommand) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetActionCommand) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetActionCommand) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Optional Field (deviceIdentifier)
 	if m.DeviceIdentifier != nil {
-		lengthInBits += (*m.DeviceIdentifier).LengthInBits()
+		lengthInBits += (*m.DeviceIdentifier).GetLengthInBits()
 	}
 
 	// Simple field (objectIdentifier)
-	lengthInBits += m.ObjectIdentifier.LengthInBits()
+	lengthInBits += m.ObjectIdentifier.GetLengthInBits()
 
 	// Simple field (propertyIdentifier)
-	lengthInBits += m.PropertyIdentifier.LengthInBits()
+	lengthInBits += m.PropertyIdentifier.GetLengthInBits()
 
 	// Optional Field (arrayIndex)
 	if m.ArrayIndex != nil {
-		lengthInBits += (*m.ArrayIndex).LengthInBits()
+		lengthInBits += (*m.ArrayIndex).GetLengthInBits()
 	}
 
 	// Optional Field (propertyValue)
 	if m.PropertyValue != nil {
-		lengthInBits += (*m.PropertyValue).LengthInBits()
+		lengthInBits += (*m.PropertyValue).GetLengthInBits()
 	}
 
 	// Optional Field (priority)
 	if m.Priority != nil {
-		lengthInBits += (*m.Priority).LengthInBits()
+		lengthInBits += (*m.Priority).GetLengthInBits()
 	}
 
 	// Optional Field (postDelay)
 	if m.PostDelay != nil {
-		lengthInBits += (*m.PostDelay).LengthInBits()
+		lengthInBits += (*m.PostDelay).GetLengthInBits()
 	}
 
 	// Simple field (quitOnFailure)
-	lengthInBits += m.QuitOnFailure.LengthInBits()
+	lengthInBits += m.QuitOnFailure.GetLengthInBits()
 
 	// Simple field (writeSuccessful)
-	lengthInBits += m.WriteSuccessful.LengthInBits()
+	lengthInBits += m.WriteSuccessful.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetActionCommand) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetActionCommand) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetActionCommandParse(readBuffer utils.ReadBuffer) (*BACnetActionCommand, error) {
@@ -263,7 +264,7 @@ func BACnetActionCommandParse(readBuffer utils.ReadBuffer) (*BACnetActionCommand
 		if pullErr := readBuffer.PullContext("propertyValue"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetConstructedDataParse(readBuffer, uint8(4), objectIdentifier.ObjectType, propertyIdentifier)
+		_val, _err := BACnetConstructedDataParse(readBuffer, uint8(4), objectIdentifier.GetObjectType(), propertyIdentifier)
 		switch {
 		case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
 			readBuffer.Reset(currentPos)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
index 0042a35..6cd6045 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
@@ -38,10 +38,10 @@ type IBACnetAddress interface {
 	GetAddress() []uint8
 	// GetPort returns Port
 	GetPort() uint16
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetAddress) GetPort() uint16 {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetAddress factory function for BACnetAddress
 func NewBACnetAddress(address []uint8, port uint16) *BACnetAddress {
 	return &BACnetAddress{Address: address, Port: port}
 }
@@ -82,11 +83,11 @@ func (m *BACnetAddress) GetTypeName() string {
 	return "BACnetAddress"
 }
 
-func (m *BACnetAddress) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetAddress) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetAddress) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetAddress) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Array field
@@ -100,8 +101,8 @@ func (m *BACnetAddress) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetAddress) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetAddress) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetAddressParse(readBuffer utils.ReadBuffer) (*BACnetAddress, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTag.go
index 1a42ea5..0671b12 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTag.go
@@ -28,10 +28,8 @@ import (
 
 // The data-structure of this message
 type BACnetApplicationTag struct {
-	Header          *BACnetTagHeader
-	ActualTagNumber uint8
-	ActualLength    uint32
-	Child           IBACnetApplicationTagChild
+	Header *BACnetTagHeader
+	Child  IBACnetApplicationTagChild
 }
 
 // The corresponding interface
@@ -44,10 +42,10 @@ type IBACnetApplicationTag interface {
 	GetActualTagNumber() uint8
 	// GetActualLength returns ActualLength
 	GetActualLength() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -59,7 +57,7 @@ type IBACnetApplicationTagParent interface {
 
 type IBACnetApplicationTagChild interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
-	InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32)
+	InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader)
 	GetTypeName() string
 	IBACnetApplicationTag
 }
@@ -75,17 +73,16 @@ func (m *BACnetApplicationTag) GetHeader() *BACnetTagHeader {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTag) GetActualTagNumber() uint8 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ActualTagNumber
+	return m.GetHeader().GetActualTagNumber()
 }
 
 func (m *BACnetApplicationTag) GetActualLength() uint32 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ActualLength
+	return m.GetHeader().GetActualLength()
 }
 
-func NewBACnetApplicationTag(header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
-	return &BACnetApplicationTag{Header: header, ActualTagNumber: actualTagNumber, ActualLength: actualLength}
+// NewBACnetApplicationTag factory function for BACnetApplicationTag
+func NewBACnetApplicationTag(header *BACnetTagHeader) *BACnetApplicationTag {
+	return &BACnetApplicationTag{Header: header}
 }
 
 func CastBACnetApplicationTag(structType interface{}) *BACnetApplicationTag {
@@ -105,19 +102,19 @@ func (m *BACnetApplicationTag) GetTypeName() string {
 	return "BACnetApplicationTag"
 }
 
-func (m *BACnetApplicationTag) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTag) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTag) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *BACnetApplicationTag) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *BACnetApplicationTag) ParentLengthInBits() uint16 {
+func (m *BACnetApplicationTag) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (header)
-	lengthInBits += m.Header.LengthInBits()
+	lengthInBits += m.Header.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
@@ -126,8 +123,8 @@ func (m *BACnetApplicationTag) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTag) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTag) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
@@ -149,17 +146,19 @@ func BACnetApplicationTagParse(readBuffer utils.ReadBuffer) (*BACnetApplicationT
 	}
 
 	// Validation
-	if !(bool((header.TagClass) == (TagClass_APPLICATION_TAGS))) {
+	if !(bool((header.GetTagClass()) == (TagClass_APPLICATION_TAGS))) {
 		return nil, utils.ParseAssertError{"should be a application tag"}
 	}
 
 	// Virtual field
-	_actualTagNumber := header.ActualTagNumber
+	_actualTagNumber := header.GetActualTagNumber()
 	actualTagNumber := uint8(_actualTagNumber)
+	_ = actualTagNumber
 
 	// Virtual field
-	_actualLength := header.ActualLength
+	_actualLength := header.GetActualLength()
 	actualLength := uint32(_actualLength)
+	_ = actualLength
 
 	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
 	var _parent *BACnetApplicationTag
@@ -204,7 +203,7 @@ func BACnetApplicationTagParse(readBuffer utils.ReadBuffer) (*BACnetApplicationT
 	}
 
 	// Finish initializing
-	_parent.Child.InitializeParent(_parent, header, actualTagNumber, actualLength)
+	_parent.Child.InitializeParent(_parent, header)
 	return _parent, nil
 }
 
@@ -229,11 +228,11 @@ func (m *BACnetApplicationTag) SerializeParent(writeBuffer utils.WriteBuffer, ch
 		return errors.Wrap(_headerErr, "Error serializing 'header' field")
 	}
 	// Virtual field
-	if _actualTagNumberErr := writeBuffer.WriteVirtual("actualTagNumber", m.ActualTagNumber); _actualTagNumberErr != nil {
+	if _actualTagNumberErr := writeBuffer.WriteVirtual("actualTagNumber", m.GetActualTagNumber()); _actualTagNumberErr != nil {
 		return errors.Wrap(_actualTagNumberErr, "Error serializing 'actualTagNumber' field")
 	}
 	// Virtual field
-	if _actualLengthErr := writeBuffer.WriteVirtual("actualLength", m.ActualLength); _actualLengthErr != nil {
+	if _actualLengthErr := writeBuffer.WriteVirtual("actualLength", m.GetActualLength()); _actualLengthErr != nil {
 		return errors.Wrap(_actualLengthErr, "Error serializing 'actualLength' field")
 	}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go
index 294dbf2..d88b0fb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go
@@ -36,10 +36,10 @@ type BACnetApplicationTagBitString struct {
 type IBACnetApplicationTagBitString interface {
 	// GetPayload returns Payload
 	GetPayload() *BACnetTagPayloadBitString
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -55,10 +55,8 @@ func (m *BACnetApplicationTagBitString) GetActualTagNumber() uint8 {
 	return 0x8
 }
 
-func (m *BACnetApplicationTagBitString) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagBitString) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -72,10 +70,11 @@ func (m *BACnetApplicationTagBitString) GetPayload() *BACnetTagPayloadBitString
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetApplicationTagBitString(payload *BACnetTagPayloadBitString, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagBitString factory function for BACnetApplicationTagBitString
+func NewBACnetApplicationTagBitString(payload *BACnetTagPayloadBitString, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagBitString{
 		Payload:              payload,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -104,21 +103,21 @@ func (m *BACnetApplicationTagBitString) GetTypeName() string {
 	return "BACnetApplicationTagBitString"
 }
 
-func (m *BACnetApplicationTagBitString) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagBitString) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagBitString) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagBitString) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagBitString) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagBitString) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagBitStringParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -130,7 +129,7 @@ func BACnetApplicationTagBitStringParse(readBuffer utils.ReadBuffer, header *BAC
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadBitStringParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadBitStringParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go
index 5d4b4f5..9aba589 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go
@@ -29,8 +29,7 @@ import (
 // The data-structure of this message
 type BACnetApplicationTagBoolean struct {
 	*BACnetApplicationTag
-	Payload     *BACnetTagPayloadBoolean
-	ActualValue bool
+	Payload *BACnetTagPayloadBoolean
 }
 
 // The corresponding interface
@@ -39,10 +38,10 @@ type IBACnetApplicationTagBoolean interface {
 	GetPayload() *BACnetTagPayloadBoolean
 	// GetActualValue returns ActualValue
 	GetActualValue() bool
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,10 +57,8 @@ func (m *BACnetApplicationTagBoolean) GetActualTagNumber() uint8 {
 	return 0x1
 }
 
-func (m *BACnetApplicationTagBoolean) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagBoolean) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,15 +72,14 @@ func (m *BACnetApplicationTagBoolean) GetPayload() *BACnetTagPayloadBoolean {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagBoolean) GetActualValue() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ActualValue
+	return m.GetPayload().GetValue()
 }
 
-func NewBACnetApplicationTagBoolean(payload *BACnetTagPayloadBoolean, actualValue bool, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagBoolean factory function for BACnetApplicationTagBoolean
+func NewBACnetApplicationTagBoolean(payload *BACnetTagPayloadBoolean, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagBoolean{
 		Payload:              payload,
-		ActualValue:          actualValue,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -112,23 +108,23 @@ func (m *BACnetApplicationTagBoolean) GetTypeName() string {
 	return "BACnetApplicationTagBoolean"
 }
 
-func (m *BACnetApplicationTagBoolean) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagBoolean) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagBoolean) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagBoolean) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagBoolean) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagBoolean) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagBooleanParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -140,7 +136,7 @@ func BACnetApplicationTagBooleanParse(readBuffer utils.ReadBuffer, header *BACne
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadBooleanParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadBooleanParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
@@ -150,8 +146,9 @@ func BACnetApplicationTagBooleanParse(readBuffer utils.ReadBuffer, header *BACne
 	}
 
 	// Virtual field
-	_actualValue := payload.Value
+	_actualValue := payload.GetValue()
 	actualValue := bool(_actualValue)
+	_ = actualValue
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagBoolean"); closeErr != nil {
 		return nil, closeErr
@@ -160,7 +157,6 @@ func BACnetApplicationTagBooleanParse(readBuffer utils.ReadBuffer, header *BACne
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagBoolean{
 		Payload:              CastBACnetTagPayloadBoolean(payload),
-		ActualValue:          actualValue,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -185,7 +181,7 @@ func (m *BACnetApplicationTagBoolean) Serialize(writeBuffer utils.WriteBuffer) e
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.ActualValue); _actualValueErr != nil {
+		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.GetActualValue()); _actualValueErr != nil {
 			return errors.Wrap(_actualValueErr, "Error serializing 'actualValue' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go
index 60b4797..00df111 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go
@@ -30,7 +30,6 @@ import (
 type BACnetApplicationTagCharacterString struct {
 	*BACnetApplicationTag
 	Payload *BACnetTagPayloadCharacterString
-	Value   string
 }
 
 // The corresponding interface
@@ -39,10 +38,10 @@ type IBACnetApplicationTagCharacterString interface {
 	GetPayload() *BACnetTagPayloadCharacterString
 	// GetValue returns Value
 	GetValue() string
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,10 +57,8 @@ func (m *BACnetApplicationTagCharacterString) GetActualTagNumber() uint8 {
 	return 0x7
 }
 
-func (m *BACnetApplicationTagCharacterString) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagCharacterString) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,15 +72,14 @@ func (m *BACnetApplicationTagCharacterString) GetPayload() *BACnetTagPayloadChar
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagCharacterString) GetValue() string {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.Value
+	return m.GetPayload().GetValue()
 }
 
-func NewBACnetApplicationTagCharacterString(payload *BACnetTagPayloadCharacterString, value string, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagCharacterString factory function for BACnetApplicationTagCharacterString
+func NewBACnetApplicationTagCharacterString(payload *BACnetTagPayloadCharacterString, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagCharacterString{
 		Payload:              payload,
-		Value:                value,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -112,23 +108,23 @@ func (m *BACnetApplicationTagCharacterString) GetTypeName() string {
 	return "BACnetApplicationTagCharacterString"
 }
 
-func (m *BACnetApplicationTagCharacterString) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagCharacterString) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagCharacterString) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagCharacterString) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagCharacterString) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagCharacterString) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagCharacterStringParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -140,7 +136,7 @@ func BACnetApplicationTagCharacterStringParse(readBuffer utils.ReadBuffer, heade
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadCharacterStringParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadCharacterStringParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
@@ -150,8 +146,9 @@ func BACnetApplicationTagCharacterStringParse(readBuffer utils.ReadBuffer, heade
 	}
 
 	// Virtual field
-	_value := payload.Value
+	_value := payload.GetValue()
 	value := string(_value)
+	_ = value
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagCharacterString"); closeErr != nil {
 		return nil, closeErr
@@ -160,7 +157,6 @@ func BACnetApplicationTagCharacterStringParse(readBuffer utils.ReadBuffer, heade
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagCharacterString{
 		Payload:              CastBACnetTagPayloadCharacterString(payload),
-		Value:                value,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -185,7 +181,7 @@ func (m *BACnetApplicationTagCharacterString) Serialize(writeBuffer utils.WriteB
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _valueErr := writeBuffer.WriteVirtual("value", m.Value); _valueErr != nil {
+		if _valueErr := writeBuffer.WriteVirtual("value", m.GetValue()); _valueErr != nil {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go
index c06a649..b431e4e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go
@@ -36,10 +36,10 @@ type BACnetApplicationTagDate struct {
 type IBACnetApplicationTagDate interface {
 	// GetPayload returns Payload
 	GetPayload() *BACnetTagPayloadDate
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -55,10 +55,8 @@ func (m *BACnetApplicationTagDate) GetActualTagNumber() uint8 {
 	return 0xA
 }
 
-func (m *BACnetApplicationTagDate) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagDate) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -72,10 +70,11 @@ func (m *BACnetApplicationTagDate) GetPayload() *BACnetTagPayloadDate {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetApplicationTagDate(payload *BACnetTagPayloadDate, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagDate factory function for BACnetApplicationTagDate
+func NewBACnetApplicationTagDate(payload *BACnetTagPayloadDate, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagDate{
 		Payload:              payload,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -104,21 +103,21 @@ func (m *BACnetApplicationTagDate) GetTypeName() string {
 	return "BACnetApplicationTagDate"
 }
 
-func (m *BACnetApplicationTagDate) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagDate) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagDate) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagDate) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagDate) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagDate) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagDateParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go
index caac296..302f4dd 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go
@@ -29,8 +29,7 @@ import (
 // The data-structure of this message
 type BACnetApplicationTagDouble struct {
 	*BACnetApplicationTag
-	Payload     *BACnetTagPayloadDouble
-	ActualValue float64
+	Payload *BACnetTagPayloadDouble
 }
 
 // The corresponding interface
@@ -39,10 +38,10 @@ type IBACnetApplicationTagDouble interface {
 	GetPayload() *BACnetTagPayloadDouble
 	// GetActualValue returns ActualValue
 	GetActualValue() float64
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,10 +57,8 @@ func (m *BACnetApplicationTagDouble) GetActualTagNumber() uint8 {
 	return 0x5
 }
 
-func (m *BACnetApplicationTagDouble) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagDouble) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,15 +72,14 @@ func (m *BACnetApplicationTagDouble) GetPayload() *BACnetTagPayloadDouble {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagDouble) GetActualValue() float64 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ActualValue
+	return m.GetPayload().GetValue()
 }
 
-func NewBACnetApplicationTagDouble(payload *BACnetTagPayloadDouble, actualValue float64, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagDouble factory function for BACnetApplicationTagDouble
+func NewBACnetApplicationTagDouble(payload *BACnetTagPayloadDouble, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagDouble{
 		Payload:              payload,
-		ActualValue:          actualValue,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -112,23 +108,23 @@ func (m *BACnetApplicationTagDouble) GetTypeName() string {
 	return "BACnetApplicationTagDouble"
 }
 
-func (m *BACnetApplicationTagDouble) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagDouble) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagDouble) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagDouble) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagDouble) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagDouble) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagDoubleParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
@@ -150,8 +146,9 @@ func BACnetApplicationTagDoubleParse(readBuffer utils.ReadBuffer) (*BACnetApplic
 	}
 
 	// Virtual field
-	_actualValue := payload.Value
+	_actualValue := payload.GetValue()
 	actualValue := float64(_actualValue)
+	_ = actualValue
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagDouble"); closeErr != nil {
 		return nil, closeErr
@@ -160,7 +157,6 @@ func BACnetApplicationTagDoubleParse(readBuffer utils.ReadBuffer) (*BACnetApplic
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagDouble{
 		Payload:              CastBACnetTagPayloadDouble(payload),
-		ActualValue:          actualValue,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -185,7 +181,7 @@ func (m *BACnetApplicationTagDouble) Serialize(writeBuffer utils.WriteBuffer) er
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.ActualValue); _actualValueErr != nil {
+		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.GetActualValue()); _actualValueErr != nil {
 			return errors.Wrap(_actualValueErr, "Error serializing 'actualValue' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
index 5e7fd2b..1ab260f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
@@ -29,8 +29,7 @@ import (
 // The data-structure of this message
 type BACnetApplicationTagEnumerated struct {
 	*BACnetApplicationTag
-	Payload     *BACnetTagPayloadEnumerated
-	ActualValue uint32
+	Payload *BACnetTagPayloadEnumerated
 }
 
 // The corresponding interface
@@ -39,10 +38,10 @@ type IBACnetApplicationTagEnumerated interface {
 	GetPayload() *BACnetTagPayloadEnumerated
 	// GetActualValue returns ActualValue
 	GetActualValue() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,10 +57,8 @@ func (m *BACnetApplicationTagEnumerated) GetActualTagNumber() uint8 {
 	return 0x9
 }
 
-func (m *BACnetApplicationTagEnumerated) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagEnumerated) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,15 +72,14 @@ func (m *BACnetApplicationTagEnumerated) GetPayload() *BACnetTagPayloadEnumerate
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagEnumerated) GetActualValue() uint32 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ActualValue
+	return m.GetPayload().GetActualValue()
 }
 
-func NewBACnetApplicationTagEnumerated(payload *BACnetTagPayloadEnumerated, actualValue uint32, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagEnumerated factory function for BACnetApplicationTagEnumerated
+func NewBACnetApplicationTagEnumerated(payload *BACnetTagPayloadEnumerated, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagEnumerated{
 		Payload:              payload,
-		ActualValue:          actualValue,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -112,23 +108,23 @@ func (m *BACnetApplicationTagEnumerated) GetTypeName() string {
 	return "BACnetApplicationTagEnumerated"
 }
 
-func (m *BACnetApplicationTagEnumerated) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagEnumerated) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagEnumerated) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagEnumerated) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagEnumerated) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagEnumerated) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagEnumeratedParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -140,7 +136,7 @@ func BACnetApplicationTagEnumeratedParse(readBuffer utils.ReadBuffer, header *BA
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadEnumeratedParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadEnumeratedParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
@@ -150,8 +146,9 @@ func BACnetApplicationTagEnumeratedParse(readBuffer utils.ReadBuffer, header *BA
 	}
 
 	// Virtual field
-	_actualValue := payload.ActualValue
+	_actualValue := payload.GetActualValue()
 	actualValue := uint32(_actualValue)
+	_ = actualValue
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagEnumerated"); closeErr != nil {
 		return nil, closeErr
@@ -160,7 +157,6 @@ func BACnetApplicationTagEnumeratedParse(readBuffer utils.ReadBuffer, header *BA
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagEnumerated{
 		Payload:              CastBACnetTagPayloadEnumerated(payload),
-		ActualValue:          actualValue,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -185,7 +181,7 @@ func (m *BACnetApplicationTagEnumerated) Serialize(writeBuffer utils.WriteBuffer
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.ActualValue); _actualValueErr != nil {
+		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.GetActualValue()); _actualValueErr != nil {
 			return errors.Wrap(_actualValueErr, "Error serializing 'actualValue' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go
index 19452e1..940f570 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go
@@ -32,10 +32,10 @@ type BACnetApplicationTagNull struct {
 
 // The corresponding interface
 type IBACnetApplicationTagNull interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -51,10 +51,8 @@ func (m *BACnetApplicationTagNull) GetActualTagNumber() uint8 {
 	return 0x0
 }
 
-func (m *BACnetApplicationTagNull) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagNull) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -65,9 +63,10 @@ func (m *BACnetApplicationTagNull) InitializeParent(parent *BACnetApplicationTag
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetApplicationTagNull(header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagNull factory function for BACnetApplicationTagNull
+func NewBACnetApplicationTagNull(header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagNull{
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -96,18 +95,18 @@ func (m *BACnetApplicationTagNull) GetTypeName() string {
 	return "BACnetApplicationTagNull"
 }
 
-func (m *BACnetApplicationTagNull) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagNull) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagNull) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagNull) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagNull) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagNull) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagNullParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go
index ccdf717..0ecbace 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go
@@ -29,9 +29,7 @@ import (
 // The data-structure of this message
 type BACnetApplicationTagObjectIdentifier struct {
 	*BACnetApplicationTag
-	Payload        *BACnetTagPayloadObjectIdentifier
-	ObjectType     BACnetObjectType
-	InstanceNumber uint32
+	Payload *BACnetTagPayloadObjectIdentifier
 }
 
 // The corresponding interface
@@ -42,10 +40,10 @@ type IBACnetApplicationTagObjectIdentifier interface {
 	GetObjectType() BACnetObjectType
 	// GetInstanceNumber returns InstanceNumber
 	GetInstanceNumber() uint32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,10 +59,8 @@ func (m *BACnetApplicationTagObjectIdentifier) GetActualTagNumber() uint8 {
 	return 0xC
 }
 
-func (m *BACnetApplicationTagObjectIdentifier) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagObjectIdentifier) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -78,21 +74,18 @@ func (m *BACnetApplicationTagObjectIdentifier) GetPayload() *BACnetTagPayloadObj
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagObjectIdentifier) GetObjectType() BACnetObjectType {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ObjectType
+	return m.GetPayload().GetObjectType()
 }
 
 func (m *BACnetApplicationTagObjectIdentifier) GetInstanceNumber() uint32 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.InstanceNumber
+	return m.GetPayload().GetInstanceNumber()
 }
 
-func NewBACnetApplicationTagObjectIdentifier(payload *BACnetTagPayloadObjectIdentifier, objectType BACnetObjectType, instanceNumber uint32, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagObjectIdentifier factory function for BACnetApplicationTagObjectIdentifier
+func NewBACnetApplicationTagObjectIdentifier(payload *BACnetTagPayloadObjectIdentifier, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagObjectIdentifier{
 		Payload:              payload,
-		ObjectType:           objectType,
-		InstanceNumber:       instanceNumber,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -121,15 +114,15 @@ func (m *BACnetApplicationTagObjectIdentifier) GetTypeName() string {
 	return "BACnetApplicationTagObjectIdentifier"
 }
 
-func (m *BACnetApplicationTagObjectIdentifier) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagObjectIdentifier) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagObjectIdentifier) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagObjectIdentifier) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
@@ -138,8 +131,8 @@ func (m *BACnetApplicationTagObjectIdentifier) LengthInBitsConditional(lastItem
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagObjectIdentifier) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagObjectIdentifier) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagObjectIdentifierParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
@@ -161,12 +154,14 @@ func BACnetApplicationTagObjectIdentifierParse(readBuffer utils.ReadBuffer) (*BA
 	}
 
 	// Virtual field
-	_objectType := payload.ObjectType
+	_objectType := payload.GetObjectType()
 	objectType := BACnetObjectType(_objectType)
+	_ = objectType
 
 	// Virtual field
-	_instanceNumber := payload.InstanceNumber
+	_instanceNumber := payload.GetInstanceNumber()
 	instanceNumber := uint32(_instanceNumber)
+	_ = instanceNumber
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagObjectIdentifier"); closeErr != nil {
 		return nil, closeErr
@@ -175,8 +170,6 @@ func BACnetApplicationTagObjectIdentifierParse(readBuffer utils.ReadBuffer) (*BA
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagObjectIdentifier{
 		Payload:              CastBACnetTagPayloadObjectIdentifier(payload),
-		ObjectType:           objectType,
-		InstanceNumber:       instanceNumber,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -201,11 +194,11 @@ func (m *BACnetApplicationTagObjectIdentifier) Serialize(writeBuffer utils.Write
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _objectTypeErr := writeBuffer.WriteVirtual("objectType", m.ObjectType); _objectTypeErr != nil {
+		if _objectTypeErr := writeBuffer.WriteVirtual("objectType", m.GetObjectType()); _objectTypeErr != nil {
 			return errors.Wrap(_objectTypeErr, "Error serializing 'objectType' field")
 		}
 		// Virtual field
-		if _instanceNumberErr := writeBuffer.WriteVirtual("instanceNumber", m.InstanceNumber); _instanceNumberErr != nil {
+		if _instanceNumberErr := writeBuffer.WriteVirtual("instanceNumber", m.GetInstanceNumber()); _instanceNumberErr != nil {
 			return errors.Wrap(_instanceNumberErr, "Error serializing 'instanceNumber' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go
index 6daa7ef..07819be 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go
@@ -30,7 +30,6 @@ import (
 type BACnetApplicationTagOctetString struct {
 	*BACnetApplicationTag
 	Payload *BACnetTagPayloadOctetString
-	Value   string
 }
 
 // The corresponding interface
@@ -39,10 +38,10 @@ type IBACnetApplicationTagOctetString interface {
 	GetPayload() *BACnetTagPayloadOctetString
 	// GetValue returns Value
 	GetValue() string
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,10 +57,8 @@ func (m *BACnetApplicationTagOctetString) GetActualTagNumber() uint8 {
 	return 0x6
 }
 
-func (m *BACnetApplicationTagOctetString) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagOctetString) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,15 +72,14 @@ func (m *BACnetApplicationTagOctetString) GetPayload() *BACnetTagPayloadOctetStr
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagOctetString) GetValue() string {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.Value
+	return m.GetPayload().GetValue()
 }
 
-func NewBACnetApplicationTagOctetString(payload *BACnetTagPayloadOctetString, value string, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagOctetString factory function for BACnetApplicationTagOctetString
+func NewBACnetApplicationTagOctetString(payload *BACnetTagPayloadOctetString, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagOctetString{
 		Payload:              payload,
-		Value:                value,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -112,23 +108,23 @@ func (m *BACnetApplicationTagOctetString) GetTypeName() string {
 	return "BACnetApplicationTagOctetString"
 }
 
-func (m *BACnetApplicationTagOctetString) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagOctetString) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagOctetString) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagOctetString) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagOctetString) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagOctetString) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagOctetStringParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -140,7 +136,7 @@ func BACnetApplicationTagOctetStringParse(readBuffer utils.ReadBuffer, header *B
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadOctetStringParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadOctetStringParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
@@ -150,8 +146,9 @@ func BACnetApplicationTagOctetStringParse(readBuffer utils.ReadBuffer, header *B
 	}
 
 	// Virtual field
-	_value := payload.Value
+	_value := payload.GetValue()
 	value := string(_value)
+	_ = value
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagOctetString"); closeErr != nil {
 		return nil, closeErr
@@ -160,7 +157,6 @@ func BACnetApplicationTagOctetStringParse(readBuffer utils.ReadBuffer, header *B
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagOctetString{
 		Payload:              CastBACnetTagPayloadOctetString(payload),
-		Value:                value,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -185,7 +181,7 @@ func (m *BACnetApplicationTagOctetString) Serialize(writeBuffer utils.WriteBuffe
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _valueErr := writeBuffer.WriteVirtual("value", m.Value); _valueErr != nil {
+		if _valueErr := writeBuffer.WriteVirtual("value", m.GetValue()); _valueErr != nil {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go
index bfd17ca..ff2a486 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go
@@ -29,8 +29,7 @@ import (
 // The data-structure of this message
 type BACnetApplicationTagReal struct {
 	*BACnetApplicationTag
-	Payload     *BACnetTagPayloadReal
-	ActualValue float32
+	Payload *BACnetTagPayloadReal
 }
 
 // The corresponding interface
@@ -39,10 +38,10 @@ type IBACnetApplicationTagReal interface {
 	GetPayload() *BACnetTagPayloadReal
 	// GetActualValue returns ActualValue
 	GetActualValue() float32
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,10 +57,8 @@ func (m *BACnetApplicationTagReal) GetActualTagNumber() uint8 {
 	return 0x4
 }
 
-func (m *BACnetApplicationTagReal) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagReal) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -75,15 +72,14 @@ func (m *BACnetApplicationTagReal) GetPayload() *BACnetTagPayloadReal {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetApplicationTagReal) GetActualValue() float32 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.ActualValue
+	return m.GetPayload().GetValue()
 }
 
-func NewBACnetApplicationTagReal(payload *BACnetTagPayloadReal, actualValue float32, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagReal factory function for BACnetApplicationTagReal
+func NewBACnetApplicationTagReal(payload *BACnetTagPayloadReal, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagReal{
 		Payload:              payload,
-		ActualValue:          actualValue,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -112,23 +108,23 @@ func (m *BACnetApplicationTagReal) GetTypeName() string {
 	return "BACnetApplicationTagReal"
 }
 
-func (m *BACnetApplicationTagReal) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagReal) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagReal) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagReal) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagReal) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagReal) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagRealParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
@@ -150,8 +146,9 @@ func BACnetApplicationTagRealParse(readBuffer utils.ReadBuffer) (*BACnetApplicat
 	}
 
 	// Virtual field
-	_actualValue := payload.Value
+	_actualValue := payload.GetValue()
 	actualValue := float32(_actualValue)
+	_ = actualValue
 
 	if closeErr := readBuffer.CloseContext("BACnetApplicationTagReal"); closeErr != nil {
 		return nil, closeErr
@@ -160,7 +157,6 @@ func BACnetApplicationTagRealParse(readBuffer utils.ReadBuffer) (*BACnetApplicat
 	// Create a partially initialized instance
 	_child := &BACnetApplicationTagReal{
 		Payload:              CastBACnetTagPayloadReal(payload),
-		ActualValue:          actualValue,
 		BACnetApplicationTag: &BACnetApplicationTag{},
 	}
 	_child.BACnetApplicationTag.Child = _child
@@ -185,7 +181,7 @@ func (m *BACnetApplicationTagReal) Serialize(writeBuffer utils.WriteBuffer) erro
 			return errors.Wrap(_payloadErr, "Error serializing 'payload' field")
 		}
 		// Virtual field
-		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.ActualValue); _actualValueErr != nil {
+		if _actualValueErr := writeBuffer.WriteVirtual("actualValue", m.GetActualValue()); _actualValueErr != nil {
 			return errors.Wrap(_actualValueErr, "Error serializing 'actualValue' field")
 		}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go
index 25357bc..6c7a1a4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go
@@ -36,10 +36,10 @@ type BACnetApplicationTagSignedInteger struct {
 type IBACnetApplicationTagSignedInteger interface {
 	// GetPayload returns Payload
 	GetPayload() *BACnetTagPayloadSignedInteger
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -55,10 +55,8 @@ func (m *BACnetApplicationTagSignedInteger) GetActualTagNumber() uint8 {
 	return 0x3
 }
 
-func (m *BACnetApplicationTagSignedInteger) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagSignedInteger) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -72,10 +70,11 @@ func (m *BACnetApplicationTagSignedInteger) GetPayload() *BACnetTagPayloadSigned
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetApplicationTagSignedInteger(payload *BACnetTagPayloadSignedInteger, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagSignedInteger factory function for BACnetApplicationTagSignedInteger
+func NewBACnetApplicationTagSignedInteger(payload *BACnetTagPayloadSignedInteger, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagSignedInteger{
 		Payload:              payload,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -104,21 +103,21 @@ func (m *BACnetApplicationTagSignedInteger) GetTypeName() string {
 	return "BACnetApplicationTagSignedInteger"
 }
 
-func (m *BACnetApplicationTagSignedInteger) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagSignedInteger) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagSignedInteger) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagSignedInteger) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagSignedInteger) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagSignedInteger) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagSignedIntegerParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -130,7 +129,7 @@ func BACnetApplicationTagSignedIntegerParse(readBuffer utils.ReadBuffer, header
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadSignedIntegerParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadSignedIntegerParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go
index e4a0ebe..0d67c95 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go
@@ -36,10 +36,10 @@ type BACnetApplicationTagTime struct {
 type IBACnetApplicationTagTime interface {
 	// GetPayload returns Payload
 	GetPayload() *BACnetTagPayloadTime
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -55,10 +55,8 @@ func (m *BACnetApplicationTagTime) GetActualTagNumber() uint8 {
 	return 0xB
 }
 
-func (m *BACnetApplicationTagTime) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagTime) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -72,10 +70,11 @@ func (m *BACnetApplicationTagTime) GetPayload() *BACnetTagPayloadTime {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetApplicationTagTime(payload *BACnetTagPayloadTime, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagTime factory function for BACnetApplicationTagTime
+func NewBACnetApplicationTagTime(payload *BACnetTagPayloadTime, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagTime{
 		Payload:              payload,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -104,21 +103,21 @@ func (m *BACnetApplicationTagTime) GetTypeName() string {
 	return "BACnetApplicationTagTime"
 }
 
-func (m *BACnetApplicationTagTime) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagTime) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagTime) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagTime) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagTime) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagTime) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagTimeParse(readBuffer utils.ReadBuffer) (*BACnetApplicationTag, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go
index 36078de..ca857ec 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go
@@ -36,10 +36,10 @@ type BACnetApplicationTagUnsignedInteger struct {
 type IBACnetApplicationTagUnsignedInteger interface {
 	// GetPayload returns Payload
 	GetPayload() *BACnetTagPayloadUnsignedInteger
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -55,10 +55,8 @@ func (m *BACnetApplicationTagUnsignedInteger) GetActualTagNumber() uint8 {
 	return 0x2
 }
 
-func (m *BACnetApplicationTagUnsignedInteger) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetApplicationTagUnsignedInteger) InitializeParent(parent *BACnetApplicationTag, header *BACnetTagHeader) {
 	m.BACnetApplicationTag.Header = header
-	m.BACnetApplicationTag.ActualTagNumber = actualTagNumber
-	m.BACnetApplicationTag.ActualLength = actualLength
 }
 
 ///////////////////////////////////////////////////////////
@@ -72,10 +70,11 @@ func (m *BACnetApplicationTagUnsignedInteger) GetPayload() *BACnetTagPayloadUnsi
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetApplicationTagUnsignedInteger(payload *BACnetTagPayloadUnsignedInteger, header *BACnetTagHeader, actualTagNumber uint8, actualLength uint32) *BACnetApplicationTag {
+// NewBACnetApplicationTagUnsignedInteger factory function for BACnetApplicationTagUnsignedInteger
+func NewBACnetApplicationTagUnsignedInteger(payload *BACnetTagPayloadUnsignedInteger, header *BACnetTagHeader) *BACnetApplicationTag {
 	child := &BACnetApplicationTagUnsignedInteger{
 		Payload:              payload,
-		BACnetApplicationTag: NewBACnetApplicationTag(header, actualTagNumber, actualLength),
+		BACnetApplicationTag: NewBACnetApplicationTag(header),
 	}
 	child.Child = child
 	return child.BACnetApplicationTag
@@ -104,21 +103,21 @@ func (m *BACnetApplicationTagUnsignedInteger) GetTypeName() string {
 	return "BACnetApplicationTagUnsignedInteger"
 }
 
-func (m *BACnetApplicationTagUnsignedInteger) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetApplicationTagUnsignedInteger) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetApplicationTagUnsignedInteger) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetApplicationTagUnsignedInteger) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (payload)
-	lengthInBits += m.Payload.LengthInBits()
+	lengthInBits += m.Payload.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetApplicationTagUnsignedInteger) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetApplicationTagUnsignedInteger) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetApplicationTagUnsignedIntegerParse(readBuffer utils.ReadBuffer, header *BACnetTagHeader) (*BACnetApplicationTag, error) {
@@ -130,7 +129,7 @@ func BACnetApplicationTagUnsignedIntegerParse(readBuffer utils.ReadBuffer, heade
 	if pullErr := readBuffer.PullContext("payload"); pullErr != nil {
 		return nil, pullErr
 	}
-	_payload, _payloadErr := BACnetTagPayloadUnsignedIntegerParse(readBuffer, uint32(header.ActualLength))
+	_payload, _payloadErr := BACnetTagPayloadUnsignedIntegerParse(readBuffer, uint32(header.GetActualLength()))
 	if _payloadErr != nil {
 		return nil, errors.Wrap(_payloadErr, "Error parsing 'payload' field")
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetBinaryPV.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetBinaryPV.go
index fae3eb0..4807760 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetBinaryPV.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetBinaryPV.go
@@ -29,9 +29,10 @@ import (
 
 // The data-structure of this message
 type BACnetBinaryPV struct {
-	RawData    *BACnetContextTagEnumerated
-	IsInactive bool
-	IsActive   bool
+	RawData *BACnetContextTagEnumerated
+
+	// Arguments.
+	TagNumber uint8
 }
 
 // The corresponding interface
@@ -42,10 +43,10 @@ type IBACnetBinaryPV interface {
 	GetIsInactive() bool
 	// GetIsActive returns IsActive
 	GetIsActive() bool
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,17 +62,20 @@ func (m *BACnetBinaryPV) GetRawData() *BACnetContextTagEnumerated {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetBinaryPV) GetIsInactive() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsInactive
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (0)))
 }
 
 func (m *BACnetBinaryPV) GetIsActive() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsActive
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (1)))
 }
 
-func NewBACnetBinaryPV(rawData *BACnetContextTagEnumerated, isInactive bool, isActive bool) *BACnetBinaryPV {
-	return &BACnetBinaryPV{RawData: rawData, IsInactive: isInactive, IsActive: isActive}
+// NewBACnetBinaryPV factory function for BACnetBinaryPV
+func NewBACnetBinaryPV(rawData *BACnetContextTagEnumerated, tagNumber uint8) *BACnetBinaryPV {
+	return &BACnetBinaryPV{RawData: rawData, TagNumber: tagNumber}
 }
 
 func CastBACnetBinaryPV(structType interface{}) *BACnetBinaryPV {
@@ -91,16 +95,16 @@ func (m *BACnetBinaryPV) GetTypeName() string {
 	return "BACnetBinaryPV"
 }
 
-func (m *BACnetBinaryPV) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetBinaryPV) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetBinaryPV) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetBinaryPV) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Optional Field (rawData)
 	if m.RawData != nil {
-		lengthInBits += (*m.RawData).LengthInBits()
+		lengthInBits += (*m.RawData).GetLengthInBits()
 	}
 
 	// A virtual field doesn't have any in- or output.
@@ -110,8 +114,8 @@ func (m *BACnetBinaryPV) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetBinaryPV) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetBinaryPV) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetBinaryPVParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetBinaryPV, error) {
@@ -141,19 +145,21 @@ func BACnetBinaryPVParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetB
 	}
 
 	// Virtual field
-	_isInactive := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (0)))
+	_isInactive := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (0)))
 	isInactive := bool(_isInactive)
+	_ = isInactive
 
 	// Virtual field
-	_isActive := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (1)))
+	_isActive := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (1)))
 	isActive := bool(_isActive)
+	_ = isActive
 
 	if closeErr := readBuffer.CloseContext("BACnetBinaryPV"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create the instance
-	return NewBACnetBinaryPV(rawData, isInactive, isActive), nil
+	return NewBACnetBinaryPV(rawData, tagNumber), nil
 }
 
 func (m *BACnetBinaryPV) Serialize(writeBuffer utils.WriteBuffer) error {
@@ -177,11 +183,11 @@ func (m *BACnetBinaryPV) Serialize(writeBuffer utils.WriteBuffer) error {
 		}
 	}
 	// Virtual field
-	if _isInactiveErr := writeBuffer.WriteVirtual("isInactive", m.IsInactive); _isInactiveErr != nil {
+	if _isInactiveErr := writeBuffer.WriteVirtual("isInactive", m.GetIsInactive()); _isInactiveErr != nil {
 		return errors.Wrap(_isInactiveErr, "Error serializing 'isInactive' field")
 	}
 	// Virtual field
-	if _isActiveErr := writeBuffer.WriteVirtual("isActive", m.IsActive); _isActiveErr != nil {
+	if _isActiveErr := writeBuffer.WriteVirtual("isActive", m.GetIsActive()); _isActiveErr != nil {
 		return errors.Wrap(_isActiveErr, "Error serializing 'isActive' field")
 	}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetCharacterEncoding.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetCharacterEncoding.go
index ca42257..287fc1b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetCharacterEncoding.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetCharacterEncoding.go
@@ -110,12 +110,12 @@ func CastBACnetCharacterEncoding(structType interface{}) BACnetCharacterEncoding
 	return castFunc(structType)
 }
 
-func (m BACnetCharacterEncoding) LengthInBits() uint16 {
+func (m BACnetCharacterEncoding) GetLengthInBits() uint16 {
 	return 8
 }
 
-func (m BACnetCharacterEncoding) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m BACnetCharacterEncoding) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetCharacterEncodingParse(readBuffer utils.ReadBuffer) (BACnetCharacterEncoding, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetClosingTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetClosingTag.go
index c37bb43..85802fc 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetClosingTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetClosingTag.go
@@ -28,14 +28,18 @@ import (
 // The data-structure of this message
 type BACnetClosingTag struct {
 	*BACnetContextTag
+
+	// Arguments.
+	TagNumberArgument uint8
+	ActualLength      uint32
 }
 
 // The corresponding interface
 type IBACnetClosingTag interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -51,11 +55,8 @@ func (m *BACnetClosingTag) GetDataType() BACnetDataType {
 	return BACnetDataType_CLOSING_TAG
 }
 
-func (m *BACnetClosingTag) InitializeParent(parent *BACnetContextTag, header *BACnetTagHeader, tagNumber uint8, actualLength uint32, isNotOpeningOrClosingTag bool) {
+func (m *BACnetClosingTag) InitializeParent(parent *BACnetContextTag, header *BACnetTagHeader) {
 	m.BACnetContextTag.Header = header
-	m.BACnetContextTag.TagNumber = tagNumber
-	m.BACnetContextTag.ActualLength = actualLength
-	m.BACnetContextTag.IsNotOpeningOrClosingTag = isNotOpeningOrClosingTag
 }
 
 ///////////////////////////////////////////////////////////
@@ -66,9 +67,10 @@ func (m *BACnetClosingTag) InitializeParent(parent *BACnetContextTag, header *BA
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetClosingTag(header *BACnetTagHeader, tagNumber uint8, actualLength uint32, isNotOpeningOrClosingTag bool) *BACnetContextTag {
+// NewBACnetClosingTag factory function for BACnetClosingTag
+func NewBACnetClosingTag(header *BACnetTagHeader, tagNumberArgument uint8, actualLength uint32) *BACnetContextTag {
 	child := &BACnetClosingTag{
-		BACnetContextTag: NewBACnetContextTag(header, tagNumber, actualLength, isNotOpeningOrClosingTag),
+		BACnetContextTag: NewBACnetContextTag(header, tagNumberArgument),
 	}
 	child.Child = child
 	return child.BACnetContextTag
@@ -97,18 +99,18 @@ func (m *BACnetClosingTag) GetTypeName() string {
 	return "BACnetClosingTag"
 }
 
-func (m *BACnetClosingTag) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetClosingTag) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetClosingTag) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetClosingTag) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetClosingTag) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetClosingTag) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetClosingTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index 3a34b46..3a0f019 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -35,10 +35,10 @@ type BACnetConfirmedServiceACK struct {
 type IBACnetConfirmedServiceACK interface {
 	// ServiceChoice returns ServiceChoice
 	ServiceChoice() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -63,6 +63,7 @@ type IBACnetConfirmedServiceACKChild interface {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACK factory function for BACnetConfirmedServiceACK
 func NewBACnetConfirmedServiceACK() *BACnetConfirmedServiceACK {
 	return &BACnetConfirmedServiceACK{}
 }
@@ -84,15 +85,15 @@ func (m *BACnetConfirmedServiceACK) GetTypeName() string {
 	return "BACnetConfirmedServiceACK"
 }
 
-func (m *BACnetConfirmedServiceACK) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACK) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACK) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *BACnetConfirmedServiceACK) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *BACnetConfirmedServiceACK) ParentLengthInBits() uint16 {
+func (m *BACnetConfirmedServiceACK) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
@@ -100,8 +101,8 @@ func (m *BACnetConfirmedServiceACK) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACK) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACK) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
index 532495a..1ba0298 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKAtomicReadFile struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicReadFile interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKAtomicReadFile) InitializeParent(parent *BACne
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKAtomicReadFile factory function for BACnetConfirmedServiceACKAtomicReadFile
 func NewBACnetConfirmedServiceACKAtomicReadFile() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKAtomicReadFile{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKAtomicReadFile) GetTypeName() string {
 	return "BACnetConfirmedServiceACKAtomicReadFile"
 }
 
-func (m *BACnetConfirmedServiceACKAtomicReadFile) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKAtomicReadFile) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKAtomicReadFile) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKAtomicReadFile) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKAtomicReadFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKAtomicReadFile) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKAtomicReadFileParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
index 896b170..2595cbb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKAtomicWriteFile struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicWriteFile interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKAtomicWriteFile) InitializeParent(parent *BACn
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKAtomicWriteFile factory function for BACnetConfirmedServiceACKAtomicWriteFile
 func NewBACnetConfirmedServiceACKAtomicWriteFile() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKAtomicWriteFile{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKAtomicWriteFile) GetTypeName() string {
 	return "BACnetConfirmedServiceACKAtomicWriteFile"
 }
 
-func (m *BACnetConfirmedServiceACKAtomicWriteFile) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKAtomicWriteFile) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKAtomicWriteFile) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKAtomicWriteFile) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKAtomicWriteFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKAtomicWriteFile) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKAtomicWriteFileParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
index 014e20a..73ce5d7 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKConfirmedPrivateTransfer struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKConfirmedPrivateTransfer interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) InitializeParent(par
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKConfirmedPrivateTransfer factory function for BACnetConfirmedServiceACKConfirmedPrivateTransfer
 func NewBACnetConfirmedServiceACKConfirmedPrivateTransfer() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKConfirmedPrivateTransfer{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) GetTypeName() string
 	return "BACnetConfirmedServiceACKConfirmedPrivateTransfer"
 }
 
-func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKConfirmedPrivateTransferParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
index 3578b80..e3905d8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKCreateObject struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKCreateObject interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetConfirmedServiceACKCreateObject) InitializeParent(parent *BACnetC
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKCreateObject factory function for BACnetConfirmedServiceACKCreateObject
 func NewBACnetConfirmedServiceACKCreateObject() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKCreateObject{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -92,18 +93,18 @@ func (m *BACnetConfirmedServiceACKCreateObject) GetTypeName() string {
 	return "BACnetConfirmedServiceACKCreateObject"
 }
 
-func (m *BACnetConfirmedServiceACKCreateObject) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKCreateObject) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKCreateObject) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKCreateObject) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKCreateObject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKCreateObject) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKCreateObjectParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
index bde2534..c132c75 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKGetAlarmSummary struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetAlarmSummary interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKGetAlarmSummary) InitializeParent(parent *BACn
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKGetAlarmSummary factory function for BACnetConfirmedServiceACKGetAlarmSummary
 func NewBACnetConfirmedServiceACKGetAlarmSummary() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKGetAlarmSummary{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKGetAlarmSummary) GetTypeName() string {
 	return "BACnetConfirmedServiceACKGetAlarmSummary"
 }
 
-func (m *BACnetConfirmedServiceACKGetAlarmSummary) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKGetAlarmSummary) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKGetAlarmSummary) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKGetAlarmSummary) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKGetAlarmSummary) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKGetAlarmSummary) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKGetAlarmSummaryParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
index 45cc254..c3a9625 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKGetEnrollmentSummary struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEnrollmentSummary interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) InitializeParent(parent
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKGetEnrollmentSummary factory function for BACnetConfirmedServiceACKGetEnrollmentSummary
 func NewBACnetConfirmedServiceACKGetEnrollmentSummary() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKGetEnrollmentSummary{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) GetTypeName() string {
 	return "BACnetConfirmedServiceACKGetEnrollmentSummary"
 }
 
-func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKGetEnrollmentSummaryParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
index 3cba6bc..afa72c4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKGetEventInformation struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEventInformation interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKGetEventInformation) InitializeParent(parent *
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKGetEventInformation factory function for BACnetConfirmedServiceACKGetEventInformation
 func NewBACnetConfirmedServiceACKGetEventInformation() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKGetEventInformation{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKGetEventInformation) GetTypeName() string {
 	return "BACnetConfirmedServiceACKGetEventInformation"
 }
 
-func (m *BACnetConfirmedServiceACKGetEventInformation) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKGetEventInformation) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKGetEventInformation) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKGetEventInformation) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKGetEventInformation) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKGetEventInformation) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKGetEventInformationParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
index 354be50..6bf9081 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKReadProperty struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadProperty interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetConfirmedServiceACKReadProperty) InitializeParent(parent *BACnetC
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKReadProperty factory function for BACnetConfirmedServiceACKReadProperty
 func NewBACnetConfirmedServiceACKReadProperty() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKReadProperty{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -92,18 +93,18 @@ func (m *BACnetConfirmedServiceACKReadProperty) GetTypeName() string {
 	return "BACnetConfirmedServiceACKReadProperty"
 }
 
-func (m *BACnetConfirmedServiceACKReadProperty) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKReadProperty) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKReadProperty) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKReadProperty) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKReadProperty) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKReadProperty) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKReadPropertyParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
index dc94fab..024aa86 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKReadPropertyMultiple struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadPropertyMultiple interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKReadPropertyMultiple) InitializeParent(parent
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKReadPropertyMultiple factory function for BACnetConfirmedServiceACKReadPropertyMultiple
 func NewBACnetConfirmedServiceACKReadPropertyMultiple() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKReadPropertyMultiple{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKReadPropertyMultiple) GetTypeName() string {
 	return "BACnetConfirmedServiceACKReadPropertyMultiple"
 }
 
-func (m *BACnetConfirmedServiceACKReadPropertyMultiple) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKReadPropertyMultiple) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKReadPropertyMultiple) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKReadPropertyMultiple) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKReadPropertyMultiple) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKReadPropertyMultiple) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKReadPropertyMultipleParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
index cb3d433..8edee75 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKReadRange struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadRange interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetConfirmedServiceACKReadRange) InitializeParent(parent *BACnetConf
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKReadRange factory function for BACnetConfirmedServiceACKReadRange
 func NewBACnetConfirmedServiceACKReadRange() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKReadRange{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -92,18 +93,18 @@ func (m *BACnetConfirmedServiceACKReadRange) GetTypeName() string {
 	return "BACnetConfirmedServiceACKReadRange"
 }
 
-func (m *BACnetConfirmedServiceACKReadRange) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKReadRange) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKReadRange) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKReadRange) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKReadRange) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKReadRange) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKReadRangeParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
index 3683d6b..443cbef 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKRemovedAuthenticate struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedAuthenticate interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKRemovedAuthenticate) InitializeParent(parent *
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKRemovedAuthenticate factory function for BACnetConfirmedServiceACKRemovedAuthenticate
 func NewBACnetConfirmedServiceACKRemovedAuthenticate() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKRemovedAuthenticate{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKRemovedAuthenticate) GetTypeName() string {
 	return "BACnetConfirmedServiceACKRemovedAuthenticate"
 }
 
-func (m *BACnetConfirmedServiceACKRemovedAuthenticate) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKRemovedAuthenticate) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKRemovedAuthenticate) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKRemovedAuthenticate) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKRemovedAuthenticate) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKRemovedAuthenticate) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKRemovedAuthenticateParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
index 30d3e44..a68157c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKRemovedReadPropertyConditional struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedReadPropertyConditional interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,6 +62,7 @@ func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) InitializePare
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKRemovedReadPropertyConditional factory function for BACnetConfirmedServiceACKRemovedReadPropertyConditional
 func NewBACnetConfirmedServiceACKRemovedReadPropertyConditional() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKRemovedReadPropertyConditional{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -93,18 +94,18 @@ func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) GetTypeName()
 	return "BACnetConfirmedServiceACKRemovedReadPropertyConditional"
 }
 
-func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
index 0b3e45b..5728c4f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKVTData struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTData interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetConfirmedServiceACKVTData) InitializeParent(parent *BACnetConfirm
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKVTData factory function for BACnetConfirmedServiceACKVTData
 func NewBACnetConfirmedServiceACKVTData() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKVTData{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -92,18 +93,18 @@ func (m *BACnetConfirmedServiceACKVTData) GetTypeName() string {
 	return "BACnetConfirmedServiceACKVTData"
 }
 
-func (m *BACnetConfirmedServiceACKVTData) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKVTData) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKVTData) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKVTData) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKVTData) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKVTData) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKVTDataParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
index 9f07328..53811e6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceACKVTOpen struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTOpen interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetConfirmedServiceACKVTOpen) InitializeParent(parent *BACnetConfirm
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceACKVTOpen factory function for BACnetConfirmedServiceACKVTOpen
 func NewBACnetConfirmedServiceACKVTOpen() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceACKVTOpen{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -92,18 +93,18 @@ func (m *BACnetConfirmedServiceACKVTOpen) GetTypeName() string {
 	return "BACnetConfirmedServiceACKVTOpen"
 }
 
-func (m *BACnetConfirmedServiceACKVTOpen) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceACKVTOpen) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceACKVTOpen) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceACKVTOpen) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceACKVTOpen) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceACKVTOpen) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKVTOpenParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceAddListElement.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceAddListElement.go
index a3513c8..bd5cf2c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceAddListElement.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceAddListElement.go
@@ -32,10 +32,10 @@ type BACnetConfirmedServiceAddListElement struct {
 
 // The corresponding interface
 type IBACnetConfirmedServiceAddListElement interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -61,6 +61,7 @@ func (m *BACnetConfirmedServiceAddListElement) InitializeParent(parent *BACnetCo
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
+// NewBACnetConfirmedServiceAddListElement factory function for BACnetConfirmedServiceAddListElement
 func NewBACnetConfirmedServiceAddListElement() *BACnetConfirmedServiceACK {
 	child := &BACnetConfirmedServiceAddListElement{
 		BACnetConfirmedServiceACK: NewBACnetConfirmedServiceACK(),
@@ -92,18 +93,18 @@ func (m *BACnetConfirmedServiceAddListElement) GetTypeName() string {
 	return "BACnetConfirmedServiceAddListElement"
 }
 
-func (m *BACnetConfirmedServiceAddListElement) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceAddListElement) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceAddListElement) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceAddListElement) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceAddListElement) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceAddListElement) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceAddListElementParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceACK, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index e62ef00..9b1f24b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -28,6 +28,9 @@ import (
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequest struct {
+
+	// Arguments.
+	Len   uint16
 	Child IBACnetConfirmedServiceRequestChild
 }
 
@@ -35,10 +38,10 @@ type BACnetConfirmedServiceRequest struct {
 type IBACnetConfirmedServiceRequest interface {
 	// ServiceChoice returns ServiceChoice
 	ServiceChoice() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -63,8 +66,9 @@ type IBACnetConfirmedServiceRequestChild interface {
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequest() *BACnetConfirmedServiceRequest {
-	return &BACnetConfirmedServiceRequest{}
+// NewBACnetConfirmedServiceRequest factory function for BACnetConfirmedServiceRequest
+func NewBACnetConfirmedServiceRequest(len uint16) *BACnetConfirmedServiceRequest {
+	return &BACnetConfirmedServiceRequest{Len: len}
 }
 
 func CastBACnetConfirmedServiceRequest(structType interface{}) *BACnetConfirmedServiceRequest {
@@ -84,15 +88,15 @@ func (m *BACnetConfirmedServiceRequest) GetTypeName() string {
 	return "BACnetConfirmedServiceRequest"
 }
 
-func (m *BACnetConfirmedServiceRequest) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequest) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequest) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *BACnetConfirmedServiceRequest) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *BACnetConfirmedServiceRequest) ParentLengthInBits() uint16 {
+func (m *BACnetConfirmedServiceRequest) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
@@ -100,8 +104,8 @@ func (m *BACnetConfirmedServiceRequest) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequest) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
index 282f731..2a3afae 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestAcknowledgeAlarm struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAcknowledgeAlarm interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) InitializeParent(parent
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestAcknowledgeAlarm() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestAcknowledgeAlarm factory function for BACnetConfirmedServiceRequestAcknowledgeAlarm
+func NewBACnetConfirmedServiceRequestAcknowledgeAlarm(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestAcknowledgeAlarm{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestAcknowledgeAlarm"
 }
 
-func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAcknowledgeAlarmParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
index 95e4054..e423f9b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestAddListElement struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAddListElement interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestAddListElement) InitializeParent(parent *B
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestAddListElement() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestAddListElement factory function for BACnetConfirmedServiceRequestAddListElement
+func NewBACnetConfirmedServiceRequestAddListElement(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestAddListElement{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestAddListElement) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestAddListElement"
 }
 
-func (m *BACnetConfirmedServiceRequestAddListElement) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAddListElement) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAddListElement) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestAddListElement) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAddListElement) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAddListElement) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAddListElementParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
index 56cd4b1..5de25bb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
@@ -31,6 +31,9 @@ type BACnetConfirmedServiceRequestAtomicReadFile struct {
 	*BACnetConfirmedServiceRequest
 	FileIdentifier *BACnetApplicationTagObjectIdentifier
 	AccessMethod   *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -39,10 +42,10 @@ type IBACnetConfirmedServiceRequestAtomicReadFile interface {
 	GetFileIdentifier() *BACnetApplicationTagObjectIdentifier
 	// GetAccessMethod returns AccessMethod
 	GetAccessMethod() *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -76,11 +79,12 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFile) GetAccessMethod() *BACnetC
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestAtomicReadFile(fileIdentifier *BACnetApplicationTagObjectIdentifier, accessMethod *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestAtomicReadFile factory function for BACnetConfirmedServiceRequestAtomicReadFile
+func NewBACnetConfirmedServiceRequestAtomicReadFile(fileIdentifier *BACnetApplicationTagObjectIdentifier, accessMethod *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestAtomicReadFile{
 		FileIdentifier:                fileIdentifier,
 		AccessMethod:                  accessMethod,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -109,24 +113,24 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFile) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestAtomicReadFile"
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFile) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAtomicReadFile) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFile) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestAtomicReadFile) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (fileIdentifier)
-	lengthInBits += m.FileIdentifier.LengthInBits()
+	lengthInBits += m.FileIdentifier.GetLengthInBits()
 
 	// Simple field (accessMethod)
-	lengthInBits += m.AccessMethod.LengthInBits()
+	lengthInBits += m.AccessMethod.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAtomicReadFile) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicReadFileParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileRecord.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileRecord.go
index 86a42c6..702dbcf 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileRecord.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileRecord.go
@@ -39,10 +39,10 @@ type IBACnetConfirmedServiceRequestAtomicReadFileRecord interface {
 	GetFileStartRecord() *BACnetApplicationTagSignedInteger
 	// GetRequestRecordCount returns RequestRecordCount
 	GetRequestRecordCount() *BACnetApplicationTagUnsignedInteger
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,11 +58,10 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) GetPeekedTagNumber()
 	return 0x1
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) InitializeParent(parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, peekedTagNumber uint8) {
+func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) InitializeParent(parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
 	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.PeekedTagHeader = peekedTagHeader
 	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.OpeningTag = openingTag
 	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.ClosingTag = closingTag
-	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.PeekedTagNumber = peekedTagNumber
 }
 
 ///////////////////////////////////////////////////////////
@@ -80,11 +79,12 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) GetRequestRecordCoun
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestAtomicReadFileRecord(fileStartRecord *BACnetApplicationTagSignedInteger, requestRecordCount *BACnetApplicationTagUnsignedInteger, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, peekedTagNumber uint8) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
+// NewBACnetConfirmedServiceRequestAtomicReadFileRecord factory function for BACnetConfirmedServiceRequestAtomicReadFileRecord
+func NewBACnetConfirmedServiceRequestAtomicReadFileRecord(fileStartRecord *BACnetApplicationTagSignedInteger, requestRecordCount *BACnetApplicationTagUnsignedInteger, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
 	child := &BACnetConfirmedServiceRequestAtomicReadFileRecord{
 		FileStartRecord:    fileStartRecord,
 		RequestRecordCount: requestRecordCount,
-		BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord: NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(peekedTagHeader, openingTag, closingTag, peekedTagNumber),
+		BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord: NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(peekedTagHeader, openingTag, closingTag),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
@@ -113,24 +113,24 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) GetTypeName() string
 	return "BACnetConfirmedServiceRequestAtomicReadFileRecord"
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (fileStartRecord)
-	lengthInBits += m.FileStartRecord.LengthInBits()
+	lengthInBits += m.FileStartRecord.GetLengthInBits()
 
 	// Simple field (requestRecordCount)
-	lengthInBits += m.RequestRecordCount.LengthInBits()
+	lengthInBits += m.RequestRecordCount.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAtomicReadFileRecord) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicReadFileRecordParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStream.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStream.go
index 508eb8e..8235543 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStream.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStream.go
@@ -39,10 +39,10 @@ type IBACnetConfirmedServiceRequestAtomicReadFileStream interface {
 	GetFileStartPosition() *BACnetApplicationTagSignedInteger
 	// GetRequestOctetCount returns RequestOctetCount
 	GetRequestOctetCount() *BACnetApplicationTagUnsignedInteger
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -58,11 +58,10 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) GetPeekedTagNumber()
 	return 0x0
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) InitializeParent(parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, peekedTagNumber uint8) {
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) InitializeParent(parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
 	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.PeekedTagHeader = peekedTagHeader
 	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.OpeningTag = openingTag
 	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.ClosingTag = closingTag
-	m.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.PeekedTagNumber = peekedTagNumber
 }
 
 ///////////////////////////////////////////////////////////
@@ -80,11 +79,12 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) GetRequestOctetCount
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestAtomicReadFileStream(fileStartPosition *BACnetApplicationTagSignedInteger, requestOctetCount *BACnetApplicationTagUnsignedInteger, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, peekedTagNumber uint8) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
+// NewBACnetConfirmedServiceRequestAtomicReadFileStream factory function for BACnetConfirmedServiceRequestAtomicReadFileStream
+func NewBACnetConfirmedServiceRequestAtomicReadFileStream(fileStartPosition *BACnetApplicationTagSignedInteger, requestOctetCount *BACnetApplicationTagUnsignedInteger, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
 	child := &BACnetConfirmedServiceRequestAtomicReadFileStream{
 		FileStartPosition: fileStartPosition,
 		RequestOctetCount: requestOctetCount,
-		BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord: NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(peekedTagHeader, openingTag, closingTag, peekedTagNumber),
+		BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord: NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(peekedTagHeader, openingTag, closingTag),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
@@ -113,24 +113,24 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) GetTypeName() string
 	return "BACnetConfirmedServiceRequestAtomicReadFileStream"
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (fileStartPosition)
-	lengthInBits += m.FileStartPosition.LengthInBits()
+	lengthInBits += m.FileStartPosition.GetLengthInBits()
 
 	// Simple field (requestOctetCount)
-	lengthInBits += m.RequestOctetCount.LengthInBits()
+	lengthInBits += m.RequestOctetCount.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStream) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicReadFileStreamParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
index 109f6e4..a689dd8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
@@ -31,7 +31,6 @@ type BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord struct {
 	PeekedTagHeader *BACnetTagHeader
 	OpeningTag      *BACnetOpeningTag
 	ClosingTag      *BACnetClosingTag
-	PeekedTagNumber uint8
 	Child           IBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordChild
 }
 
@@ -47,10 +46,10 @@ type IBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord interface {
 	GetClosingTag() *BACnetClosingTag
 	// GetPeekedTagNumber returns PeekedTagNumber
 	GetPeekedTagNumber() uint8
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,7 +61,7 @@ type IBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParent interface
 
 type IBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordChild interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
-	InitializeParent(parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, peekedTagNumber uint8)
+	InitializeParent(parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag)
 	GetTypeName() string
 	IBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
 }
@@ -86,12 +85,12 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetClosingTa
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetPeekedTagNumber() uint8 {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.PeekedTagNumber
+	return m.GetPeekedTagHeader().GetActualTagNumber()
 }
 
-func NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, peekedTagNumber uint8) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
-	return &BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord{PeekedTagHeader: peekedTagHeader, OpeningTag: openingTag, ClosingTag: closingTag, PeekedTagNumber: peekedTagNumber}
+// NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord factory function for BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
+func NewBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(peekedTagHeader *BACnetTagHeader, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
+	return &BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord{PeekedTagHeader: peekedTagHeader, OpeningTag: openingTag, ClosingTag: closingTag}
 }
 
 func CastBACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord(structType interface{}) *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord {
@@ -111,30 +110,30 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetTypeName(
 	return "BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord"
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) LengthInBitsConditional(lastItem bool) uint16 {
-	return m.Child.LengthInBits()
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) ParentLengthInBits() uint16 {
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (openingTag)
-	lengthInBits += m.OpeningTag.LengthInBits()
+	lengthInBits += m.OpeningTag.GetLengthInBits()
 
 	// A virtual field doesn't have any in- or output.
 
 	// Simple field (closingTag)
-	lengthInBits += m.ClosingTag.LengthInBits()
+	lengthInBits += m.ClosingTag.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParse(readBuffer utils.ReadBuffer) (*BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord, error) {
@@ -154,7 +153,7 @@ func BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParse(readBuffer u
 	if pullErr := readBuffer.PullContext("openingTag"); pullErr != nil {
 		return nil, pullErr
 	}
-	_openingTag, _openingTagErr := BACnetContextTagParse(readBuffer, uint8(peekedTagHeader.ActualTagNumber), BACnetDataType_OPENING_TAG)
+	_openingTag, _openingTagErr := BACnetContextTagParse(readBuffer, uint8(peekedTagHeader.GetActualTagNumber()), BACnetDataType_OPENING_TAG)
 	if _openingTagErr != nil {
 		return nil, errors.Wrap(_openingTagErr, "Error parsing 'openingTag' field")
 	}
@@ -164,8 +163,9 @@ func BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParse(readBuffer u
 	}
 
 	// Virtual field
-	_peekedTagNumber := peekedTagHeader.ActualTagNumber
+	_peekedTagNumber := peekedTagHeader.GetActualTagNumber()
 	peekedTagNumber := uint8(_peekedTagNumber)
+	_ = peekedTagNumber
 
 	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
 	var _parent *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord
@@ -187,7 +187,7 @@ func BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParse(readBuffer u
 	if pullErr := readBuffer.PullContext("closingTag"); pullErr != nil {
 		return nil, pullErr
 	}
-	_closingTag, _closingTagErr := BACnetContextTagParse(readBuffer, uint8(peekedTagHeader.ActualTagNumber), BACnetDataType_CLOSING_TAG)
+	_closingTag, _closingTagErr := BACnetContextTagParse(readBuffer, uint8(peekedTagHeader.GetActualTagNumber()), BACnetDataType_CLOSING_TAG)
 	if _closingTagErr != nil {
 		return nil, errors.Wrap(_closingTagErr, "Error parsing 'closingTag' field")
 	}
@@ -201,7 +201,7 @@ func BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParse(readBuffer u
 	}
 
 	// Finish initializing
-	_parent.Child.InitializeParent(_parent, peekedTagHeader, openingTag, closingTag, peekedTagNumber)
+	_parent.Child.InitializeParent(_parent, peekedTagHeader, openingTag, closingTag)
 	return _parent, nil
 }
 
@@ -226,7 +226,7 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord) SerializePar
 		return errors.Wrap(_openingTagErr, "Error serializing 'openingTag' field")
 	}
 	// Virtual field
-	if _peekedTagNumberErr := writeBuffer.WriteVirtual("peekedTagNumber", m.PeekedTagNumber); _peekedTagNumberErr != nil {
+	if _peekedTagNumberErr := writeBuffer.WriteVirtual("peekedTagNumber", m.GetPeekedTagNumber()); _peekedTagNumberErr != nil {
 		return errors.Wrap(_peekedTagNumberErr, "Error serializing 'peekedTagNumber' field")
 	}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
index 2dbc93c..f1ac678 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
@@ -35,6 +35,9 @@ type BACnetConfirmedServiceRequestAtomicWriteFile struct {
 	FileStartPosition *BACnetApplicationTagSignedInteger
 	FileData          *BACnetApplicationTagOctetString
 	ClosingTag        *BACnetClosingTag
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -49,10 +52,10 @@ type IBACnetConfirmedServiceRequestAtomicWriteFile interface {
 	GetFileData() *BACnetApplicationTagOctetString
 	// GetClosingTag returns ClosingTag
 	GetClosingTag() *BACnetClosingTag
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -98,14 +101,15 @@ func (m *BACnetConfirmedServiceRequestAtomicWriteFile) GetClosingTag() *BACnetCl
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestAtomicWriteFile(deviceIdentifier *BACnetApplicationTagObjectIdentifier, openingTag *BACnetOpeningTag, fileStartPosition *BACnetApplicationTagSignedInteger, fileData *BACnetApplicationTagOctetString, closingTag *BACnetClosingTag) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestAtomicWriteFile factory function for BACnetConfirmedServiceRequestAtomicWriteFile
+func NewBACnetConfirmedServiceRequestAtomicWriteFile(deviceIdentifier *BACnetApplicationTagObjectIdentifier, openingTag *BACnetOpeningTag, fileStartPosition *BACnetApplicationTagSignedInteger, fileData *BACnetApplicationTagOctetString, closingTag *BACnetClosingTag, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestAtomicWriteFile{
 		DeviceIdentifier:              deviceIdentifier,
 		OpeningTag:                    openingTag,
 		FileStartPosition:             fileStartPosition,
 		FileData:                      fileData,
 		ClosingTag:                    closingTag,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -134,37 +138,37 @@ func (m *BACnetConfirmedServiceRequestAtomicWriteFile) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestAtomicWriteFile"
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicWriteFile) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestAtomicWriteFile) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicWriteFile) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestAtomicWriteFile) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (deviceIdentifier)
-	lengthInBits += m.DeviceIdentifier.LengthInBits()
+	lengthInBits += m.DeviceIdentifier.GetLengthInBits()
 
 	// Optional Field (openingTag)
 	if m.OpeningTag != nil {
-		lengthInBits += (*m.OpeningTag).LengthInBits()
+		lengthInBits += (*m.OpeningTag).GetLengthInBits()
 	}
 
 	// Simple field (fileStartPosition)
-	lengthInBits += m.FileStartPosition.LengthInBits()
+	lengthInBits += m.FileStartPosition.GetLengthInBits()
 
 	// Simple field (fileData)
-	lengthInBits += m.FileData.LengthInBits()
+	lengthInBits += m.FileData.GetLengthInBits()
 
 	// Optional Field (closingTag)
 	if m.ClosingTag != nil {
-		lengthInBits += (*m.ClosingTag).LengthInBits()
+		lengthInBits += (*m.ClosingTag).GetLengthInBits()
 	}
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestAtomicWriteFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestAtomicWriteFile) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicWriteFileParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
index c5f25ff..28249bb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -34,6 +34,9 @@ type BACnetConfirmedServiceRequestConfirmedCOVNotification struct {
 	IssueConfirmed              *BACnetContextTagBoolean
 	LifetimeInSeconds           *BACnetContextTagUnsignedInteger
 	ListOfValues                *BACnetPropertyValues
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -48,10 +51,10 @@ type IBACnetConfirmedServiceRequestConfirmedCOVNotification interface {
 	GetLifetimeInSeconds() *BACnetContextTagUnsignedInteger
 	// GetListOfValues returns ListOfValues
 	GetListOfValues() *BACnetPropertyValues
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -97,14 +100,15 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) GetListOfValues(
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier *BACnetContextTagUnsignedInteger, monitoredObjectIdentifier *BACnetContextTagObjectIdentifier, issueConfirmed *BACnetContextTagBoolean, lifetimeInSeconds *BACnetContextTagUnsignedInteger, listOfValues *BACnetPropertyValues) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestConfirmedCOVNotification factory function for BACnetConfirmedServiceRequestConfirmedCOVNotification
+func NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier *BACnetContextTagUnsignedInteger, monitoredObjectIdentifier *BACnetContextTagObjectIdentifier, issueConfirmed *BACnetContextTagBoolean, lifetimeInSeconds *BACnetContextTagUnsignedInteger, listOfValues *BACnetPropertyValues, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestConfirmedCOVNotification{
 		SubscriberProcessIdentifier:   subscriberProcessIdentifier,
 		MonitoredObjectIdentifier:     monitoredObjectIdentifier,
 		IssueConfirmed:                issueConfirmed,
 		LifetimeInSeconds:             lifetimeInSeconds,
 		ListOfValues:                  listOfValues,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -133,33 +137,33 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) GetTypeName() st
 	return "BACnetConfirmedServiceRequestConfirmedCOVNotification"
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (subscriberProcessIdentifier)
-	lengthInBits += m.SubscriberProcessIdentifier.LengthInBits()
+	lengthInBits += m.SubscriberProcessIdentifier.GetLengthInBits()
 
 	// Simple field (monitoredObjectIdentifier)
-	lengthInBits += m.MonitoredObjectIdentifier.LengthInBits()
+	lengthInBits += m.MonitoredObjectIdentifier.GetLengthInBits()
 
 	// Simple field (issueConfirmed)
-	lengthInBits += m.IssueConfirmed.LengthInBits()
+	lengthInBits += m.IssueConfirmed.GetLengthInBits()
 
 	// Simple field (lifetimeInSeconds)
-	lengthInBits += m.LifetimeInSeconds.LengthInBits()
+	lengthInBits += m.LifetimeInSeconds.GetLengthInBits()
 
 	// Simple field (listOfValues)
-	lengthInBits += m.ListOfValues.LengthInBits()
+	lengthInBits += m.ListOfValues.GetLengthInBits()
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
@@ -223,7 +227,7 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(readBuffer utils
 	if pullErr := readBuffer.PullContext("listOfValues"); pullErr != nil {
 		return nil, pullErr
 	}
-	_listOfValues, _listOfValuesErr := BACnetPropertyValuesParse(readBuffer, uint8(uint8(4)), monitoredObjectIdentifier.ObjectType)
+	_listOfValues, _listOfValuesErr := BACnetPropertyValuesParse(readBuffer, uint8(uint8(4)), monitoredObjectIdentifier.GetObjectType())
 	if _listOfValuesErr != nil {
 		return nil, errors.Wrap(_listOfValuesErr, "Error parsing 'listOfValues' field")
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
index 16cf3f8..7a6266f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Initiali
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple factory function for BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
+func NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) GetTypeN
 	return "BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple"
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
index b308879..4b6653b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
@@ -43,6 +43,9 @@ type BACnetConfirmedServiceRequestConfirmedEventNotification struct {
 	FromState                  *BACnetContextTagEventState
 	ToState                    *BACnetContextTagEventState
 	EventValues                *BACnetNotificationParameters
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -73,10 +76,10 @@ type IBACnetConfirmedServiceRequestConfirmedEventNotification interface {
 	GetToState() *BACnetContextTagEventState
 	// GetEventValues returns EventValues
 	GetEventValues() *BACnetNotificationParameters
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -154,7 +157,8 @@ func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) GetEventValues
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestConfirmedEventNotification(processIdentifier *BACnetContextTagUnsignedInteger, initiatingDeviceIdentifier *BACnetContextTagObjectIdentifier, eventObjectIdentifier *BACnetContextTagObjectIdentifier, timestamp *BACnetTimeStamp, notificationClass *BACnetContextTagUnsignedInteger, priority *BACnetContextTagUnsignedInteger, eventType *BACnetContextTagEventType, messageText *BACnetContextTagCharacterString, notifyType *BACnetContextTagNotifyType, ackRequire [...]
+// NewBACnetConfirmedServiceRequestConfirmedEventNotification factory function for BACnetConfirmedServiceRequestConfirmedEventNotification
+func NewBACnetConfirmedServiceRequestConfirmedEventNotification(processIdentifier *BACnetContextTagUnsignedInteger, initiatingDeviceIdentifier *BACnetContextTagObjectIdentifier, eventObjectIdentifier *BACnetContextTagObjectIdentifier, timestamp *BACnetTimeStamp, notificationClass *BACnetContextTagUnsignedInteger, priority *BACnetContextTagUnsignedInteger, eventType *BACnetContextTagEventType, messageText *BACnetContextTagCharacterString, notifyType *BACnetContextTagNotifyType, ackRequire [...]
 	child := &BACnetConfirmedServiceRequestConfirmedEventNotification{
 		ProcessIdentifier:             processIdentifier,
 		InitiatingDeviceIdentifier:    initiatingDeviceIdentifier,
@@ -169,7 +173,7 @@ func NewBACnetConfirmedServiceRequestConfirmedEventNotification(processIdentifie
 		FromState:                     fromState,
 		ToState:                       toState,
 		EventValues:                   eventValues,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -198,65 +202,65 @@ func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) GetTypeName()
 	return "BACnetConfirmedServiceRequestConfirmedEventNotification"
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (processIdentifier)
-	lengthInBits += m.ProcessIdentifier.LengthInBits()
+	lengthInBits += m.ProcessIdentifier.GetLengthInBits()
 
 	// Simple field (initiatingDeviceIdentifier)
-	lengthInBits += m.InitiatingDeviceIdentifier.LengthInBits()
+	lengthInBits += m.InitiatingDeviceIdentifier.GetLengthInBits()
 
 	// Simple field (eventObjectIdentifier)
-	lengthInBits += m.EventObjectIdentifier.LengthInBits()
+	lengthInBits += m.EventObjectIdentifier.GetLengthInBits()
 
 	// Simple field (timestamp)
-	lengthInBits += m.Timestamp.LengthInBits()
+	lengthInBits += m.Timestamp.GetLengthInBits()
 
 	// Simple field (notificationClass)
-	lengthInBits += m.NotificationClass.LengthInBits()
+	lengthInBits += m.NotificationClass.GetLengthInBits()
 
 	// Simple field (priority)
-	lengthInBits += m.Priority.LengthInBits()
+	lengthInBits += m.Priority.GetLengthInBits()
 
 	// Simple field (eventType)
-	lengthInBits += m.EventType.LengthInBits()
+	lengthInBits += m.EventType.GetLengthInBits()
 
 	// Optional Field (messageText)
 	if m.MessageText != nil {
-		lengthInBits += (*m.MessageText).LengthInBits()
+		lengthInBits += (*m.MessageText).GetLengthInBits()
 	}
 
 	// Simple field (notifyType)
-	lengthInBits += m.NotifyType.LengthInBits()
+	lengthInBits += m.NotifyType.GetLengthInBits()
 
 	// Optional Field (ackRequired)
 	if m.AckRequired != nil {
-		lengthInBits += (*m.AckRequired).LengthInBits()
+		lengthInBits += (*m.AckRequired).GetLengthInBits()
 	}
 
 	// Optional Field (fromState)
 	if m.FromState != nil {
-		lengthInBits += (*m.FromState).LengthInBits()
+		lengthInBits += (*m.FromState).GetLengthInBits()
 	}
 
 	// Simple field (toState)
-	lengthInBits += m.ToState.LengthInBits()
+	lengthInBits += m.ToState.GetLengthInBits()
 
 	// Optional Field (eventValues)
 	if m.EventValues != nil {
-		lengthInBits += (*m.EventValues).LengthInBits()
+		lengthInBits += (*m.EventValues).GetLengthInBits()
 	}
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedEventNotificationParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
@@ -451,7 +455,7 @@ func BACnetConfirmedServiceRequestConfirmedEventNotificationParse(readBuffer uti
 		if pullErr := readBuffer.PullContext("eventValues"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetNotificationParametersParse(readBuffer, uint8(12), eventObjectIdentifier.ObjectType)
+		_val, _err := BACnetNotificationParametersParse(readBuffer, uint8(12), eventObjectIdentifier.GetObjectType())
 		switch {
 		case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
 			readBuffer.Reset(currentPos)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
index b5a77af..cde926b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedPrivateTransfer struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedPrivateTransfer interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) InitializeParent
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer factory function for BACnetConfirmedServiceRequestConfirmedPrivateTransfer
+func NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestConfirmedPrivateTransfer{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) GetTypeName() st
 	return "BACnetConfirmedServiceRequestConfirmedPrivateTransfer"
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
index b68d5f3..862c648 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedTextMessage struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedTextMessage interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) InitializeParent(par
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestConfirmedTextMessage() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestConfirmedTextMessage factory function for BACnetConfirmedServiceRequestConfirmedTextMessage
+func NewBACnetConfirmedServiceRequestConfirmedTextMessage(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestConfirmedTextMessage{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetTypeName() string
 	return "BACnetConfirmedServiceRequestConfirmedTextMessage"
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedTextMessageParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go
index 4e43785..5c9cdbc 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedUnknown.go
@@ -30,16 +30,19 @@ import (
 type BACnetConfirmedServiceRequestConfirmedUnknown struct {
 	*BACnetConfirmedServiceRequest
 	UnknownBytes []byte
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedUnknown interface {
 	// GetUnknownBytes returns UnknownBytes
 	GetUnknownBytes() []byte
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,10 +72,11 @@ func (m *BACnetConfirmedServiceRequestConfirmedUnknown) GetUnknownBytes() []byte
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestConfirmedUnknown(unknownBytes []byte) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestConfirmedUnknown factory function for BACnetConfirmedServiceRequestConfirmedUnknown
+func NewBACnetConfirmedServiceRequestConfirmedUnknown(unknownBytes []byte, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestConfirmedUnknown{
 		UnknownBytes:                  unknownBytes,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -101,12 +105,12 @@ func (m *BACnetConfirmedServiceRequestConfirmedUnknown) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestConfirmedUnknown"
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedUnknown) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestConfirmedUnknown) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedUnknown) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestConfirmedUnknown) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Array field
 	if len(m.UnknownBytes) > 0 {
@@ -116,8 +120,8 @@ func (m *BACnetConfirmedServiceRequestConfirmedUnknown) LengthInBitsConditional(
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestConfirmedUnknown) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestConfirmedUnknown) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedUnknownParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
index a9ccf3c..2ad1700 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestCreateObject struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestCreateObject interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestCreateObject) InitializeParent(parent *BAC
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestCreateObject() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestCreateObject factory function for BACnetConfirmedServiceRequestCreateObject
+func NewBACnetConfirmedServiceRequestCreateObject(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestCreateObject{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestCreateObject) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestCreateObject"
 }
 
-func (m *BACnetConfirmedServiceRequestCreateObject) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestCreateObject) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestCreateObject) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestCreateObject) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestCreateObject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestCreateObject) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestCreateObjectParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
index 7979a27..ed9d921 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestDeleteObject struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeleteObject interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestDeleteObject) InitializeParent(parent *BAC
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestDeleteObject() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestDeleteObject factory function for BACnetConfirmedServiceRequestDeleteObject
+func NewBACnetConfirmedServiceRequestDeleteObject(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestDeleteObject{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestDeleteObject) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestDeleteObject"
 }
 
-func (m *BACnetConfirmedServiceRequestDeleteObject) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestDeleteObject) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestDeleteObject) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestDeleteObject) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestDeleteObject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestDeleteObject) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestDeleteObjectParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
index 09475d8..404d424 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
@@ -33,6 +33,9 @@ type BACnetConfirmedServiceRequestDeviceCommunicationControl struct {
 	TimeDuration  *BACnetContextTagUnsignedInteger
 	EnableDisable *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
 	Password      *BACnetContextTagCharacterString
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -43,10 +46,10 @@ type IBACnetConfirmedServiceRequestDeviceCommunicationControl interface {
 	GetEnableDisable() *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
 	// GetPassword returns Password
 	GetPassword() *BACnetContextTagCharacterString
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -84,12 +87,13 @@ func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetPassword()
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestDeviceCommunicationControl(timeDuration *BACnetContextTagUnsignedInteger, enableDisable *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, password *BACnetContextTagCharacterString) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestDeviceCommunicationControl factory function for BACnetConfirmedServiceRequestDeviceCommunicationControl
+func NewBACnetConfirmedServiceRequestDeviceCommunicationControl(timeDuration *BACnetContextTagUnsignedInteger, enableDisable *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, password *BACnetContextTagCharacterString, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestDeviceCommunicationControl{
 		TimeDuration:                  timeDuration,
 		EnableDisable:                 enableDisable,
 		Password:                      password,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -118,31 +122,31 @@ func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetTypeName()
 	return "BACnetConfirmedServiceRequestDeviceCommunicationControl"
 }
 
-func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Optional Field (timeDuration)
 	if m.TimeDuration != nil {
-		lengthInBits += (*m.TimeDuration).LengthInBits()
+		lengthInBits += (*m.TimeDuration).GetLengthInBits()
 	}
 
 	// Simple field (enableDisable)
-	lengthInBits += m.EnableDisable.LengthInBits()
+	lengthInBits += m.EnableDisable.GetLengthInBits()
 
 	// Optional Field (password)
 	if m.Password != nil {
-		lengthInBits += (*m.Password).LengthInBits()
+		lengthInBits += (*m.Password).GetLengthInBits()
 	}
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
index c7d0569..45468de 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestGetEnrollmentSummary struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEnrollmentSummary interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) InitializeParent(par
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestGetEnrollmentSummary() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestGetEnrollmentSummary factory function for BACnetConfirmedServiceRequestGetEnrollmentSummary
+func NewBACnetConfirmedServiceRequestGetEnrollmentSummary(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestGetEnrollmentSummary{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) GetTypeName() string
 	return "BACnetConfirmedServiceRequestGetEnrollmentSummary"
 }
 
-func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
index 66e4ee7..8045ad4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestGetEventInformation struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEventInformation interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestGetEventInformation) InitializeParent(pare
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestGetEventInformation() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestGetEventInformation factory function for BACnetConfirmedServiceRequestGetEventInformation
+func NewBACnetConfirmedServiceRequestGetEventInformation(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestGetEventInformation{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestGetEventInformation) GetTypeName() string
 	return "BACnetConfirmedServiceRequestGetEventInformation"
 }
 
-func (m *BACnetConfirmedServiceRequestGetEventInformation) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestGetEventInformation) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestGetEventInformation) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestGetEventInformation) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestGetEventInformation) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestGetEventInformation) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestGetEventInformationParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
index 4d9e5dd..1ae24f4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestLifeSafetyOperation struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestLifeSafetyOperation interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) InitializeParent(pare
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestLifeSafetyOperation() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestLifeSafetyOperation factory function for BACnetConfirmedServiceRequestLifeSafetyOperation
+func NewBACnetConfirmedServiceRequestLifeSafetyOperation(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestLifeSafetyOperation{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetTypeName() string
 	return "BACnetConfirmedServiceRequestLifeSafetyOperation"
 }
 
-func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestLifeSafetyOperationParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
index 68a3cfc..9f02db3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -33,6 +33,9 @@ type BACnetConfirmedServiceRequestReadProperty struct {
 	ObjectIdentifier   *BACnetContextTagObjectIdentifier
 	PropertyIdentifier *BACnetContextTagPropertyIdentifier
 	ArrayIndex         *BACnetContextTagUnsignedInteger
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -43,10 +46,10 @@ type IBACnetConfirmedServiceRequestReadProperty interface {
 	GetPropertyIdentifier() *BACnetContextTagPropertyIdentifier
 	// GetArrayIndex returns ArrayIndex
 	GetArrayIndex() *BACnetContextTagUnsignedInteger
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -84,12 +87,13 @@ func (m *BACnetConfirmedServiceRequestReadProperty) GetArrayIndex() *BACnetConte
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *BACnetContextTagUnsignedInteger) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestReadProperty factory function for BACnetConfirmedServiceRequestReadProperty
+func NewBACnetConfirmedServiceRequestReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *BACnetContextTagUnsignedInteger, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestReadProperty{
 		ObjectIdentifier:              objectIdentifier,
 		PropertyIdentifier:            propertyIdentifier,
 		ArrayIndex:                    arrayIndex,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -118,29 +122,29 @@ func (m *BACnetConfirmedServiceRequestReadProperty) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestReadProperty"
 }
 
-func (m *BACnetConfirmedServiceRequestReadProperty) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestReadProperty) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReadProperty) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestReadProperty) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (objectIdentifier)
-	lengthInBits += m.ObjectIdentifier.LengthInBits()
+	lengthInBits += m.ObjectIdentifier.GetLengthInBits()
 
 	// Simple field (propertyIdentifier)
-	lengthInBits += m.PropertyIdentifier.LengthInBits()
+	lengthInBits += m.PropertyIdentifier.GetLengthInBits()
 
 	// Optional Field (arrayIndex)
 	if m.ArrayIndex != nil {
-		lengthInBits += (*m.ArrayIndex).LengthInBits()
+		lengthInBits += (*m.ArrayIndex).GetLengthInBits()
 	}
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReadProperty) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestReadProperty) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReadPropertyParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
index 4e9a722..04fa60f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
@@ -30,16 +30,19 @@ import (
 type BACnetConfirmedServiceRequestReadPropertyMultiple struct {
 	*BACnetConfirmedServiceRequest
 	Data []*BACnetReadAccessSpecification
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadPropertyMultiple interface {
 	// GetData returns Data
 	GetData() []*BACnetReadAccessSpecification
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -69,10 +72,11 @@ func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) GetData() []*BACnetR
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestReadPropertyMultiple(data []*BACnetReadAccessSpecification) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestReadPropertyMultiple factory function for BACnetConfirmedServiceRequestReadPropertyMultiple
+func NewBACnetConfirmedServiceRequestReadPropertyMultiple(data []*BACnetReadAccessSpecification, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestReadPropertyMultiple{
 		Data:                          data,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -101,25 +105,25 @@ func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) GetTypeName() string
 	return "BACnetConfirmedServiceRequestReadPropertyMultiple"
 }
 
-func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Array field
 	if len(m.Data) > 0 {
 		for _, element := range m.Data {
-			lengthInBits += element.LengthInBits()
+			lengthInBits += element.GetLengthInBits()
 		}
 	}
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReadPropertyMultipleParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
index c4feb84..79fc3b2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReadRange struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadRange interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestReadRange) InitializeParent(parent *BACnet
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestReadRange() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestReadRange factory function for BACnetConfirmedServiceRequestReadRange
+func NewBACnetConfirmedServiceRequestReadRange(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestReadRange{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestReadRange) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestReadRange"
 }
 
-func (m *BACnetConfirmedServiceRequestReadRange) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestReadRange) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReadRange) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestReadRange) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReadRange) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestReadRange) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReadRangeParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
index 6e45750..bded0c1 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
@@ -32,6 +32,9 @@ type BACnetConfirmedServiceRequestReinitializeDevice struct {
 	*BACnetConfirmedServiceRequest
 	ReinitializedStateOfDevice *BACnetContextTagDeviceState
 	Password                   *BACnetContextTagCharacterString
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
@@ -40,10 +43,10 @@ type IBACnetConfirmedServiceRequestReinitializeDevice interface {
 	GetReinitializedStateOfDevice() *BACnetContextTagDeviceState
 	// GetPassword returns Password
 	GetPassword() *BACnetContextTagCharacterString
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -77,11 +80,12 @@ func (m *BACnetConfirmedServiceRequestReinitializeDevice) GetPassword() *BACnetC
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestReinitializeDevice(reinitializedStateOfDevice *BACnetContextTagDeviceState, password *BACnetContextTagCharacterString) *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestReinitializeDevice factory function for BACnetConfirmedServiceRequestReinitializeDevice
+func NewBACnetConfirmedServiceRequestReinitializeDevice(reinitializedStateOfDevice *BACnetContextTagDeviceState, password *BACnetContextTagCharacterString, len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestReinitializeDevice{
 		ReinitializedStateOfDevice:    reinitializedStateOfDevice,
 		Password:                      password,
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -110,26 +114,26 @@ func (m *BACnetConfirmedServiceRequestReinitializeDevice) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestReinitializeDevice"
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDevice) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestReinitializeDevice) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDevice) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestReinitializeDevice) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	// Simple field (reinitializedStateOfDevice)
-	lengthInBits += m.ReinitializedStateOfDevice.LengthInBits()
+	lengthInBits += m.ReinitializedStateOfDevice.GetLengthInBits()
 
 	// Optional Field (password)
 	if m.Password != nil {
-		lengthInBits += (*m.Password).LengthInBits()
+		lengthInBits += (*m.Password).GetLengthInBits()
 	}
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDevice) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestReinitializeDevice) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReinitializeDeviceParse(readBuffer utils.ReadBuffer, len uint16) (*BACnetConfirmedServiceRequest, error) {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go
index c4a92b8..1b1339e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go
@@ -29,10 +29,10 @@ import (
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable struct {
-	RawData             *BACnetContextTagEnumerated
-	IsEnable            bool
-	IsDisable           bool
-	IsDisableInitiation bool
+	RawData *BACnetContextTagEnumerated
+
+	// Arguments.
+	TagNumber uint8
 }
 
 // The corresponding interface
@@ -45,10 +45,10 @@ type IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable interface {
 	GetIsDisable() bool
 	// GetIsDisableInitiation returns IsDisableInitiation
 	GetIsDisableInitiation() bool
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -64,22 +64,26 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetRawDat
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetIsEnable() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsEnable
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (0)))
 }
 
 func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetIsDisable() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsDisable
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (1)))
 }
 
 func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetIsDisableInitiation() bool {
-	// TODO: calculation should happen here instead accessing the stored field
-	return m.IsDisableInitiation
+	rawData := m.RawData
+	_ = rawData
+	return bool(bool((m.GetRawData()) != (nil))) && bool(bool(((*m.GetRawData()).GetPayload().GetActualValue()) == (2)))
 }
 
-func NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(rawData *BACnetContextTagEnumerated, isEnable bool, isDisable bool, isDisableInitiation bool) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
-	return &BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable{RawData: rawData, IsEnable: isEnable, IsDisable: isDisable, IsDisableInitiation: isDisableInitiation}
+// NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable factory function for BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
+func NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(rawData *BACnetContextTagEnumerated, tagNumber uint8) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
+	return &BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable{RawData: rawData, TagNumber: tagNumber}
 }
 
 func CastBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(structType interface{}) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
@@ -99,16 +103,16 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetTypeNa
 	return "BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable"
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Optional Field (rawData)
 	if m.RawData != nil {
-		lengthInBits += (*m.RawData).LengthInBits()
+		lengthInBits += (*m.RawData).GetLengthInBits()
 	}
 
 	// A virtual field doesn't have any in- or output.
@@ -120,8 +124,8 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) LengthInB
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, error) {
@@ -151,23 +155,26 @@ func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableParse(readBuffe
 	}
 
 	// Virtual field
-	_isEnable := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (0)))
+	_isEnable := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (0)))
 	isEnable := bool(_isEnable)
+	_ = isEnable
 
 	// Virtual field
-	_isDisable := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (1)))
+	_isDisable := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (1)))
 	isDisable := bool(_isDisable)
+	_ = isDisable
 
 	// Virtual field
-	_isDisableInitiation := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).Payload.ActualValue) == (2)))
+	_isDisableInitiation := bool(bool((rawData) != (nil))) && bool(bool(((*rawData).GetPayload().GetActualValue()) == (2)))
 	isDisableInitiation := bool(_isDisableInitiation)
+	_ = isDisableInitiation
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create the instance
-	return NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(rawData, isEnable, isDisable, isDisableInitiation), nil
+	return NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(rawData, tagNumber), nil
 }
 
 func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) Serialize(writeBuffer utils.WriteBuffer) error {
@@ -191,15 +198,15 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) Serialize
 		}
 	}
 	// Virtual field
-	if _isEnableErr := writeBuffer.WriteVirtual("isEnable", m.IsEnable); _isEnableErr != nil {
+	if _isEnableErr := writeBuffer.WriteVirtual("isEnable", m.GetIsEnable()); _isEnableErr != nil {
 		return errors.Wrap(_isEnableErr, "Error serializing 'isEnable' field")
 	}
 	// Virtual field
-	if _isDisableErr := writeBuffer.WriteVirtual("isDisable", m.IsDisable); _isDisableErr != nil {
+	if _isDisableErr := writeBuffer.WriteVirtual("isDisable", m.GetIsDisable()); _isDisableErr != nil {
 		return errors.Wrap(_isDisableErr, "Error serializing 'isDisable' field")
 	}
 	// Virtual field
-	if _isDisableInitiationErr := writeBuffer.WriteVirtual("isDisableInitiation", m.IsDisableInitiation); _isDisableInitiationErr != nil {
+	if _isDisableInitiationErr := writeBuffer.WriteVirtual("isDisableInitiation", m.GetIsDisableInitiation()); _isDisableInitiationErr != nil {
 		return errors.Wrap(_isDisableInitiationErr, "Error serializing 'isDisableInitiation' field")
 	}
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
index 3aec2d1..e173f4e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
@@ -28,14 +28,17 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestRemoveListElement struct {
 	*BACnetConfirmedServiceRequest
+
+	// Arguments.
+	Len uint16
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemoveListElement interface {
-	// LengthInBytes returns the length in bytes
-	LengthInBytes() uint16
-	// LengthInBits returns the length in bits
-	LengthInBits() uint16
+	// GetLengthInBytes returns the length in bytes
+	GetLengthInBytes() uint16
+	// GetLengthInBits returns the length in bits
+	GetLengthInBits() uint16
 	// Serialize serializes this type
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
@@ -62,9 +65,10 @@ func (m *BACnetConfirmedServiceRequestRemoveListElement) InitializeParent(parent
 // Accessors for virtual fields.
 ///////////////////////////////////////////////////////////
 
-func NewBACnetConfirmedServiceRequestRemoveListElement() *BACnetConfirmedServiceRequest {
+// NewBACnetConfirmedServiceRequestRemoveListElement factory function for BACnetConfirmedServiceRequestRemoveListElement
+func NewBACnetConfirmedServiceRequestRemoveListElement(len uint16) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestRemoveListElement{
-		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(len),
 	}
 	child.Child = child
 	return child.BACnetConfirmedServiceRequest
@@ -93,18 +97,18 @@ func (m *BACnetConfirmedServiceRequestRemoveListElement) GetTypeName() string {
 	return "BACnetConfirmedServiceRequestRemoveListElement"
 }
 
-func (m *BACnetConfirmedServiceRequestRemoveListElement) LengthInBits() uint16 {
-	return m.LengthInBitsConditional(false)
+func (m *BACnetConfirmedServiceRequestRemoveListElement) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestRemoveListElement) LengthInBitsConditional(lastItem bool) uint16 {
-	lengthInBits := uint16(m.ParentLengthInBits())
+func (m *BACnetConfirmedServiceRequestRemoveListElement) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestRemoveListElement) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+func (m *BACnetConfirmedServiceRequestRemoveListElement) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
 }
... 38187 lines suppressed ...