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 2021/04/01 21:54:42 UTC

[plc4x] 02/02: plc4go: implemented Stringer on models + models do have now a pretty String() + added a hex dumper to dump binary data as hex+string view + added a ascii boxer which renders data in ascii boxes

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

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

commit 98b21c76d192021b0bbc9ea210e74696a2ad7297
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Apr 1 23:54:16 2021 +0200

    plc4go: implemented Stringer on models
    + models do have now a pretty String()
    + added a hex dumper to dump binary data as hex+string view
    + added a ascii boxer which renders data in ascii boxes
---
 .../resources/templates/go/model-template.go.ftlh  |  16 +
 plc4go/cmd/main/drivers/tests/ads_driver_test.go   |   1 -
 .../model/AdsAddDeviceNotificationRequest.go       |  15 +
 .../model/AdsAddDeviceNotificationResponse.go      |  11 +
 .../internal/plc4go/ads/readwrite/model/AdsData.go |   9 +
 .../model/AdsDeleteDeviceNotificationRequest.go    |  10 +
 .../model/AdsDeleteDeviceNotificationResponse.go   |  10 +
 .../model/AdsDeviceNotificationRequest.go          |  12 +
 .../model/AdsDeviceNotificationResponse.go         |   9 +
 .../ads/readwrite/model/AdsInvalidRequest.go       |   9 +
 .../ads/readwrite/model/AdsInvalidResponse.go      |   9 +
 .../ads/readwrite/model/AdsMultiRequestItem.go     |   9 +
 .../ads/readwrite/model/AdsMultiRequestItemRead.go |  12 +
 .../model/AdsMultiRequestItemReadWrite.go          |  13 +
 .../readwrite/model/AdsMultiRequestItemWrite.go    |  12 +
 .../ads/readwrite/model/AdsNotificationSample.go   |  12 +
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |   9 +
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |  14 +
 .../plc4go/ads/readwrite/model/AdsReadRequest.go   |  12 +
 .../plc4go/ads/readwrite/model/AdsReadResponse.go  |  11 +
 .../ads/readwrite/model/AdsReadStateRequest.go     |   9 +
 .../ads/readwrite/model/AdsReadStateResponse.go    |  12 +
 .../ads/readwrite/model/AdsReadWriteRequest.go     |  14 +
 .../ads/readwrite/model/AdsReadWriteResponse.go    |  11 +
 .../plc4go/ads/readwrite/model/AdsStampHeader.go   |  12 +
 .../ads/readwrite/model/AdsWriteControlRequest.go  |  12 +
 .../ads/readwrite/model/AdsWriteControlResponse.go |  10 +
 .../plc4go/ads/readwrite/model/AdsWriteRequest.go  |  12 +
 .../plc4go/ads/readwrite/model/AdsWriteResponse.go |  10 +
 .../plc4go/ads/readwrite/model/AmsNetId.go         |  15 +
 .../plc4go/ads/readwrite/model/AmsPacket.go        |  18 +
 .../readwrite/model/AmsSerialAcknowledgeFrame.go   |  15 +
 .../plc4go/ads/readwrite/model/AmsSerialFrame.go   |  16 +
 .../ads/readwrite/model/AmsSerialResetFrame.go     |  15 +
 .../plc4go/ads/readwrite/model/AmsTCPPacket.go     |  10 +
 .../internal/plc4go/ads/readwrite/model/State.go   |  18 +
 .../plc4go/bacnetip/readwrite/model/APDU.go        |   9 +
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |  12 +
 .../bacnetip/readwrite/model/APDUComplexAck.go     |  15 +
 .../readwrite/model/APDUConfirmedRequest.go        |  18 +
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |  11 +
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |  11 +
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |  14 +
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |  11 +
 .../readwrite/model/APDUUnconfirmedRequest.go      |  10 +
 .../bacnetip/readwrite/model/BACnetAddress.go      |  11 +
 .../readwrite/model/BACnetConfirmedServiceACK.go   |   9 +
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |   9 +
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |   9 +
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |   9 +
 .../model/BACnetConfirmedServiceACKCreateObject.go |   9 +
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |   9 +
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |   9 +
 ...BACnetConfirmedServiceACKGetEventInformation.go |   9 +
 .../model/BACnetConfirmedServiceACKReadProperty.go |   9 +
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |   9 +
 .../model/BACnetConfirmedServiceACKReadRange.go    |   9 +
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |   9 +
 ...rmedServiceACKRemovedReadPropertyConditional.go |   9 +
 .../model/BACnetConfirmedServiceACKVTData.go       |   9 +
 .../model/BACnetConfirmedServiceACKVTOpen.go       |   9 +
 .../model/BACnetConfirmedServiceRequest.go         |   9 +
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   9 +
 .../BACnetConfirmedServiceRequestAddListElement.go |   9 +
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   9 +
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   9 +
 ...firmedServiceRequestConfirmedCOVNotification.go |  17 +
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   9 +
 ...rmedServiceRequestConfirmedEventNotification.go |   9 +
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   9 +
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   9 +
 .../BACnetConfirmedServiceRequestCreateObject.go   |   9 +
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   9 +
 ...rmedServiceRequestDeviceCommunicationControl.go |   9 +
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   9 +
 ...etConfirmedServiceRequestGetEventInformation.go |   9 +
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   9 +
 .../BACnetConfirmedServiceRequestReadProperty.go   |  13 +
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   9 +
 .../BACnetConfirmedServiceRequestReadRange.go      |   9 +
 ...netConfirmedServiceRequestReinitializeDevice.go |   9 +
 ...CnetConfirmedServiceRequestRemoveListElement.go |   9 +
 ...etConfirmedServiceRequestRemovedAuthenticate.go |   9 +
 ...ServiceRequestRemovedReadPropertyConditional.go |   9 +
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |   9 +
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |  15 +
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   9 +
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   9 +
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   9 +
 .../model/BACnetConfirmedServiceRequestVTData.go   |   9 +
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   9 +
 .../BACnetConfirmedServiceRequestWriteProperty.go  |  15 +
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   9 +
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |   9 +
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |   9 +
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |   9 +
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |   9 +
 .../readwrite/model/BACnetErrorCreateObject.go     |   9 +
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |   9 +
 .../model/BACnetErrorGetEnrollmentSummary.go       |   9 +
 .../model/BACnetErrorGetEventInformation.go        |   9 +
 .../readwrite/model/BACnetErrorReadProperty.go     |  13 +
 .../model/BACnetErrorReadPropertyMultiple.go       |   9 +
 .../readwrite/model/BACnetErrorReadRange.go        |   9 +
 .../model/BACnetErrorRemovedAuthenticate.go        |   9 +
 .../BACnetErrorRemovedReadPropertyConditional.go   |   9 +
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |   9 +
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |   9 +
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   9 +
 .../model/BACnetServiceAckAtomicReadFile.go        |   9 +
 .../model/BACnetServiceAckAtomicWriteFile.go       |   9 +
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   9 +
 .../model/BACnetServiceAckCreateObject.go          |   9 +
 .../model/BACnetServiceAckGetAlarmSummary.go       |   9 +
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   9 +
 .../model/BACnetServiceAckGetEventInformation.go   |   9 +
 .../model/BACnetServiceAckReadProperty.go          |  14 +
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   9 +
 .../readwrite/model/BACnetServiceAckReadRange.go   |   9 +
 .../model/BACnetServiceAckRemovedAuthenticate.go   |   9 +
 ...CnetServiceAckRemovedReadPropertyConditional.go |   9 +
 .../readwrite/model/BACnetServiceAckVTData.go      |   9 +
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   9 +
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |  13 +
 .../model/BACnetTagApplicationBitString.go         |  11 +
 .../readwrite/model/BACnetTagApplicationBoolean.go |   9 +
 .../model/BACnetTagApplicationCharacterString.go   |   9 +
 .../readwrite/model/BACnetTagApplicationDate.go    |   9 +
 .../readwrite/model/BACnetTagApplicationDouble.go  |  10 +
 .../model/BACnetTagApplicationEnumerated.go        |  10 +
 .../readwrite/model/BACnetTagApplicationNull.go    |   9 +
 .../model/BACnetTagApplicationObjectIdentifier.go  |   9 +
 .../model/BACnetTagApplicationOctetString.go       |   9 +
 .../readwrite/model/BACnetTagApplicationReal.go    |  10 +
 .../model/BACnetTagApplicationSignedInteger.go     |  10 +
 .../readwrite/model/BACnetTagApplicationTime.go    |   9 +
 .../model/BACnetTagApplicationUnsignedInteger.go   |  10 +
 .../bacnetip/readwrite/model/BACnetTagContext.go   |  10 +
 .../readwrite/model/BACnetTagWithContent.go        |  16 +
 .../model/BACnetUnconfirmedServiceRequest.go       |   9 +
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |  15 +
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   9 +
 ...UnconfirmedServiceRequestTimeSynchronization.go |   9 +
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   9 +
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   9 +
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   9 +
 ...edServiceRequestUnconfirmedEventNotification.go |   9 +
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |  12 +
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   9 +
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |  13 +
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |  13 +
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   9 +
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |   9 +
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   9 +
 .../model/BVLCDistributeBroadcastToNetwork.go      |   9 +
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |  12 +
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |  10 +
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |  10 +
 .../model/BVLCReadBroadcastDistributionTable.go    |   9 +
 .../model/BVLCReadBroadcastDistributionTableAck.go |   9 +
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   9 +
 .../model/BVLCReadForeignDeviceTableAck.go         |   9 +
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   9 +
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |   9 +
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   9 +
 .../model/BVLCWideBroadcastDistributionTable.go    |   9 +
 .../plc4go/bacnetip/readwrite/model/NLM.go         |  10 +
 .../readwrite/model/NLMIAmRouterToNetwork.go       |  10 +
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |  10 +
 .../plc4go/bacnetip/readwrite/model/NPDU.go        |  24 +
 .../plc4go/knxnetip/readwrite/model/Apdu.go        |  11 +
 .../plc4go/knxnetip/readwrite/model/ApduControl.go |   9 +
 .../knxnetip/readwrite/model/ApduControlAck.go     |   9 +
 .../knxnetip/readwrite/model/ApduControlConnect.go |   9 +
 .../readwrite/model/ApduControlContainer.go        |  10 +
 .../readwrite/model/ApduControlDisconnect.go       |   9 +
 .../knxnetip/readwrite/model/ApduControlNack.go    |   9 +
 .../plc4go/knxnetip/readwrite/model/ApduData.go    |   9 +
 .../knxnetip/readwrite/model/ApduDataAdcRead.go    |   9 +
 .../readwrite/model/ApduDataAdcResponse.go         |   9 +
 .../knxnetip/readwrite/model/ApduDataContainer.go  |  10 +
 .../model/ApduDataDeviceDescriptorRead.go          |  10 +
 .../model/ApduDataDeviceDescriptorResponse.go      |  11 +
 .../plc4go/knxnetip/readwrite/model/ApduDataExt.go |   9 +
 .../readwrite/model/ApduDataExtAuthorizeRequest.go |  11 +
 .../model/ApduDataExtAuthorizeResponse.go          |  10 +
 .../model/ApduDataExtDomainAddressRead.go          |   9 +
 .../model/ApduDataExtDomainAddressResponse.go      |   9 +
 .../model/ApduDataExtDomainAddressSelectiveRead.go |   9 +
 .../ApduDataExtDomainAddressSerialNumberRead.go    |   9 +
 ...ApduDataExtDomainAddressSerialNumberResponse.go |   9 +
 .../ApduDataExtDomainAddressSerialNumberWrite.go   |   9 +
 .../model/ApduDataExtDomainAddressWrite.go         |   9 +
 .../model/ApduDataExtFileStreamInfoReport.go       |   9 +
 .../ApduDataExtGroupPropertyValueInfoReport.go     |   9 +
 .../model/ApduDataExtGroupPropertyValueRead.go     |   9 +
 .../model/ApduDataExtGroupPropertyValueResponse.go |   9 +
 .../model/ApduDataExtGroupPropertyValueWrite.go    |   9 +
 ...ApduDataExtIndividualAddressSerialNumberRead.go |   9 +
 ...DataExtIndividualAddressSerialNumberResponse.go |   9 +
 ...pduDataExtIndividualAddressSerialNumberWrite.go |   9 +
 .../readwrite/model/ApduDataExtKeyResponse.go      |   9 +
 .../readwrite/model/ApduDataExtKeyWrite.go         |   9 +
 .../readwrite/model/ApduDataExtLinkRead.go         |   9 +
 .../readwrite/model/ApduDataExtLinkResponse.go     |   9 +
 .../readwrite/model/ApduDataExtLinkWrite.go        |   9 +
 .../readwrite/model/ApduDataExtMemoryBitWrite.go   |   9 +
 .../model/ApduDataExtNetworkParameterRead.go       |   9 +
 .../model/ApduDataExtNetworkParameterResponse.go   |   9 +
 .../model/ApduDataExtNetworkParameterWrite.go      |   9 +
 .../model/ApduDataExtOpenRoutingTableRequest.go    |   9 +
 .../model/ApduDataExtPropertyDescriptionRead.go    |  12 +
 .../ApduDataExtPropertyDescriptionResponse.go      |  17 +
 .../model/ApduDataExtPropertyValueRead.go          |  13 +
 .../model/ApduDataExtPropertyValueResponse.go      |  14 +
 .../model/ApduDataExtPropertyValueWrite.go         |  14 +
 .../model/ApduDataExtReadRouterMemoryRequest.go    |   9 +
 .../model/ApduDataExtReadRouterMemoryResponse.go   |   9 +
 .../model/ApduDataExtReadRouterStatusRequest.go    |   9 +
 .../model/ApduDataExtReadRouterStatusResponse.go   |   9 +
 .../model/ApduDataExtReadRoutingTableRequest.go    |   9 +
 .../model/ApduDataExtReadRoutingTableResponse.go   |   9 +
 .../model/ApduDataExtWriteRouterMemoryRequest.go   |   9 +
 .../model/ApduDataExtWriteRouterStatusRequest.go   |   9 +
 .../model/ApduDataExtWriteRoutingTableRequest.go   |   9 +
 .../readwrite/model/ApduDataGroupValueRead.go      |   9 +
 .../readwrite/model/ApduDataGroupValueResponse.go  |  11 +
 .../readwrite/model/ApduDataGroupValueWrite.go     |  11 +
 .../model/ApduDataIndividualAddressRead.go         |   9 +
 .../model/ApduDataIndividualAddressResponse.go     |   9 +
 .../model/ApduDataIndividualAddressWrite.go        |   9 +
 .../knxnetip/readwrite/model/ApduDataMemoryRead.go |  11 +
 .../readwrite/model/ApduDataMemoryResponse.go      |  11 +
 .../readwrite/model/ApduDataMemoryWrite.go         |   9 +
 .../knxnetip/readwrite/model/ApduDataOther.go      |  10 +
 .../knxnetip/readwrite/model/ApduDataRestart.go    |   9 +
 .../readwrite/model/ApduDataUserMessage.go         |   9 +
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |   9 +
 .../readwrite/model/CEMIAdditionalInformation.go   |   9 +
 .../CEMIAdditionalInformationBusmonitorInfo.go     |  15 +
 .../CEMIAdditionalInformationRelativeTimestamp.go  |  10 +
 .../knxnetip/readwrite/model/ChannelInformation.go |  11 +
 .../knxnetip/readwrite/model/ComObjectTable.go     |   9 +
 .../model/ComObjectTableRealisationType1.go        |  12 +
 .../model/ComObjectTableRealisationType2.go        |  12 +
 .../model/ComObjectTableRealisationType6.go        |  10 +
 .../knxnetip/readwrite/model/ConnectionRequest.go  |  12 +
 .../model/ConnectionRequestInformation.go          |   9 +
 ...ConnectionRequestInformationDeviceManagement.go |   9 +
 ...ConnectionRequestInformationTunnelConnection.go |  10 +
 .../knxnetip/readwrite/model/ConnectionResponse.go |  13 +
 .../readwrite/model/ConnectionResponseDataBlock.go |   9 +
 .../ConnectionResponseDataBlockDeviceManagement.go |   9 +
 .../ConnectionResponseDataBlockTunnelConnection.go |  10 +
 .../readwrite/model/ConnectionStateRequest.go      |  11 +
 .../readwrite/model/ConnectionStateResponse.go     |  11 +
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |  18 +
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |  11 +
 .../knxnetip/readwrite/model/DescriptionRequest.go |  10 +
 .../readwrite/model/DescriptionResponse.go         |  11 +
 .../readwrite/model/DeviceConfigurationAck.go      |  10 +
 .../model/DeviceConfigurationAckDataBlock.go       |  12 +
 .../readwrite/model/DeviceConfigurationRequest.go  |  11 +
 .../model/DeviceConfigurationRequestDataBlock.go   |  11 +
 .../readwrite/model/DeviceDescriptorType2.go       |  19 +
 .../knxnetip/readwrite/model/DeviceStatus.go       |  10 +
 .../knxnetip/readwrite/model/DisconnectRequest.go  |  11 +
 .../knxnetip/readwrite/model/DisconnectResponse.go |  11 +
 .../model/GroupObjectDescriptorRealisationType1.go |  17 +
 .../model/GroupObjectDescriptorRealisationType2.go |  18 +
 .../model/GroupObjectDescriptorRealisationType6.go |   9 +
 .../model/GroupObjectDescriptorRealisationType7.go |  18 +
 .../model/GroupObjectDescriptorRealisationTypeB.go |  17 +
 .../readwrite/model/HPAIControlEndpoint.go         |  12 +
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |  12 +
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |  12 +
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |  10 +
 .../plc4go/knxnetip/readwrite/model/KnxAddress.go  |  12 +
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |   9 +
 .../readwrite/model/KnxGroupAddress2Level.go       |  11 +
 .../readwrite/model/KnxGroupAddress3Level.go       |  12 +
 .../readwrite/model/KnxGroupAddressFreeLevel.go    |  10 +
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |  10 +
 .../readwrite/model/KnxNetIpDeviceManagement.go    |  10 +
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |   9 +
 .../knxnetip/readwrite/model/KnxNetIpRouting.go    |  10 +
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |  10 +
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |  10 +
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |  10 +
 .../readwrite/model/KnxNetRemoteLogging.go         |  10 +
 .../plc4go/knxnetip/readwrite/model/LBusmonInd.go  |  13 +
 .../plc4go/knxnetip/readwrite/model/LDataCon.go    |  12 +
 .../knxnetip/readwrite/model/LDataExtended.go      |  15 +
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |  14 +
 .../knxnetip/readwrite/model/LDataFrameACK.go      |   9 +
 .../plc4go/knxnetip/readwrite/model/LDataInd.go    |  12 +
 .../plc4go/knxnetip/readwrite/model/LDataReq.go    |  12 +
 .../plc4go/knxnetip/readwrite/model/LPollData.go   |  12 +
 .../knxnetip/readwrite/model/LPollDataCon.go       |   9 +
 .../knxnetip/readwrite/model/LPollDataReq.go       |   9 +
 .../plc4go/knxnetip/readwrite/model/LRawCon.go     |   9 +
 .../plc4go/knxnetip/readwrite/model/LRawInd.go     |   9 +
 .../plc4go/knxnetip/readwrite/model/LRawReq.go     |   9 +
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |  10 +
 .../readwrite/model/MFuncPropCommandReq.go         |   9 +
 .../knxnetip/readwrite/model/MFuncPropCon.go       |   9 +
 .../readwrite/model/MFuncPropStateReadReq.go       |   9 +
 .../knxnetip/readwrite/model/MPropInfoInd.go       |   9 +
 .../knxnetip/readwrite/model/MPropReadCon.go       |  15 +
 .../knxnetip/readwrite/model/MPropReadReq.go       |  14 +
 .../knxnetip/readwrite/model/MPropWriteCon.go      |   9 +
 .../knxnetip/readwrite/model/MPropWriteReq.go      |   9 +
 .../plc4go/knxnetip/readwrite/model/MResetInd.go   |   9 +
 .../plc4go/knxnetip/readwrite/model/MResetReq.go   |   9 +
 .../model/ProjectInstallationIdentifier.go         |  11 +
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |  10 +
 .../knxnetip/readwrite/model/RoutingIndication.go  |   9 +
 .../knxnetip/readwrite/model/SearchRequest.go      |  10 +
 .../knxnetip/readwrite/model/SearchResponse.go     |  12 +
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |   9 +
 .../knxnetip/readwrite/model/TDataConnectedInd.go  |   9 +
 .../knxnetip/readwrite/model/TDataConnectedReq.go  |   9 +
 .../knxnetip/readwrite/model/TDataIndividualInd.go |   9 +
 .../knxnetip/readwrite/model/TDataIndividualReq.go |   9 +
 .../knxnetip/readwrite/model/TunnelingRequest.go   |  11 +
 .../readwrite/model/TunnelingRequestDataBlock.go   |  11 +
 .../knxnetip/readwrite/model/TunnelingResponse.go  |  10 +
 .../readwrite/model/TunnelingResponseDataBlock.go  |  12 +
 .../knxnetip/readwrite/model/UnknownMessage.go     |  10 +
 .../modbus/readwrite/model/ModbusConstants.go      |   9 +
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |   9 +
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |  11 +
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |  11 +
 .../modbus/readwrite/model/ModbusPDUError.go       |  10 +
 .../model/ModbusPDUGetComEventCounterRequest.go    |   9 +
 .../model/ModbusPDUGetComEventCounterResponse.go   |  11 +
 .../model/ModbusPDUGetComEventLogRequest.go        |   9 +
 .../model/ModbusPDUGetComEventLogResponse.go       |  13 +
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |  12 +
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |  12 +
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |  11 +
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |  10 +
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   9 +
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   9 +
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |  11 +
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |  10 +
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   9 +
 .../model/ModbusPDUReadExceptionStatusResponse.go  |  10 +
 .../model/ModbusPDUReadFifoQueueRequest.go         |  10 +
 .../model/ModbusPDUReadFifoQueueResponse.go        |  10 +
 .../model/ModbusPDUReadFileRecordRequest.go        |  10 +
 .../model/ModbusPDUReadFileRecordRequestItem.go    |  13 +
 .../model/ModbusPDUReadFileRecordResponse.go       |  10 +
 .../model/ModbusPDUReadFileRecordResponseItem.go   |  11 +
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |  11 +
 .../model/ModbusPDUReadHoldingRegistersResponse.go |  10 +
 .../model/ModbusPDUReadInputRegistersRequest.go    |  11 +
 .../model/ModbusPDUReadInputRegistersResponse.go   |  10 +
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |  14 +
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |  10 +
 .../model/ModbusPDUReportServerIdRequest.go        |   9 +
 .../model/ModbusPDUReportServerIdResponse.go       |  10 +
 .../model/ModbusPDUWriteFileRecordRequest.go       |  10 +
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |  13 +
 .../model/ModbusPDUWriteFileRecordResponse.go      |  10 +
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |  13 +
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |  12 +
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |  11 +
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |  12 +
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |  11 +
 .../model/ModbusPDUWriteSingleCoilRequest.go       |  11 +
 .../model/ModbusPDUWriteSingleCoilResponse.go      |  11 +
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |  11 +
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |  11 +
 .../modbus/readwrite/model/ModbusSerialADU.go      |  13 +
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |  12 +
 .../plc4go/s7/readwrite/model/COTPPacket.go        |  11 +
 .../readwrite/model/COTPPacketConnectionRequest.go |  12 +
 .../model/COTPPacketConnectionResponse.go          |  12 +
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |  11 +
 .../readwrite/model/COTPPacketDisconnectRequest.go |  12 +
 .../model/COTPPacketDisconnectResponse.go          |  11 +
 .../s7/readwrite/model/COTPPacketTpduError.go      |  11 +
 .../plc4go/s7/readwrite/model/COTPParameter.go     |   9 +
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |  10 +
 .../s7/readwrite/model/COTPParameterCallingTsap.go |  10 +
 .../s7/readwrite/model/COTPParameterChecksum.go    |  10 +
 ...COTPParameterDisconnectAdditionalInformation.go |  10 +
 .../s7/readwrite/model/COTPParameterTpduSize.go    |  10 +
 .../plc4go/s7/readwrite/model/S7Address.go         |   9 +
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |  15 +
 .../plc4go/s7/readwrite/model/S7Message.go         |  12 +
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |   9 +
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |  11 +
 .../s7/readwrite/model/S7MessageResponseData.go    |  11 +
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |   9 +
 .../plc4go/s7/readwrite/model/S7Parameter.go       |   9 +
 .../readwrite/model/S7ParameterReadVarRequest.go   |  10 +
 .../readwrite/model/S7ParameterReadVarResponse.go  |  10 +
 .../model/S7ParameterSetupCommunication.go         |  12 +
 .../s7/readwrite/model/S7ParameterUserData.go      |  10 +
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   9 +
 .../model/S7ParameterUserDataItemCPUFunctions.go   |  17 +
 .../readwrite/model/S7ParameterWriteVarRequest.go  |  10 +
 .../readwrite/model/S7ParameterWriteVarResponse.go |  10 +
 .../plc4go/s7/readwrite/model/S7Payload.go         |   9 +
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |  10 +
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |  10 +
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |  13 +
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   9 +
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |  10 +
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |  10 +
 .../readwrite/model/S7PayloadWriteVarResponse.go   |  10 +
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  12 +
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |  10 +
 .../readwrite/model/S7VarRequestParameterItem.go   |   9 +
 .../model/S7VarRequestParameterItemAddress.go      |  10 +
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |  14 +
 plc4go/internal/plc4go/s7/readwrite/model/SzlId.go |  12 +
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |  10 +
 .../plc4go/spi/testutils/DriverTestRunner.go       |  15 +-
 plc4go/internal/plc4go/spi/utils/asciiBox.go       | 203 +++++++++
 plc4go/internal/plc4go/spi/utils/asciiBox_test.go  | 498 +++++++++++++++++++++
 plc4go/internal/plc4go/spi/utils/hex.go            | 127 ++++++
 plc4go/internal/plc4go/spi/utils/hex_test.go       | 168 +++++++
 425 files changed, 5391 insertions(+), 5 deletions(-)

diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh
index 053f0d2..86b6d6a 100644
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.go.ftlh
@@ -1084,4 +1084,20 @@ func (m *${type.name}) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	return nil
 }
 
+func (m ${type.name}) String() string {
+	return string(m.Box("${type.name}", utils.DefaultWidth*2))
+}
+
+func (m ${type.name}) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	<#if type.fields?has_content>
+		<#list type.fields as field>
+			<#if helper.isPropertyField(field) && !helper.isConstField(field) && !helper.isVirtualField(field)>
+	boxes = append(boxes, utils.BoxAnything("${field.name?cap_first}", m.${field.name?cap_first}, width-2))
+			</#if>
+		</#list>
+	</#if>
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
+
 </#outputformat>
diff --git a/plc4go/cmd/main/drivers/tests/ads_driver_test.go b/plc4go/cmd/main/drivers/tests/ads_driver_test.go
index 8712813..b71f23d 100644
--- a/plc4go/cmd/main/drivers/tests/ads_driver_test.go
+++ b/plc4go/cmd/main/drivers/tests/ads_driver_test.go
@@ -26,7 +26,6 @@ import (
 )
 
 func TestAdsDriver(t *testing.T) {
-	//t.Skip("Still a work in progress")
 	testutils.RunDriverTestsuite(t, ads.NewDriver(), "assets/testing/protocols/ads/DriverTestsuite.xml",
 		// TODO: currently there seem to be issues with the generated code
 		"Multi-element direct read request",
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
index 3a62ff1..e4c9bf4 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
@@ -332,3 +332,18 @@ func (m *AdsAddDeviceNotificationRequest) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m AdsAddDeviceNotificationRequest) String() string {
+	return string(m.Box("AdsAddDeviceNotificationRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsAddDeviceNotificationRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("IndexGroup", m.IndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("IndexOffset", m.IndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmissionMode", m.TransmissionMode, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaxDelay", m.MaxDelay, width-2))
+	boxes = append(boxes, utils.BoxAnything("CycleTime", m.CycleTime, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
index ef3fe79..ae54965 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
@@ -192,3 +192,14 @@ func (m *AdsAddDeviceNotificationResponse) MarshalXML(e *xml.Encoder, start xml.
 	}
 	return nil
 }
+
+func (m AdsAddDeviceNotificationResponse) String() string {
+	return string(m.Box("AdsAddDeviceNotificationResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsAddDeviceNotificationResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	boxes = append(boxes, utils.BoxAnything("NotificationHandle", m.NotificationHandle, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
index 4e63815..e2e6f14 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
@@ -452,3 +452,12 @@ func (m *AdsData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m AdsData) String() string {
+	return string(m.Box("AdsData", utils.DefaultWidth*2))
+}
+
+func (m AdsData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
index 65755ae..34a8d34 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
@@ -165,3 +165,13 @@ func (m *AdsDeleteDeviceNotificationRequest) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m AdsDeleteDeviceNotificationRequest) String() string {
+	return string(m.Box("AdsDeleteDeviceNotificationRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsDeleteDeviceNotificationRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NotificationHandle", m.NotificationHandle, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
index 65db60d..2f258df 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
@@ -164,3 +164,13 @@ func (m *AdsDeleteDeviceNotificationResponse) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m AdsDeleteDeviceNotificationResponse) String() string {
+	return string(m.Box("AdsDeleteDeviceNotificationResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsDeleteDeviceNotificationResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
index a5c82b3..a92075c 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
@@ -239,3 +239,15 @@ func (m *AdsDeviceNotificationRequest) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m AdsDeviceNotificationRequest) String() string {
+	return string(m.Box("AdsDeviceNotificationRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsDeviceNotificationRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	boxes = append(boxes, utils.BoxAnything("Stamps", m.Stamps, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdsStampHeaders", m.AdsStampHeaders, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
index 0464ceb..a1a6a47 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
@@ -136,3 +136,12 @@ func (m *AdsDeviceNotificationResponse) UnmarshalXML(d *xml.Decoder, start xml.S
 func (m *AdsDeviceNotificationResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m AdsDeviceNotificationResponse) String() string {
+	return string(m.Box("AdsDeviceNotificationResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsDeviceNotificationResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
index 95feaa8..fa30ff3 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
@@ -136,3 +136,12 @@ func (m *AdsInvalidRequest) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *AdsInvalidRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m AdsInvalidRequest) String() string {
+	return string(m.Box("AdsInvalidRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsInvalidRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
index 2db963e..65630ad 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
@@ -136,3 +136,12 @@ func (m *AdsInvalidResponse) UnmarshalXML(d *xml.Decoder, start xml.StartElement
 func (m *AdsInvalidResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m AdsInvalidResponse) String() string {
+	return string(m.Box("AdsInvalidResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsInvalidResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
index 3378d58..e1a7ce9 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
@@ -213,3 +213,12 @@ func (m *AdsMultiRequestItem) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m AdsMultiRequestItem) String() string {
+	return string(m.Box("AdsMultiRequestItem", utils.DefaultWidth*2))
+}
+
+func (m AdsMultiRequestItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
index 6c86e71..cc9df0d 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
@@ -217,3 +217,15 @@ func (m *AdsMultiRequestItemRead) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m AdsMultiRequestItemRead) String() string {
+	return string(m.Box("AdsMultiRequestItemRead", utils.DefaultWidth*2))
+}
+
+func (m AdsMultiRequestItemRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ItemIndexGroup", m.ItemIndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemIndexOffset", m.ItemIndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemReadLength", m.ItemReadLength, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
index 7f14def..d46f96f 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
@@ -245,3 +245,16 @@ func (m *AdsMultiRequestItemReadWrite) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m AdsMultiRequestItemReadWrite) String() string {
+	return string(m.Box("AdsMultiRequestItemReadWrite", utils.DefaultWidth*2))
+}
+
+func (m AdsMultiRequestItemReadWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ItemIndexGroup", m.ItemIndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemIndexOffset", m.ItemIndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemReadLength", m.ItemReadLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemWriteLength", m.ItemWriteLength, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
index d182212..9178a31 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
@@ -217,3 +217,15 @@ func (m *AdsMultiRequestItemWrite) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m AdsMultiRequestItemWrite) String() string {
+	return string(m.Box("AdsMultiRequestItemWrite", utils.DefaultWidth*2))
+}
+
+func (m AdsMultiRequestItemWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ItemIndexGroup", m.ItemIndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemIndexOffset", m.ItemIndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("ItemWriteLength", m.ItemWriteLength, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
index 6f120cd..b9048e8 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
@@ -210,3 +210,15 @@ func (m *AdsNotificationSample) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m AdsNotificationSample) String() string {
+	return string(m.Box("AdsNotificationSample", utils.DefaultWidth*2))
+}
+
+func (m AdsNotificationSample) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NotificationHandle", m.NotificationHandle, width-2))
+	boxes = append(boxes, utils.BoxAnything("SampleSize", m.SampleSize, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
index 209e907..f55bb14 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
@@ -136,3 +136,12 @@ func (m *AdsReadDeviceInfoRequest) UnmarshalXML(d *xml.Decoder, start xml.StartE
 func (m *AdsReadDeviceInfoRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m AdsReadDeviceInfoRequest) String() string {
+	return string(m.Box("AdsReadDeviceInfoRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsReadDeviceInfoRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
index 7c7cdef..927f0b5 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
@@ -295,3 +295,17 @@ func (m *AdsReadDeviceInfoResponse) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m AdsReadDeviceInfoResponse) String() string {
+	return string(m.Box("AdsReadDeviceInfoResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsReadDeviceInfoResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	boxes = append(boxes, utils.BoxAnything("MajorVersion", m.MajorVersion, width-2))
+	boxes = append(boxes, utils.BoxAnything("MinorVersion", m.MinorVersion, width-2))
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	boxes = append(boxes, utils.BoxAnything("Device", m.Device, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
index d9835c1..b761ec8 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
@@ -221,3 +221,15 @@ func (m *AdsReadRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m AdsReadRequest) String() string {
+	return string(m.Box("AdsReadRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsReadRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("IndexGroup", m.IndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("IndexOffset", m.IndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
index eb0ef5b..d0c1e8c 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
@@ -228,3 +228,14 @@ func (m *AdsReadResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m AdsReadResponse) String() string {
+	return string(m.Box("AdsReadResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsReadResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
index 8014346..18ea82b 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
@@ -136,3 +136,12 @@ func (m *AdsReadStateRequest) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *AdsReadStateRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m AdsReadStateRequest) String() string {
+	return string(m.Box("AdsReadStateRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsReadStateRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
index 342809d..cb859ce 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
@@ -220,3 +220,15 @@ func (m *AdsReadStateResponse) MarshalXML(e *xml.Encoder, start xml.StartElement
 	}
 	return nil
 }
+
+func (m AdsReadStateResponse) String() string {
+	return string(m.Box("AdsReadStateResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsReadStateResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdsState", m.AdsState, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceState", m.DeviceState, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
index 681e80a..a28dc52 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
@@ -334,3 +334,17 @@ func (m *AdsReadWriteRequest) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m AdsReadWriteRequest) String() string {
+	return string(m.Box("AdsReadWriteRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsReadWriteRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("IndexGroup", m.IndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("IndexOffset", m.IndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadLength", m.ReadLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
index 0fa6809..beec52d 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
@@ -228,3 +228,14 @@ func (m *AdsReadWriteResponse) MarshalXML(e *xml.Encoder, start xml.StartElement
 	}
 	return nil
 }
+
+func (m AdsReadWriteResponse) String() string {
+	return string(m.Box("AdsReadWriteResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsReadWriteResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
index 9bf209c..bbbd770 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
@@ -209,3 +209,15 @@ func (m *AdsStampHeader) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m AdsStampHeader) String() string {
+	return string(m.Box("AdsStampHeader", utils.DefaultWidth*2))
+}
+
+func (m AdsStampHeader) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Timestamp", m.Timestamp, width-2))
+	boxes = append(boxes, utils.BoxAnything("Samples", m.Samples, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdsNotificationSamples", m.AdsNotificationSamples, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
index 6cfa21f..2aa402d 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
@@ -257,3 +257,15 @@ func (m *AdsWriteControlRequest) MarshalXML(e *xml.Encoder, start xml.StartEleme
 	}
 	return nil
 }
+
+func (m AdsWriteControlRequest) String() string {
+	return string(m.Box("AdsWriteControlRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsWriteControlRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("AdsState", m.AdsState, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceState", m.DeviceState, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
index c4fcaef..948df5c 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
@@ -164,3 +164,13 @@ func (m *AdsWriteControlResponse) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m AdsWriteControlResponse) String() string {
+	return string(m.Box("AdsWriteControlResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsWriteControlResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
index 849f007..35792da 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
@@ -257,3 +257,15 @@ func (m *AdsWriteRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m AdsWriteRequest) String() string {
+	return string(m.Box("AdsWriteRequest", utils.DefaultWidth*2))
+}
+
+func (m AdsWriteRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("IndexGroup", m.IndexGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("IndexOffset", m.IndexOffset, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
index 50126b3..85fb3d6 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
@@ -164,3 +164,13 @@ func (m *AdsWriteResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) er
 	}
 	return nil
 }
+
+func (m AdsWriteResponse) String() string {
+	return string(m.Box("AdsWriteResponse", utils.DefaultWidth*2))
+}
+
+func (m AdsWriteResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Result", m.Result, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
index 673a52a..e1e3344 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
@@ -269,3 +269,18 @@ func (m *AmsNetId) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m AmsNetId) String() string {
+	return string(m.Box("AmsNetId", utils.DefaultWidth*2))
+}
+
+func (m AmsNetId) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Octet1", m.Octet1, width-2))
+	boxes = append(boxes, utils.BoxAnything("Octet2", m.Octet2, width-2))
+	boxes = append(boxes, utils.BoxAnything("Octet3", m.Octet3, width-2))
+	boxes = append(boxes, utils.BoxAnything("Octet4", m.Octet4, width-2))
+	boxes = append(boxes, utils.BoxAnything("Octet5", m.Octet5, width-2))
+	boxes = append(boxes, utils.BoxAnything("Octet6", m.Octet6, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
index 220e139..2a623d6 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
@@ -359,3 +359,21 @@ func (m *AmsPacket) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m AmsPacket) String() string {
+	return string(m.Box("AmsPacket", utils.DefaultWidth*2))
+}
+
+func (m AmsPacket) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TargetAmsNetId", m.TargetAmsNetId, width-2))
+	boxes = append(boxes, utils.BoxAnything("TargetAmsPort", m.TargetAmsPort, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceAmsNetId", m.SourceAmsNetId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceAmsPort", m.SourceAmsPort, width-2))
+	boxes = append(boxes, utils.BoxAnything("CommandId", m.CommandId, width-2))
+	boxes = append(boxes, utils.BoxAnything("State", m.State, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorCode", m.ErrorCode, width-2))
+	boxes = append(boxes, utils.BoxAnything("InvokeId", m.InvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
index 3621892..52f6dcf 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
@@ -269,3 +269,18 @@ func (m *AmsSerialAcknowledgeFrame) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m AmsSerialAcknowledgeFrame) String() string {
+	return string(m.Box("AmsSerialAcknowledgeFrame", utils.DefaultWidth*2))
+}
+
+func (m AmsSerialAcknowledgeFrame) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MagicCookie", m.MagicCookie, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitterAddress", m.TransmitterAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReceiverAddress", m.ReceiverAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("FragmentNumber", m.FragmentNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	boxes = append(boxes, utils.BoxAnything("Crc", m.Crc, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
index df1211e..66e9f80 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
@@ -294,3 +294,19 @@ func (m *AmsSerialFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m AmsSerialFrame) String() string {
+	return string(m.Box("AmsSerialFrame", utils.DefaultWidth*2))
+}
+
+func (m AmsSerialFrame) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MagicCookie", m.MagicCookie, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitterAddress", m.TransmitterAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReceiverAddress", m.ReceiverAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("FragmentNumber", m.FragmentNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	boxes = append(boxes, utils.BoxAnything("Userdata", m.Userdata, width-2))
+	boxes = append(boxes, utils.BoxAnything("Crc", m.Crc, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
index 48f4aec..5cd8c0a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
@@ -269,3 +269,18 @@ func (m *AmsSerialResetFrame) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m AmsSerialResetFrame) String() string {
+	return string(m.Box("AmsSerialResetFrame", utils.DefaultWidth*2))
+}
+
+func (m AmsSerialResetFrame) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MagicCookie", m.MagicCookie, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitterAddress", m.TransmitterAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReceiverAddress", m.ReceiverAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("FragmentNumber", m.FragmentNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	boxes = append(boxes, utils.BoxAnything("Crc", m.Crc, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go b/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
index d948c25..5f19151 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
@@ -181,3 +181,13 @@ func (m *AmsTCPPacket) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m AmsTCPPacket) String() string {
+	return string(m.Box("AmsTCPPacket", utils.DefaultWidth*2))
+}
+
+func (m AmsTCPPacket) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Userdata", m.Userdata, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/State.go b/plc4go/internal/plc4go/ads/readwrite/model/State.go
index 5282c4c..ca23137 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/State.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/State.go
@@ -373,3 +373,21 @@ func (m *State) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m State) String() string {
+	return string(m.Box("State", utils.DefaultWidth*2))
+}
+
+func (m State) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("InitCommand", m.InitCommand, width-2))
+	boxes = append(boxes, utils.BoxAnything("UpdCommand", m.UpdCommand, width-2))
+	boxes = append(boxes, utils.BoxAnything("TimestampAdded", m.TimestampAdded, width-2))
+	boxes = append(boxes, utils.BoxAnything("HighPriorityCommand", m.HighPriorityCommand, width-2))
+	boxes = append(boxes, utils.BoxAnything("SystemCommand", m.SystemCommand, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdsCommand", m.AdsCommand, width-2))
+	boxes = append(boxes, utils.BoxAnything("NoReturn", m.NoReturn, width-2))
+	boxes = append(boxes, utils.BoxAnything("Response", m.Response, width-2))
+	boxes = append(boxes, utils.BoxAnything("Broadcast", m.Broadcast, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index c4544dd..dac5fc6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -299,3 +299,12 @@ func (m *APDU) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m APDU) String() string {
+	return string(m.Box("APDU", utils.DefaultWidth*2))
+}
+
+func (m APDU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
index 4266d72..58c06b2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -243,3 +243,15 @@ func (m *APDUAbort) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m APDUAbort) String() string {
+	return string(m.Box("APDUAbort", utils.DefaultWidth*2))
+}
+
+func (m APDUAbort) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Server", m.Server, width-2))
+	boxes = append(boxes, utils.BoxAnything("OriginalInvokeId", m.OriginalInvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("AbortReason", m.AbortReason, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
index 59af479..2ef5361 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -344,3 +344,18 @@ func (m *APDUComplexAck) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m APDUComplexAck) String() string {
+	return string(m.Box("APDUComplexAck", utils.DefaultWidth*2))
+}
+
+func (m APDUComplexAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SegmentedMessage", m.SegmentedMessage, width-2))
+	boxes = append(boxes, utils.BoxAnything("MoreFollows", m.MoreFollows, width-2))
+	boxes = append(boxes, utils.BoxAnything("OriginalInvokeId", m.OriginalInvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceNumber", m.SequenceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProposedWindowSize", m.ProposedWindowSize, width-2))
+	boxes = append(boxes, utils.BoxAnything("ServiceAck", m.ServiceAck, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
index cc6ccc7..c297908 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -428,3 +428,21 @@ func (m *APDUConfirmedRequest) MarshalXML(e *xml.Encoder, start xml.StartElement
 	}
 	return nil
 }
+
+func (m APDUConfirmedRequest) String() string {
+	return string(m.Box("APDUConfirmedRequest", utils.DefaultWidth*2))
+}
+
+func (m APDUConfirmedRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SegmentedMessage", m.SegmentedMessage, width-2))
+	boxes = append(boxes, utils.BoxAnything("MoreFollows", m.MoreFollows, width-2))
+	boxes = append(boxes, utils.BoxAnything("SegmentedResponseAccepted", m.SegmentedResponseAccepted, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaxSegmentsAccepted", m.MaxSegmentsAccepted, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaxApduLengthAccepted", m.MaxApduLengthAccepted, width-2))
+	boxes = append(boxes, utils.BoxAnything("InvokeId", m.InvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceNumber", m.SequenceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProposedWindowSize", m.ProposedWindowSize, width-2))
+	boxes = append(boxes, utils.BoxAnything("ServiceRequest", m.ServiceRequest, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
index 9fcf599..4c8be86 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
@@ -214,3 +214,14 @@ func (m *APDUError) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m APDUError) String() string {
+	return string(m.Box("APDUError", utils.DefaultWidth*2))
+}
+
+func (m APDUError) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("OriginalInvokeId", m.OriginalInvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Error", m.Error, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
index c216a42..b25a66b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
@@ -215,3 +215,14 @@ func (m *APDUReject) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m APDUReject) String() string {
+	return string(m.Box("APDUReject", utils.DefaultWidth*2))
+}
+
+func (m APDUReject) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("OriginalInvokeId", m.OriginalInvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("RejectReason", m.RejectReason, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
index 617d444..680bced 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -299,3 +299,17 @@ func (m *APDUSegmentAck) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m APDUSegmentAck) String() string {
+	return string(m.Box("APDUSegmentAck", utils.DefaultWidth*2))
+}
+
+func (m APDUSegmentAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NegativeAck", m.NegativeAck, width-2))
+	boxes = append(boxes, utils.BoxAnything("Server", m.Server, width-2))
+	boxes = append(boxes, utils.BoxAnything("OriginalInvokeId", m.OriginalInvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceNumber", m.SequenceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProposedWindowSize", m.ProposedWindowSize, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
index ab2acdf..9182686 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
@@ -215,3 +215,14 @@ func (m *APDUSimpleAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m APDUSimpleAck) String() string {
+	return string(m.Box("APDUSimpleAck", utils.DefaultWidth*2))
+}
+
+func (m APDUSimpleAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("OriginalInvokeId", m.OriginalInvokeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("ServiceChoice", m.ServiceChoice, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
index de7e6bb..c03d62d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
@@ -186,3 +186,13 @@ func (m *APDUUnconfirmedRequest) MarshalXML(e *xml.Encoder, start xml.StartEleme
 	}
 	return nil
 }
+
+func (m APDUUnconfirmedRequest) String() string {
+	return string(m.Box("APDUUnconfirmedRequest", utils.DefaultWidth*2))
+}
+
+func (m APDUUnconfirmedRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ServiceRequest", m.ServiceRequest, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
index ce89f9f..2e03e4d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
@@ -181,3 +181,14 @@ func (m *BACnetAddress) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m BACnetAddress) String() string {
+	return string(m.Box("BACnetAddress", utils.DefaultWidth*2))
+}
+
+func (m BACnetAddress) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Port", m.Port, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index b103f42..731b800 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -383,3 +383,12 @@ func (m *BACnetConfirmedServiceACK) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m BACnetConfirmedServiceACK) String() string {
+	return string(m.Box("BACnetConfirmedServiceACK", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACK) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
index a409246..f498c02 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKAtomicReadFile) UnmarshalXML(d *xml.Decoder, s
 func (m *BACnetConfirmedServiceACKAtomicReadFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKAtomicReadFile) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKAtomicReadFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKAtomicReadFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
index 0c03717..eb7b327 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKAtomicWriteFile) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetConfirmedServiceACKAtomicWriteFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKAtomicWriteFile) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKAtomicWriteFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKAtomicWriteFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
index eeb0400..5f4dbca 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) UnmarshalXML(d *xml.
 func (m *BACnetConfirmedServiceACKConfirmedPrivateTransfer) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKConfirmedPrivateTransfer", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
index 0ed22fb..cddac0b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKCreateObject) UnmarshalXML(d *xml.Decoder, sta
 func (m *BACnetConfirmedServiceACKCreateObject) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKCreateObject) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKCreateObject", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKCreateObject) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
index be0508a..b2b83d9 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKGetAlarmSummary) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetConfirmedServiceACKGetAlarmSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKGetAlarmSummary) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKGetAlarmSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKGetAlarmSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
index 8696977..80a1e82 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) UnmarshalXML(d *xml.Deco
 func (m *BACnetConfirmedServiceACKGetEnrollmentSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKGetEnrollmentSummary) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKGetEnrollmentSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKGetEnrollmentSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
index a86f2cb..c1f1b47 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKGetEventInformation) UnmarshalXML(d *xml.Decod
 func (m *BACnetConfirmedServiceACKGetEventInformation) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKGetEventInformation) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKGetEventInformation", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKGetEventInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
index b61c86a..2ab3d44 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKReadProperty) UnmarshalXML(d *xml.Decoder, sta
 func (m *BACnetConfirmedServiceACKReadProperty) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKReadProperty) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKReadProperty", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKReadProperty) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
index a63bce0..53f5702 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKReadPropertyMultiple) UnmarshalXML(d *xml.Deco
 func (m *BACnetConfirmedServiceACKReadPropertyMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKReadPropertyMultiple) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKReadPropertyMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKReadPropertyMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
index e47c29e..b9b5a02 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKReadRange) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetConfirmedServiceACKReadRange) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKReadRange) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKReadRange", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKReadRange) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
index 72d8033..a17b52a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKRemovedAuthenticate) UnmarshalXML(d *xml.Decod
 func (m *BACnetConfirmedServiceACKRemovedAuthenticate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKRemovedAuthenticate) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKRemovedAuthenticate", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKRemovedAuthenticate) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
index b983eba..a8f40c0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) UnmarshalXML(d
 func (m *BACnetConfirmedServiceACKRemovedReadPropertyConditional) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKRemovedReadPropertyConditional", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
index 829f05b..8025391 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKVTData) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetConfirmedServiceACKVTData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKVTData) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKVTData", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKVTData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
index e332df6..8942a3f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceACKVTOpen) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetConfirmedServiceACKVTOpen) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceACKVTOpen) String() string {
+	return string(m.Box("BACnetConfirmedServiceACKVTOpen", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceACKVTOpen) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index 43ae011..090c5d4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -621,3 +621,12 @@ func (m *BACnetConfirmedServiceRequest) MarshalXML(e *xml.Encoder, start xml.Sta
 	}
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequest) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequest", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
index a1e687c..37a2dc5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) UnmarshalXML(d *xml.Deco
 func (m *BACnetConfirmedServiceRequestAcknowledgeAlarm) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestAcknowledgeAlarm", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
index 78bc482..98ff2fa 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestAddListElement) UnmarshalXML(d *xml.Decode
 func (m *BACnetConfirmedServiceRequestAddListElement) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestAddListElement) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestAddListElement", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestAddListElement) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
index f5421f9..6e8b970 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestAtomicReadFile) UnmarshalXML(d *xml.Decode
 func (m *BACnetConfirmedServiceRequestAtomicReadFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestAtomicReadFile) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestAtomicReadFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestAtomicReadFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
index bea6b8f..1534413 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestAtomicWriteFile) UnmarshalXML(d *xml.Decod
 func (m *BACnetConfirmedServiceRequestAtomicWriteFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestAtomicWriteFile) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestAtomicWriteFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestAtomicWriteFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
index 4bf6a1d..0c52b94 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -513,3 +513,20 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) MarshalXML(e *xm
 	}
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestConfirmedCOVNotification", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SubscriberProcessIdentifier", m.SubscriberProcessIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("MonitoredObjectType", m.MonitoredObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("MonitoredObjectInstanceNumber", m.MonitoredObjectInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("IssueConfirmedNotificationsType", m.IssueConfirmedNotificationsType, width-2))
+	boxes = append(boxes, utils.BoxAnything("IssueConfirmedNotificationsInstanceNumber", m.IssueConfirmedNotificationsInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("LifetimeLength", m.LifetimeLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("LifetimeSeconds", m.LifetimeSeconds, width-2))
+	boxes = append(boxes, utils.BoxAnything("Notifications", m.Notifications, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
index a7557f3..0d773e1 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Unmarsha
 func (m *BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
index 352a884..f8ac6a3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) UnmarshalXML(d
 func (m *BACnetConfirmedServiceRequestConfirmedEventNotification) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestConfirmedEventNotification) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestConfirmedEventNotification", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedEventNotification) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
index d4df0af..3a3be23 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) UnmarshalXML(d *
 func (m *BACnetConfirmedServiceRequestConfirmedPrivateTransfer) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestConfirmedPrivateTransfer", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
index 9712ed8..e0932b3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) UnmarshalXML(d *xml.
 func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestConfirmedTextMessage) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestConfirmedTextMessage", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedTextMessage) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
index 1ce169b..67a3fe5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestCreateObject) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetConfirmedServiceRequestCreateObject) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestCreateObject) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestCreateObject", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestCreateObject) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
index bfcf3d8..2d96dc2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestDeleteObject) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetConfirmedServiceRequestDeleteObject) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestDeleteObject) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestDeleteObject", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestDeleteObject) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
index 818960e..defa879 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) UnmarshalXML(d
 func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestDeviceCommunicationControl", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
index 4fb9cd0..44c59fc 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) UnmarshalXML(d *xml.
 func (m *BACnetConfirmedServiceRequestGetEnrollmentSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestGetEnrollmentSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
index e4bec6d..b2294fc 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestGetEventInformation) UnmarshalXML(d *xml.D
 func (m *BACnetConfirmedServiceRequestGetEventInformation) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestGetEventInformation) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestGetEventInformation", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestGetEventInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
index 49704fa..abc9421 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) UnmarshalXML(d *xml.D
 func (m *BACnetConfirmedServiceRequestLifeSafetyOperation) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestLifeSafetyOperation) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestLifeSafetyOperation", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestLifeSafetyOperation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
index 0ba5a12..4ff3bf7 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -305,3 +305,16 @@ func (m *BACnetConfirmedServiceRequestReadProperty) MarshalXML(e *xml.Encoder, s
 	}
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestReadProperty) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestReadProperty", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestReadProperty) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectType", m.ObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", m.ObjectInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifierLength", m.PropertyIdentifierLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifier", m.PropertyIdentifier, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
index f14d860..23a710a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) UnmarshalXML(d *xml.
 func (m *BACnetConfirmedServiceRequestReadPropertyMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestReadPropertyMultiple) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestReadPropertyMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestReadPropertyMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
index 677e0d9..7f865e7 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestReadRange) UnmarshalXML(d *xml.Decoder, st
 func (m *BACnetConfirmedServiceRequestReadRange) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestReadRange) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestReadRange", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestReadRange) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
index e6fdd6c..a2f32f5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestReinitializeDevice) UnmarshalXML(d *xml.De
 func (m *BACnetConfirmedServiceRequestReinitializeDevice) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestReinitializeDevice) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestReinitializeDevice", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestReinitializeDevice) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
index 7236df4..6b1d53e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestRemoveListElement) UnmarshalXML(d *xml.Dec
 func (m *BACnetConfirmedServiceRequestRemoveListElement) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestRemoveListElement) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestRemoveListElement", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestRemoveListElement) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
index a5f7a5e..f080af5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestRemovedAuthenticate) UnmarshalXML(d *xml.D
 func (m *BACnetConfirmedServiceRequestRemovedAuthenticate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestRemovedAuthenticate) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestRemovedAuthenticate", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestRemovedAuthenticate) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
index d793ab3..4aa7020 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestRemovedReadPropertyConditional) UnmarshalX
 func (m *BACnetConfirmedServiceRequestRemovedReadPropertyConditional) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestRemovedReadPropertyConditional", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
index abca79f..0a443a7 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestRemovedRequestKey) UnmarshalXML(d *xml.Dec
 func (m *BACnetConfirmedServiceRequestRemovedRequestKey) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestRemovedRequestKey) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestRemovedRequestKey", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestRemovedRequestKey) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index 718f891..a4277aa 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -418,3 +418,18 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOV) MarshalXML(e *xml.Encoder, s
 	}
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestSubscribeCOV) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestSubscribeCOV", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestSubscribeCOV) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SubscriberProcessIdentifier", m.SubscriberProcessIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("MonitoredObjectType", m.MonitoredObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("MonitoredObjectInstanceNumber", m.MonitoredObjectInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("IssueConfirmedNotifications", m.IssueConfirmedNotifications, width-2))
+	boxes = append(boxes, utils.BoxAnything("LifetimeLength", m.LifetimeLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("LifetimeSeconds", m.LifetimeSeconds, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
index bf97cce..0d65a64 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) UnmarshalXML(d *xml.
 func (m *BACnetConfirmedServiceRequestSubscribeCOVProperty) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestSubscribeCOVProperty", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
index ed3d78f..7dcf4c9 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) UnmarshalXML
 func (m *BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
index b2016cc..98738bb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestVTClose) UnmarshalXML(d *xml.Decoder, star
 func (m *BACnetConfirmedServiceRequestVTClose) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestVTClose) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestVTClose", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestVTClose) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
index 54e49e5..c5565ef 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestVTData) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetConfirmedServiceRequestVTData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestVTData) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestVTData", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestVTData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
index 4162a25..84555c1 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestVTOpen) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetConfirmedServiceRequestVTOpen) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestVTOpen) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestVTOpen", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestVTOpen) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
index 3a6f522..81c98f6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
@@ -410,3 +410,18 @@ func (m *BACnetConfirmedServiceRequestWriteProperty) MarshalXML(e *xml.Encoder,
 	}
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestWriteProperty) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestWriteProperty", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestWriteProperty) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectType", m.ObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", m.ObjectInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifierLength", m.PropertyIdentifierLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifier", m.PropertyIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	boxes = append(boxes, utils.BoxAnything("Priority", m.Priority, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
index bf241b5..cf5ad2c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetConfirmedServiceRequestWritePropertyMultiple) UnmarshalXML(d *xml
 func (m *BACnetConfirmedServiceRequestWritePropertyMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetConfirmedServiceRequestWritePropertyMultiple) String() string {
+	return string(m.Box("BACnetConfirmedServiceRequestWritePropertyMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetConfirmedServiceRequestWritePropertyMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
index 48d4728..349dc6b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
@@ -383,3 +383,12 @@ func (m *BACnetError) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m BACnetError) String() string {
+	return string(m.Box("BACnetError", utils.DefaultWidth*2))
+}
+
+func (m BACnetError) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
index 0ea8335..6d791a8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorAtomicReadFile) UnmarshalXML(d *xml.Decoder, start xml.Start
 func (m *BACnetErrorAtomicReadFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorAtomicReadFile) String() string {
+	return string(m.Box("BACnetErrorAtomicReadFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorAtomicReadFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
index 3d45ac8..db9a7e8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorAtomicWriteFile) UnmarshalXML(d *xml.Decoder, start xml.Star
 func (m *BACnetErrorAtomicWriteFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorAtomicWriteFile) String() string {
+	return string(m.Box("BACnetErrorAtomicWriteFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorAtomicWriteFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
index 77b4bad..f3bf9da 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorConfirmedPrivateTransfer) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetErrorConfirmedPrivateTransfer) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorConfirmedPrivateTransfer) String() string {
+	return string(m.Box("BACnetErrorConfirmedPrivateTransfer", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorConfirmedPrivateTransfer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
index 46b367e..8f0a54f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorCreateObject) UnmarshalXML(d *xml.Decoder, start xml.StartEl
 func (m *BACnetErrorCreateObject) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorCreateObject) String() string {
+	return string(m.Box("BACnetErrorCreateObject", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorCreateObject) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
index 7e293ba..013569b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorGetAlarmSummary) UnmarshalXML(d *xml.Decoder, start xml.Star
 func (m *BACnetErrorGetAlarmSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorGetAlarmSummary) String() string {
+	return string(m.Box("BACnetErrorGetAlarmSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorGetAlarmSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
index 999da51..412ef10 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorGetEnrollmentSummary) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetErrorGetEnrollmentSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorGetEnrollmentSummary) String() string {
+	return string(m.Box("BACnetErrorGetEnrollmentSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorGetEnrollmentSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
index 7596867..e3dc244 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorGetEventInformation) UnmarshalXML(d *xml.Decoder, start xml.
 func (m *BACnetErrorGetEventInformation) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorGetEventInformation) String() string {
+	return string(m.Box("BACnetErrorGetEventInformation", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorGetEventInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
index 234101b..07b6728 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
@@ -322,3 +322,16 @@ func (m *BACnetErrorReadProperty) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m BACnetErrorReadProperty) String() string {
+	return string(m.Box("BACnetErrorReadProperty", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorReadProperty) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ErrorClassLength", m.ErrorClassLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorClass", m.ErrorClass, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorCodeLength", m.ErrorCodeLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorCode", m.ErrorCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
index 6d11503..ed88d17 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorReadPropertyMultiple) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetErrorReadPropertyMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorReadPropertyMultiple) String() string {
+	return string(m.Box("BACnetErrorReadPropertyMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorReadPropertyMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
index 4610cb8..a848582 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorReadRange) UnmarshalXML(d *xml.Decoder, start xml.StartEleme
 func (m *BACnetErrorReadRange) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorReadRange) String() string {
+	return string(m.Box("BACnetErrorReadRange", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorReadRange) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
index 155a816..ff7246f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorRemovedAuthenticate) UnmarshalXML(d *xml.Decoder, start xml.
 func (m *BACnetErrorRemovedAuthenticate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorRemovedAuthenticate) String() string {
+	return string(m.Box("BACnetErrorRemovedAuthenticate", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorRemovedAuthenticate) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
index 2edd660..b36c0a4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorRemovedReadPropertyConditional) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetErrorRemovedReadPropertyConditional) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorRemovedReadPropertyConditional) String() string {
+	return string(m.Box("BACnetErrorRemovedReadPropertyConditional", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorRemovedReadPropertyConditional) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
index cb93093..a6473b2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorVTData) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *BACnetErrorVTData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorVTData) String() string {
+	return string(m.Box("BACnetErrorVTData", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorVTData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
index 328a12f..3648fb6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
@@ -132,3 +132,12 @@ func (m *BACnetErrorVTOpen) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *BACnetErrorVTOpen) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetErrorVTOpen) String() string {
+	return string(m.Box("BACnetErrorVTOpen", utils.DefaultWidth*2))
+}
+
+func (m BACnetErrorVTOpen) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
index 31d0dba..f9c4805 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -383,3 +383,12 @@ func (m *BACnetServiceAck) MarshalXML(e *xml.Encoder, start xml.StartElement) er
 	}
 	return nil
 }
+
+func (m BACnetServiceAck) String() string {
+	return string(m.Box("BACnetServiceAck", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
index 23637cf..9692f12 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckAtomicReadFile) UnmarshalXML(d *xml.Decoder, start xml.
 func (m *BACnetServiceAckAtomicReadFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckAtomicReadFile) String() string {
+	return string(m.Box("BACnetServiceAckAtomicReadFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckAtomicReadFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
index a715e79..4fa40b3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckAtomicWriteFile) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetServiceAckAtomicWriteFile) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckAtomicWriteFile) String() string {
+	return string(m.Box("BACnetServiceAckAtomicWriteFile", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckAtomicWriteFile) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
index 15d9e82..c5f9aa8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckConfirmedPrivateTransfer) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetServiceAckConfirmedPrivateTransfer) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckConfirmedPrivateTransfer) String() string {
+	return string(m.Box("BACnetServiceAckConfirmedPrivateTransfer", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckConfirmedPrivateTransfer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
index 24af098..c657fca 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckCreateObject) UnmarshalXML(d *xml.Decoder, start xml.St
 func (m *BACnetServiceAckCreateObject) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckCreateObject) String() string {
+	return string(m.Box("BACnetServiceAckCreateObject", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckCreateObject) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
index f222291..b2e0941 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckGetAlarmSummary) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetServiceAckGetAlarmSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckGetAlarmSummary) String() string {
+	return string(m.Box("BACnetServiceAckGetAlarmSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckGetAlarmSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
index e07b7ca..e09bda6 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckGetEnrollmentSummary) UnmarshalXML(d *xml.Decoder, star
 func (m *BACnetServiceAckGetEnrollmentSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckGetEnrollmentSummary) String() string {
+	return string(m.Box("BACnetServiceAckGetEnrollmentSummary", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckGetEnrollmentSummary) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
index 5374615..9929df8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckGetEventInformation) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetServiceAckGetEventInformation) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckGetEventInformation) String() string {
+	return string(m.Box("BACnetServiceAckGetEventInformation", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckGetEventInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index f3c91db..fcbb491 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -370,3 +370,17 @@ func (m *BACnetServiceAckReadProperty) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m BACnetServiceAckReadProperty) String() string {
+	return string(m.Box("BACnetServiceAckReadProperty", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckReadProperty) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectType", m.ObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", m.ObjectInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifierLength", m.PropertyIdentifierLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifier", m.PropertyIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
index a740b23..95066b2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckReadPropertyMultiple) UnmarshalXML(d *xml.Decoder, star
 func (m *BACnetServiceAckReadPropertyMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckReadPropertyMultiple) String() string {
+	return string(m.Box("BACnetServiceAckReadPropertyMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckReadPropertyMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
index 0cd781d..008ee9f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckReadRange) UnmarshalXML(d *xml.Decoder, start xml.Start
 func (m *BACnetServiceAckReadRange) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckReadRange) String() string {
+	return string(m.Box("BACnetServiceAckReadRange", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckReadRange) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
index c0ab0c8..4c378ec 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckRemovedAuthenticate) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetServiceAckRemovedAuthenticate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckRemovedAuthenticate) String() string {
+	return string(m.Box("BACnetServiceAckRemovedAuthenticate", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckRemovedAuthenticate) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
index 0a24e8f..88e2659 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckRemovedReadPropertyConditional) UnmarshalXML(d *xml.Dec
 func (m *BACnetServiceAckRemovedReadPropertyConditional) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckRemovedReadPropertyConditional) String() string {
+	return string(m.Box("BACnetServiceAckRemovedReadPropertyConditional", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckRemovedReadPropertyConditional) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
index fbd4df3..a9c3963 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckVTData) UnmarshalXML(d *xml.Decoder, start xml.StartEle
 func (m *BACnetServiceAckVTData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckVTData) String() string {
+	return string(m.Box("BACnetServiceAckVTData", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckVTData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
index 7521c12..125fa49 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
@@ -132,3 +132,12 @@ func (m *BACnetServiceAckVTOpen) UnmarshalXML(d *xml.Decoder, start xml.StartEle
 func (m *BACnetServiceAckVTOpen) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetServiceAckVTOpen) String() string {
+	return string(m.Box("BACnetServiceAckVTOpen", utils.DefaultWidth*2))
+}
+
+func (m BACnetServiceAckVTOpen) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index fbad6cf..038ce0f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -505,3 +505,16 @@ func (m *BACnetTag) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m BACnetTag) String() string {
+	return string(m.Box("BACnetTag", utils.DefaultWidth*2))
+}
+
+func (m BACnetTag) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TypeOrTagNumber", m.TypeOrTagNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("LengthValueType", m.LengthValueType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ExtTagNumber", m.ExtTagNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("ExtLength", m.ExtLength, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
index 3642cc5..9328f60 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
@@ -214,3 +214,14 @@ func (m *BACnetTagApplicationBitString) MarshalXML(e *xml.Encoder, start xml.Sta
 	}
 	return nil
 }
+
+func (m BACnetTagApplicationBitString) String() string {
+	return string(m.Box("BACnetTagApplicationBitString", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationBitString) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("UnusedBits", m.UnusedBits, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
index fc52dd2..7153871 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationBoolean) UnmarshalXML(d *xml.Decoder, start xml.Sta
 func (m *BACnetTagApplicationBoolean) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationBoolean) String() string {
+	return string(m.Box("BACnetTagApplicationBoolean", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationBoolean) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
index c01c828..f75bf3e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationCharacterString) UnmarshalXML(d *xml.Decoder, start
 func (m *BACnetTagApplicationCharacterString) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationCharacterString) String() string {
+	return string(m.Box("BACnetTagApplicationCharacterString", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationCharacterString) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
index 1b93f80..0c1a469 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationDate) UnmarshalXML(d *xml.Decoder, start xml.StartE
 func (m *BACnetTagApplicationDate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationDate) String() string {
+	return string(m.Box("BACnetTagApplicationDate", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationDate) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
index 486649a..7f7725b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
@@ -165,3 +165,13 @@ func (m *BACnetTagApplicationDouble) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m BACnetTagApplicationDouble) String() string {
+	return string(m.Box("BACnetTagApplicationDouble", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationDouble) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
index 080bdc7..2852029 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
@@ -186,3 +186,13 @@ func (m *BACnetTagApplicationEnumerated) MarshalXML(e *xml.Encoder, start xml.St
 	}
 	return nil
 }
+
+func (m BACnetTagApplicationEnumerated) String() string {
+	return string(m.Box("BACnetTagApplicationEnumerated", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationEnumerated) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
index 49eb06d..929a129 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationNull) UnmarshalXML(d *xml.Decoder, start xml.StartE
 func (m *BACnetTagApplicationNull) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationNull) String() string {
+	return string(m.Box("BACnetTagApplicationNull", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationNull) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
index c552a31..6447bc7 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationObjectIdentifier) UnmarshalXML(d *xml.Decoder, star
 func (m *BACnetTagApplicationObjectIdentifier) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationObjectIdentifier) String() string {
+	return string(m.Box("BACnetTagApplicationObjectIdentifier", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationObjectIdentifier) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
index 6008ba0..fbdd9f4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationOctetString) UnmarshalXML(d *xml.Decoder, start xml
 func (m *BACnetTagApplicationOctetString) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationOctetString) String() string {
+	return string(m.Box("BACnetTagApplicationOctetString", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationOctetString) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
index 652181c..30d0111 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
@@ -165,3 +165,13 @@ func (m *BACnetTagApplicationReal) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m BACnetTagApplicationReal) String() string {
+	return string(m.Box("BACnetTagApplicationReal", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationReal) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
index 3c0f436..2dd9fdb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
@@ -186,3 +186,13 @@ func (m *BACnetTagApplicationSignedInteger) MarshalXML(e *xml.Encoder, start xml
 	}
 	return nil
 }
+
+func (m BACnetTagApplicationSignedInteger) String() string {
+	return string(m.Box("BACnetTagApplicationSignedInteger", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationSignedInteger) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
index 0453739..76cb830 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
@@ -136,3 +136,12 @@ func (m *BACnetTagApplicationTime) UnmarshalXML(d *xml.Decoder, start xml.StartE
 func (m *BACnetTagApplicationTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetTagApplicationTime) String() string {
+	return string(m.Box("BACnetTagApplicationTime", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationTime) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
index 83b7935..7776443 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
@@ -186,3 +186,13 @@ func (m *BACnetTagApplicationUnsignedInteger) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m BACnetTagApplicationUnsignedInteger) String() string {
+	return string(m.Box("BACnetTagApplicationUnsignedInteger", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagApplicationUnsignedInteger) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
index 243f314..0161247 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
@@ -186,3 +186,13 @@ func (m *BACnetTagContext) MarshalXML(e *xml.Encoder, start xml.StartElement) er
 	}
 	return nil
 }
+
+func (m BACnetTagContext) String() string {
+	return string(m.Box("BACnetTagContext", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagContext) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
index 3a03ef4..9f91544 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
@@ -371,3 +371,19 @@ func (m *BACnetTagWithContent) MarshalXML(e *xml.Encoder, start xml.StartElement
 	}
 	return nil
 }
+
+func (m BACnetTagWithContent) String() string {
+	return string(m.Box("BACnetTagWithContent", utils.DefaultWidth*2))
+}
+
+func (m BACnetTagWithContent) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TypeOrTagNumber", m.TypeOrTagNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("ContextSpecificTag", m.ContextSpecificTag, width-2))
+	boxes = append(boxes, utils.BoxAnything("LengthValueType", m.LengthValueType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ExtTagNumber", m.ExtTagNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("ExtLength", m.ExtLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyIdentifier", m.PropertyIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index e86a924..2143a8f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -355,3 +355,12 @@ func (m *BACnetUnconfirmedServiceRequest) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequest) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequest", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
index 3a3bc9d..76b4648 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
@@ -399,3 +399,18 @@ func (m *BACnetUnconfirmedServiceRequestIAm) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestIAm) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestIAm", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestIAm) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectType", m.ObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectInstanceNumber", m.ObjectInstanceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaximumApduLengthAcceptedLength", m.MaximumApduLengthAcceptedLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaximumApduLengthAccepted", m.MaximumApduLengthAccepted, width-2))
+	boxes = append(boxes, utils.BoxAnything("SegmentationSupported", m.SegmentationSupported, width-2))
+	boxes = append(boxes, utils.BoxAnything("VendorId", m.VendorId, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
index a367b0c..dd2aef2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestIHave) UnmarshalXML(d *xml.Decoder, star
 func (m *BACnetUnconfirmedServiceRequestIHave) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestIHave) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestIHave", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestIHave) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
index 7330076..0e75152 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestTimeSynchronization) UnmarshalXML(d *xml
 func (m *BACnetUnconfirmedServiceRequestTimeSynchronization) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestTimeSynchronization) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestTimeSynchronization", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestTimeSynchronization) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
index 6919a90..7e41a0e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestUTCTimeSynchronization) UnmarshalXML(d *
 func (m *BACnetUnconfirmedServiceRequestUTCTimeSynchronization) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestUTCTimeSynchronization", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
index fa3ced6..fc6a957 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) UnmarshalXML
 func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
index 5e179e6..9802519 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Unma
 func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
index fe5b6c9..33b924a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) UnmarshalX
 func (m *BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestUnconfirmedEventNotification", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
index 61dd511..0726be9 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
@@ -317,3 +317,15 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) MarshalXML(e
 	}
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("VendorId", m.VendorId, width-2))
+	boxes = append(boxes, utils.BoxAnything("ServiceNumber", m.ServiceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("Values", m.Values, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
index 13ddd3f..d16845a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) UnmarshalXML(d *
 func (m *BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestUnconfirmedTextMessage", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
index e599775..3ce7c10 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
@@ -343,3 +343,16 @@ func (m *BACnetUnconfirmedServiceRequestWhoHas) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestWhoHas) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestWhoHas", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestWhoHas) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DeviceInstanceLowLimit", m.DeviceInstanceLowLimit, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceInstanceHighLimit", m.DeviceInstanceHighLimit, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectNameCharacterSet", m.ObjectNameCharacterSet, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectName", m.ObjectName, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
index 307aa13..608f3a2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
@@ -322,3 +322,16 @@ func (m *BACnetUnconfirmedServiceRequestWhoIs) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestWhoIs) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestWhoIs", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestWhoIs) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DeviceInstanceRangeLowLimitLength", m.DeviceInstanceRangeLowLimitLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceInstanceRangeLowLimit", m.DeviceInstanceRangeLowLimit, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceInstanceRangeHighLimitLength", m.DeviceInstanceRangeHighLimitLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceInstanceRangeHighLimit", m.DeviceInstanceRangeHighLimit, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
index 0a096a3..a9482f9 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
@@ -132,3 +132,12 @@ func (m *BACnetUnconfirmedServiceRequestWriteGroup) UnmarshalXML(d *xml.Decoder,
 func (m *BACnetUnconfirmedServiceRequestWriteGroup) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BACnetUnconfirmedServiceRequestWriteGroup) String() string {
+	return string(m.Box("BACnetUnconfirmedServiceRequestWriteGroup", utils.DefaultWidth*2))
+}
+
+func (m BACnetUnconfirmedServiceRequestWriteGroup) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index a5204e3..9387629 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -408,3 +408,12 @@ func (m *BVLC) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m BVLC) String() string {
+	return string(m.Box("BVLC", utils.DefaultWidth*2))
+}
+
+func (m BVLC) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
index 98dd374..4d8b058 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
@@ -132,3 +132,12 @@ func (m *BVLCDeleteForeignDeviceTableEntry) UnmarshalXML(d *xml.Decoder, start x
 func (m *BVLCDeleteForeignDeviceTableEntry) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCDeleteForeignDeviceTableEntry) String() string {
+	return string(m.Box("BVLCDeleteForeignDeviceTableEntry", utils.DefaultWidth*2))
+}
+
+func (m BVLCDeleteForeignDeviceTableEntry) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
index d81cbe5..5997f7e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
@@ -132,3 +132,12 @@ func (m *BVLCDistributeBroadcastToNetwork) UnmarshalXML(d *xml.Decoder, start xm
 func (m *BVLCDistributeBroadcastToNetwork) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCDistributeBroadcastToNetwork) String() string {
+	return string(m.Box("BVLCDistributeBroadcastToNetwork", utils.DefaultWidth*2))
+}
+
+func (m BVLCDistributeBroadcastToNetwork) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
index b86c8c8..3125022 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
@@ -232,3 +232,15 @@ func (m *BVLCForwardedNPDU) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m BVLCForwardedNPDU) String() string {
+	return string(m.Box("BVLCForwardedNPDU", utils.DefaultWidth*2))
+}
+
+func (m BVLCForwardedNPDU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Ip", m.Ip, width-2))
+	boxes = append(boxes, utils.BoxAnything("Port", m.Port, width-2))
+	boxes = append(boxes, utils.BoxAnything("Npdu", m.Npdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
index da4db1d..9b01e7e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
@@ -160,3 +160,13 @@ func (m *BVLCOriginalBroadcastNPDU) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m BVLCOriginalBroadcastNPDU) String() string {
+	return string(m.Box("BVLCOriginalBroadcastNPDU", utils.DefaultWidth*2))
+}
+
+func (m BVLCOriginalBroadcastNPDU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Npdu", m.Npdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
index fb0992b..118cdf1 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
@@ -160,3 +160,13 @@ func (m *BVLCOriginalUnicastNPDU) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m BVLCOriginalUnicastNPDU) String() string {
+	return string(m.Box("BVLCOriginalUnicastNPDU", utils.DefaultWidth*2))
+}
+
+func (m BVLCOriginalUnicastNPDU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Npdu", m.Npdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
index 3592efc..30d97c0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
@@ -132,3 +132,12 @@ func (m *BVLCReadBroadcastDistributionTable) UnmarshalXML(d *xml.Decoder, start
 func (m *BVLCReadBroadcastDistributionTable) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCReadBroadcastDistributionTable) String() string {
+	return string(m.Box("BVLCReadBroadcastDistributionTable", utils.DefaultWidth*2))
+}
+
+func (m BVLCReadBroadcastDistributionTable) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
index beffb19..2b94a6b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
@@ -132,3 +132,12 @@ func (m *BVLCReadBroadcastDistributionTableAck) UnmarshalXML(d *xml.Decoder, sta
 func (m *BVLCReadBroadcastDistributionTableAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCReadBroadcastDistributionTableAck) String() string {
+	return string(m.Box("BVLCReadBroadcastDistributionTableAck", utils.DefaultWidth*2))
+}
+
+func (m BVLCReadBroadcastDistributionTableAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
index acc6617..722800d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
@@ -132,3 +132,12 @@ func (m *BVLCReadForeignDeviceTable) UnmarshalXML(d *xml.Decoder, start xml.Star
 func (m *BVLCReadForeignDeviceTable) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCReadForeignDeviceTable) String() string {
+	return string(m.Box("BVLCReadForeignDeviceTable", utils.DefaultWidth*2))
+}
+
+func (m BVLCReadForeignDeviceTable) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
index 7825c7b..7c2600c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
@@ -132,3 +132,12 @@ func (m *BVLCReadForeignDeviceTableAck) UnmarshalXML(d *xml.Decoder, start xml.S
 func (m *BVLCReadForeignDeviceTableAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCReadForeignDeviceTableAck) String() string {
+	return string(m.Box("BVLCReadForeignDeviceTableAck", utils.DefaultWidth*2))
+}
+
+func (m BVLCReadForeignDeviceTableAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
index e3b22ee..1607901 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
@@ -132,3 +132,12 @@ func (m *BVLCRegisterForeignDevice) UnmarshalXML(d *xml.Decoder, start xml.Start
 func (m *BVLCRegisterForeignDevice) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCRegisterForeignDevice) String() string {
+	return string(m.Box("BVLCRegisterForeignDevice", utils.DefaultWidth*2))
+}
+
+func (m BVLCRegisterForeignDevice) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
index c96dba7..6cab497 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
@@ -132,3 +132,12 @@ func (m *BVLCResult) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
 func (m *BVLCResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCResult) String() string {
+	return string(m.Box("BVLCResult", utils.DefaultWidth*2))
+}
+
+func (m BVLCResult) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
index dc777fb..ca88b6c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
@@ -132,3 +132,12 @@ func (m *BVLCSecureBVLL) UnmarshalXML(d *xml.Decoder, start xml.StartElement) er
 func (m *BVLCSecureBVLL) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCSecureBVLL) String() string {
+	return string(m.Box("BVLCSecureBVLL", utils.DefaultWidth*2))
+}
+
+func (m BVLCSecureBVLL) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
index 6062f4f..e427870 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
@@ -132,3 +132,12 @@ func (m *BVLCWideBroadcastDistributionTable) UnmarshalXML(d *xml.Decoder, start
 func (m *BVLCWideBroadcastDistributionTable) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m BVLCWideBroadcastDistributionTable) String() string {
+	return string(m.Box("BVLCWideBroadcastDistributionTable", utils.DefaultWidth*2))
+}
+
+func (m BVLCWideBroadcastDistributionTable) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
index 9cff81f..c04a77c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
@@ -250,3 +250,13 @@ func (m *NLM) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m NLM) String() string {
+	return string(m.Box("NLM", utils.DefaultWidth*2))
+}
+
+func (m NLM) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("VendorId", m.VendorId, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
index 6033756..b35c17d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
@@ -180,3 +180,13 @@ func (m *NLMIAmRouterToNetwork) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m NLMIAmRouterToNetwork) String() string {
+	return string(m.Box("NLMIAmRouterToNetwork", utils.DefaultWidth*2))
+}
+
+func (m NLMIAmRouterToNetwork) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationNetworkAddress", m.DestinationNetworkAddress, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
index 230b268..8b4a94e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
@@ -180,3 +180,13 @@ func (m *NLMWhoIsRouterToNetwork) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m NLMWhoIsRouterToNetwork) String() string {
+	return string(m.Box("NLMWhoIsRouterToNetwork", utils.DefaultWidth*2))
+}
+
+func (m NLMWhoIsRouterToNetwork) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationNetworkAddress", m.DestinationNetworkAddress, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
index eef33eb..ed4ca0c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
@@ -649,3 +649,27 @@ func (m *NPDU) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m NPDU) String() string {
+	return string(m.Box("NPDU", utils.DefaultWidth*2))
+}
+
+func (m NPDU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ProtocolVersionNumber", m.ProtocolVersionNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("MessageTypeFieldPresent", m.MessageTypeFieldPresent, width-2))
+	boxes = append(boxes, utils.BoxAnything("DestinationSpecified", m.DestinationSpecified, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceSpecified", m.SourceSpecified, width-2))
+	boxes = append(boxes, utils.BoxAnything("ExpectingReply", m.ExpectingReply, width-2))
+	boxes = append(boxes, utils.BoxAnything("NetworkPriority", m.NetworkPriority, width-2))
+	boxes = append(boxes, utils.BoxAnything("DestinationNetworkAddress", m.DestinationNetworkAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("DestinationLength", m.DestinationLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("DestinationAddress", m.DestinationAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceNetworkAddress", m.SourceNetworkAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceLength", m.SourceLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceAddress", m.SourceAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("HopCount", m.HopCount, width-2))
+	boxes = append(boxes, utils.BoxAnything("Nlm", m.Nlm, width-2))
+	boxes = append(boxes, utils.BoxAnything("Apdu", m.Apdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
index 63c605f..9db49db 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
@@ -267,3 +267,14 @@ func (m *Apdu) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m Apdu) String() string {
+	return string(m.Box("Apdu", utils.DefaultWidth*2))
+}
+
+func (m Apdu) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Numbered", m.Numbered, width-2))
+	boxes = append(boxes, utils.BoxAnything("Counter", m.Counter, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
index ca7f524..95bcdbf 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
@@ -243,3 +243,12 @@ func (m *ApduControl) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m ApduControl) String() string {
+	return string(m.Box("ApduControl", utils.DefaultWidth*2))
+}
+
+func (m ApduControl) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlAck.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlAck.go
index ec4fe49..3694417 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlAck.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlAck.go
@@ -132,3 +132,12 @@ func (m *ApduControlAck) UnmarshalXML(d *xml.Decoder, start xml.StartElement) er
 func (m *ApduControlAck) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduControlAck) String() string {
+	return string(m.Box("ApduControlAck", utils.DefaultWidth*2))
+}
+
+func (m ApduControlAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlConnect.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlConnect.go
index 7ded430..5597f0e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlConnect.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlConnect.go
@@ -132,3 +132,12 @@ func (m *ApduControlConnect) UnmarshalXML(d *xml.Decoder, start xml.StartElement
 func (m *ApduControlConnect) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduControlConnect) String() string {
+	return string(m.Box("ApduControlConnect", utils.DefaultWidth*2))
+}
+
+func (m ApduControlConnect) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlContainer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlContainer.go
index 63caac0..f78541a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlContainer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlContainer.go
@@ -162,3 +162,13 @@ func (m *ApduControlContainer) MarshalXML(e *xml.Encoder, start xml.StartElement
 	}
 	return nil
 }
+
+func (m ApduControlContainer) String() string {
+	return string(m.Box("ApduControlContainer", utils.DefaultWidth*2))
+}
+
+func (m ApduControlContainer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ControlApdu", m.ControlApdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlDisconnect.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlDisconnect.go
index 4e071a2..bdd2dab 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlDisconnect.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlDisconnect.go
@@ -132,3 +132,12 @@ func (m *ApduControlDisconnect) UnmarshalXML(d *xml.Decoder, start xml.StartElem
 func (m *ApduControlDisconnect) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduControlDisconnect) String() string {
+	return string(m.Box("ApduControlDisconnect", utils.DefaultWidth*2))
+}
+
+func (m ApduControlDisconnect) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlNack.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlNack.go
index c42dbb8..f87f4d5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlNack.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControlNack.go
@@ -132,3 +132,12 @@ func (m *ApduControlNack) UnmarshalXML(d *xml.Decoder, start xml.StartElement) e
 func (m *ApduControlNack) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduControlNack) String() string {
+	return string(m.Box("ApduControlNack", utils.DefaultWidth*2))
+}
+
+func (m ApduControlNack) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
index ea988d0..69e7984 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
@@ -411,3 +411,12 @@ func (m *ApduData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m ApduData) String() string {
+	return string(m.Box("ApduData", utils.DefaultWidth*2))
+}
+
+func (m ApduData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcRead.go
index c95bde8..ca5faa9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataAdcRead) UnmarshalXML(d *xml.Decoder, start xml.StartElement) e
 func (m *ApduDataAdcRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataAdcRead) String() string {
+	return string(m.Box("ApduDataAdcRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataAdcRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcResponse.go
index d0ea1f5..7934f99 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataAdcResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataAdcResponse) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *ApduDataAdcResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataAdcResponse) String() string {
+	return string(m.Box("ApduDataAdcResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataAdcResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataContainer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataContainer.go
index 27c5bba..600c8ac 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataContainer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataContainer.go
@@ -162,3 +162,13 @@ func (m *ApduDataContainer) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m ApduDataContainer) String() string {
+	return string(m.Box("ApduDataContainer", utils.DefaultWidth*2))
+}
+
+func (m ApduDataContainer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DataApdu", m.DataApdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorRead.go
index 4b3b9dc..58cb6ef 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorRead.go
@@ -161,3 +161,13 @@ func (m *ApduDataDeviceDescriptorRead) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m ApduDataDeviceDescriptorRead) String() string {
+	return string(m.Box("ApduDataDeviceDescriptorRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataDeviceDescriptorRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DescriptorType", m.DescriptorType, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go
index 6becbe5..0b7d091 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataDeviceDescriptorResponse.go
@@ -208,3 +208,14 @@ func (m *ApduDataDeviceDescriptorResponse) MarshalXML(e *xml.Encoder, start xml.
 	}
 	return nil
 }
+
+func (m ApduDataDeviceDescriptorResponse) String() string {
+	return string(m.Box("ApduDataDeviceDescriptorResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataDeviceDescriptorResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DescriptorType", m.DescriptorType, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
index b59995d..2f0fa4a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
@@ -761,3 +761,12 @@ func (m *ApduDataExt) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m ApduDataExt) String() string {
+	return string(m.Box("ApduDataExt", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExt) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go
index 01c09d4..75ab5f8 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeRequest.go
@@ -205,3 +205,14 @@ func (m *ApduDataExtAuthorizeRequest) MarshalXML(e *xml.Encoder, start xml.Start
 	}
 	return nil
 }
+
+func (m ApduDataExtAuthorizeRequest) String() string {
+	return string(m.Box("ApduDataExtAuthorizeRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtAuthorizeRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Level", m.Level, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeResponse.go
index 44e4669..292e3eb 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtAuthorizeResponse.go
@@ -161,3 +161,13 @@ func (m *ApduDataExtAuthorizeResponse) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m ApduDataExtAuthorizeResponse) String() string {
+	return string(m.Box("ApduDataExtAuthorizeResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtAuthorizeResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Level", m.Level, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressRead.go
index b4329f3..f342930 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressRead) UnmarshalXML(d *xml.Decoder, start xml.St
 func (m *ApduDataExtDomainAddressRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressRead) String() string {
+	return string(m.Box("ApduDataExtDomainAddressRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressResponse.go
index 1286087..e2546ff 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressResponse) UnmarshalXML(d *xml.Decoder, start xm
 func (m *ApduDataExtDomainAddressResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressResponse) String() string {
+	return string(m.Box("ApduDataExtDomainAddressResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSelectiveRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSelectiveRead.go
index 22f1d82..463a73a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSelectiveRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSelectiveRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressSelectiveRead) UnmarshalXML(d *xml.Decoder, sta
 func (m *ApduDataExtDomainAddressSelectiveRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressSelectiveRead) String() string {
+	return string(m.Box("ApduDataExtDomainAddressSelectiveRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressSelectiveRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberRead.go
index da7d61b..94cc19c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressSerialNumberRead) UnmarshalXML(d *xml.Decoder,
 func (m *ApduDataExtDomainAddressSerialNumberRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressSerialNumberRead) String() string {
+	return string(m.Box("ApduDataExtDomainAddressSerialNumberRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressSerialNumberRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberResponse.go
index fda42b5..db7c278 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressSerialNumberResponse) UnmarshalXML(d *xml.Decod
 func (m *ApduDataExtDomainAddressSerialNumberResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressSerialNumberResponse) String() string {
+	return string(m.Box("ApduDataExtDomainAddressSerialNumberResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressSerialNumberResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberWrite.go
index dfcc9e2..e63b5a7 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressSerialNumberWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressSerialNumberWrite) UnmarshalXML(d *xml.Decoder,
 func (m *ApduDataExtDomainAddressSerialNumberWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressSerialNumberWrite) String() string {
+	return string(m.Box("ApduDataExtDomainAddressSerialNumberWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressSerialNumberWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressWrite.go
index 37ca7d2..1834cd5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtDomainAddressWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtDomainAddressWrite) UnmarshalXML(d *xml.Decoder, start xml.S
 func (m *ApduDataExtDomainAddressWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtDomainAddressWrite) String() string {
+	return string(m.Box("ApduDataExtDomainAddressWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtDomainAddressWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtFileStreamInfoReport.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtFileStreamInfoReport.go
index d2975a1..0ad0935 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtFileStreamInfoReport.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtFileStreamInfoReport.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtFileStreamInfoReport) UnmarshalXML(d *xml.Decoder, start xml
 func (m *ApduDataExtFileStreamInfoReport) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtFileStreamInfoReport) String() string {
+	return string(m.Box("ApduDataExtFileStreamInfoReport", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtFileStreamInfoReport) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueInfoReport.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueInfoReport.go
index 66de92c..89abaf7 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueInfoReport.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueInfoReport.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtGroupPropertyValueInfoReport) UnmarshalXML(d *xml.Decoder, s
 func (m *ApduDataExtGroupPropertyValueInfoReport) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtGroupPropertyValueInfoReport) String() string {
+	return string(m.Box("ApduDataExtGroupPropertyValueInfoReport", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtGroupPropertyValueInfoReport) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueRead.go
index 9dfe6fa..472e1bc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtGroupPropertyValueRead) UnmarshalXML(d *xml.Decoder, start x
 func (m *ApduDataExtGroupPropertyValueRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtGroupPropertyValueRead) String() string {
+	return string(m.Box("ApduDataExtGroupPropertyValueRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtGroupPropertyValueRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueResponse.go
index 59a6034..a24dcac 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtGroupPropertyValueResponse) UnmarshalXML(d *xml.Decoder, sta
 func (m *ApduDataExtGroupPropertyValueResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtGroupPropertyValueResponse) String() string {
+	return string(m.Box("ApduDataExtGroupPropertyValueResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtGroupPropertyValueResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueWrite.go
index dadc3df..2d54907 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtGroupPropertyValueWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtGroupPropertyValueWrite) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtGroupPropertyValueWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtGroupPropertyValueWrite) String() string {
+	return string(m.Box("ApduDataExtGroupPropertyValueWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtGroupPropertyValueWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberRead.go
index 72f6df8..c331a58 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtIndividualAddressSerialNumberRead) UnmarshalXML(d *xml.Decod
 func (m *ApduDataExtIndividualAddressSerialNumberRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtIndividualAddressSerialNumberRead) String() string {
+	return string(m.Box("ApduDataExtIndividualAddressSerialNumberRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtIndividualAddressSerialNumberRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberResponse.go
index 47f93b5..7514a48 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtIndividualAddressSerialNumberResponse) UnmarshalXML(d *xml.D
 func (m *ApduDataExtIndividualAddressSerialNumberResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtIndividualAddressSerialNumberResponse) String() string {
+	return string(m.Box("ApduDataExtIndividualAddressSerialNumberResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtIndividualAddressSerialNumberResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberWrite.go
index f2e08bd..3319a5f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtIndividualAddressSerialNumberWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtIndividualAddressSerialNumberWrite) UnmarshalXML(d *xml.Deco
 func (m *ApduDataExtIndividualAddressSerialNumberWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtIndividualAddressSerialNumberWrite) String() string {
+	return string(m.Box("ApduDataExtIndividualAddressSerialNumberWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtIndividualAddressSerialNumberWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyResponse.go
index 68cd5a8..ff8de1b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtKeyResponse) UnmarshalXML(d *xml.Decoder, start xml.StartEle
 func (m *ApduDataExtKeyResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtKeyResponse) String() string {
+	return string(m.Box("ApduDataExtKeyResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtKeyResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyWrite.go
index 01a141d..802356b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtKeyWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtKeyWrite) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *ApduDataExtKeyWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtKeyWrite) String() string {
+	return string(m.Box("ApduDataExtKeyWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtKeyWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkRead.go
index d33cbd0..d941941 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtLinkRead) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *ApduDataExtLinkRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtLinkRead) String() string {
+	return string(m.Box("ApduDataExtLinkRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtLinkRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkResponse.go
index 3944fc6..58b5454 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtLinkResponse) UnmarshalXML(d *xml.Decoder, start xml.StartEl
 func (m *ApduDataExtLinkResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtLinkResponse) String() string {
+	return string(m.Box("ApduDataExtLinkResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtLinkResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkWrite.go
index b80cbde..e8ca8ee 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtLinkWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtLinkWrite) UnmarshalXML(d *xml.Decoder, start xml.StartEleme
 func (m *ApduDataExtLinkWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtLinkWrite) String() string {
+	return string(m.Box("ApduDataExtLinkWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtLinkWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtMemoryBitWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtMemoryBitWrite.go
index 39f24a1..6c148b2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtMemoryBitWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtMemoryBitWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtMemoryBitWrite) UnmarshalXML(d *xml.Decoder, start xml.Start
 func (m *ApduDataExtMemoryBitWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtMemoryBitWrite) String() string {
+	return string(m.Box("ApduDataExtMemoryBitWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtMemoryBitWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterRead.go
index 1968598..0584db4 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtNetworkParameterRead) UnmarshalXML(d *xml.Decoder, start xml
 func (m *ApduDataExtNetworkParameterRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtNetworkParameterRead) String() string {
+	return string(m.Box("ApduDataExtNetworkParameterRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtNetworkParameterRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterResponse.go
index dba48ee..0d1159b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtNetworkParameterResponse) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtNetworkParameterResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtNetworkParameterResponse) String() string {
+	return string(m.Box("ApduDataExtNetworkParameterResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtNetworkParameterResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterWrite.go
index 2a886f3..6fa0206 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtNetworkParameterWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtNetworkParameterWrite) UnmarshalXML(d *xml.Decoder, start xm
 func (m *ApduDataExtNetworkParameterWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtNetworkParameterWrite) String() string {
+	return string(m.Box("ApduDataExtNetworkParameterWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtNetworkParameterWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtOpenRoutingTableRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtOpenRoutingTableRequest.go
index 2a630bb..e226b26 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtOpenRoutingTableRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtOpenRoutingTableRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtOpenRoutingTableRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtOpenRoutingTableRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtOpenRoutingTableRequest) String() string {
+	return string(m.Box("ApduDataExtOpenRoutingTableRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtOpenRoutingTableRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionRead.go
index 11ca451..0e4042b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionRead.go
@@ -217,3 +217,15 @@ func (m *ApduDataExtPropertyDescriptionRead) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m ApduDataExtPropertyDescriptionRead) String() string {
+	return string(m.Box("ApduDataExtPropertyDescriptionRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtPropertyDescriptionRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectIndex", m.ObjectIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Index", m.Index, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
index a9ce065..6b10830 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
@@ -405,3 +405,20 @@ func (m *ApduDataExtPropertyDescriptionResponse) MarshalXML(e *xml.Encoder, star
 	}
 	return nil
 }
+
+func (m ApduDataExtPropertyDescriptionResponse) String() string {
+	return string(m.Box("ApduDataExtPropertyDescriptionResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtPropertyDescriptionResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectIndex", m.ObjectIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Index", m.Index, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteEnabled", m.WriteEnabled, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyDataType", m.PropertyDataType, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaxNrOfElements", m.MaxNrOfElements, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadLevel", m.ReadLevel, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteLevel", m.WriteLevel, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueRead.go
index 8ed8d8f..ad176a2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueRead.go
@@ -245,3 +245,16 @@ func (m *ApduDataExtPropertyValueRead) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m ApduDataExtPropertyValueRead) String() string {
+	return string(m.Box("ApduDataExtPropertyValueRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtPropertyValueRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectIndex", m.ObjectIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Count", m.Count, width-2))
+	boxes = append(boxes, utils.BoxAnything("Index", m.Index, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go
index b76c503..e1f2d9f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueResponse.go
@@ -289,3 +289,17 @@ func (m *ApduDataExtPropertyValueResponse) MarshalXML(e *xml.Encoder, start xml.
 	}
 	return nil
 }
+
+func (m ApduDataExtPropertyValueResponse) String() string {
+	return string(m.Box("ApduDataExtPropertyValueResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtPropertyValueResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectIndex", m.ObjectIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Count", m.Count, width-2))
+	boxes = append(boxes, utils.BoxAnything("Index", m.Index, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go
index 16e35b6..4ab5ec9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyValueWrite.go
@@ -289,3 +289,17 @@ func (m *ApduDataExtPropertyValueWrite) MarshalXML(e *xml.Encoder, start xml.Sta
 	}
 	return nil
 }
+
+func (m ApduDataExtPropertyValueWrite) String() string {
+	return string(m.Box("ApduDataExtPropertyValueWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtPropertyValueWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ObjectIndex", m.ObjectIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Count", m.Count, width-2))
+	boxes = append(boxes, utils.BoxAnything("Index", m.Index, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryRequest.go
index 0bb8d2c..2b00c31 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtReadRouterMemoryRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtReadRouterMemoryRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtReadRouterMemoryRequest) String() string {
+	return string(m.Box("ApduDataExtReadRouterMemoryRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtReadRouterMemoryRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryResponse.go
index 0d7b464..2a6571d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterMemoryResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtReadRouterMemoryResponse) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtReadRouterMemoryResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtReadRouterMemoryResponse) String() string {
+	return string(m.Box("ApduDataExtReadRouterMemoryResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtReadRouterMemoryResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusRequest.go
index 1e7f592..2fd8618 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtReadRouterStatusRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtReadRouterStatusRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtReadRouterStatusRequest) String() string {
+	return string(m.Box("ApduDataExtReadRouterStatusRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtReadRouterStatusRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusResponse.go
index 6ff04ca..3899d05 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRouterStatusResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtReadRouterStatusResponse) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtReadRouterStatusResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtReadRouterStatusResponse) String() string {
+	return string(m.Box("ApduDataExtReadRouterStatusResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtReadRouterStatusResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableRequest.go
index 04d8204..66ade74 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtReadRoutingTableRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtReadRoutingTableRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtReadRoutingTableRequest) String() string {
+	return string(m.Box("ApduDataExtReadRoutingTableRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtReadRoutingTableRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableResponse.go
index 43814fd..e7db4e2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtReadRoutingTableResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtReadRoutingTableResponse) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtReadRoutingTableResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtReadRoutingTableResponse) String() string {
+	return string(m.Box("ApduDataExtReadRoutingTableResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtReadRoutingTableResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterMemoryRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterMemoryRequest.go
index 0e8ec51..a6caf4a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterMemoryRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterMemoryRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtWriteRouterMemoryRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtWriteRouterMemoryRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtWriteRouterMemoryRequest) String() string {
+	return string(m.Box("ApduDataExtWriteRouterMemoryRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtWriteRouterMemoryRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterStatusRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterStatusRequest.go
index 36783d2..afc9b5d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterStatusRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRouterStatusRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtWriteRouterStatusRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtWriteRouterStatusRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtWriteRouterStatusRequest) String() string {
+	return string(m.Box("ApduDataExtWriteRouterStatusRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtWriteRouterStatusRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRoutingTableRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRoutingTableRequest.go
index 91f3bf2..caece40 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRoutingTableRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtWriteRoutingTableRequest.go
@@ -132,3 +132,12 @@ func (m *ApduDataExtWriteRoutingTableRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ApduDataExtWriteRoutingTableRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataExtWriteRoutingTableRequest) String() string {
+	return string(m.Box("ApduDataExtWriteRoutingTableRequest", utils.DefaultWidth*2))
+}
+
+func (m ApduDataExtWriteRoutingTableRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueRead.go
index e7c4fe0..0912545 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueRead.go
@@ -159,3 +159,12 @@ func (m *ApduDataGroupValueRead) UnmarshalXML(d *xml.Decoder, start xml.StartEle
 func (m *ApduDataGroupValueRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataGroupValueRead) String() string {
+	return string(m.Box("ApduDataGroupValueRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataGroupValueRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go
index 48f6931..5aefda8 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueResponse.go
@@ -208,3 +208,14 @@ func (m *ApduDataGroupValueResponse) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m ApduDataGroupValueResponse) String() string {
+	return string(m.Box("ApduDataGroupValueResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataGroupValueResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DataFirstByte", m.DataFirstByte, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go
index 393bb07..48718da 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataGroupValueWrite.go
@@ -208,3 +208,14 @@ func (m *ApduDataGroupValueWrite) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m ApduDataGroupValueWrite) String() string {
+	return string(m.Box("ApduDataGroupValueWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataGroupValueWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DataFirstByte", m.DataFirstByte, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressRead.go
index dab17a3..146ac01 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressRead.go
@@ -132,3 +132,12 @@ func (m *ApduDataIndividualAddressRead) UnmarshalXML(d *xml.Decoder, start xml.S
 func (m *ApduDataIndividualAddressRead) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataIndividualAddressRead) String() string {
+	return string(m.Box("ApduDataIndividualAddressRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataIndividualAddressRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressResponse.go
index c863ddf..5d8e3fe 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressResponse.go
@@ -132,3 +132,12 @@ func (m *ApduDataIndividualAddressResponse) UnmarshalXML(d *xml.Decoder, start x
 func (m *ApduDataIndividualAddressResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataIndividualAddressResponse) String() string {
+	return string(m.Box("ApduDataIndividualAddressResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataIndividualAddressResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressWrite.go
index f875c88..d4e35c0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataIndividualAddressWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataIndividualAddressWrite) UnmarshalXML(d *xml.Decoder, start xml.
 func (m *ApduDataIndividualAddressWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataIndividualAddressWrite) String() string {
+	return string(m.Box("ApduDataIndividualAddressWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataIndividualAddressWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryRead.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryRead.go
index ebae1b0..72482e6 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryRead.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryRead.go
@@ -189,3 +189,14 @@ func (m *ApduDataMemoryRead) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m ApduDataMemoryRead) String() string {
+	return string(m.Box("ApduDataMemoryRead", utils.DefaultWidth*2))
+}
+
+func (m ApduDataMemoryRead) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NumBytes", m.NumBytes, width-2))
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go
index ffba5df..1834338 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryResponse.go
@@ -222,3 +222,14 @@ func (m *ApduDataMemoryResponse) MarshalXML(e *xml.Encoder, start xml.StartEleme
 	}
 	return nil
 }
+
+func (m ApduDataMemoryResponse) String() string {
+	return string(m.Box("ApduDataMemoryResponse", utils.DefaultWidth*2))
+}
+
+func (m ApduDataMemoryResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryWrite.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryWrite.go
index 9931d19..74f3c83 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryWrite.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataMemoryWrite.go
@@ -132,3 +132,12 @@ func (m *ApduDataMemoryWrite) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *ApduDataMemoryWrite) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataMemoryWrite) String() string {
+	return string(m.Box("ApduDataMemoryWrite", utils.DefaultWidth*2))
+}
+
+func (m ApduDataMemoryWrite) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataOther.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataOther.go
index e4c5558..2efe048 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataOther.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataOther.go
@@ -160,3 +160,13 @@ func (m *ApduDataOther) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m ApduDataOther) String() string {
+	return string(m.Box("ApduDataOther", utils.DefaultWidth*2))
+}
+
+func (m ApduDataOther) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ExtendedApdu", m.ExtendedApdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataRestart.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataRestart.go
index 714e864..72e145c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataRestart.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataRestart.go
@@ -132,3 +132,12 @@ func (m *ApduDataRestart) UnmarshalXML(d *xml.Decoder, start xml.StartElement) e
 func (m *ApduDataRestart) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataRestart) String() string {
+	return string(m.Box("ApduDataRestart", utils.DefaultWidth*2))
+}
+
+func (m ApduDataRestart) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataUserMessage.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataUserMessage.go
index 86f0976..dce7ed0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataUserMessage.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataUserMessage.go
@@ -132,3 +132,12 @@ func (m *ApduDataUserMessage) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *ApduDataUserMessage) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ApduDataUserMessage) String() string {
+	return string(m.Box("ApduDataUserMessage", utils.DefaultWidth*2))
+}
+
+func (m ApduDataUserMessage) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
index 4a079a7..6d327d9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
@@ -509,3 +509,12 @@ func (m *CEMI) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m CEMI) String() string {
+	return string(m.Box("CEMI", utils.DefaultWidth*2))
+}
+
+func (m CEMI) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index 189ffc7..0a69681 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -215,3 +215,12 @@ func (m *CEMIAdditionalInformation) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m CEMIAdditionalInformation) String() string {
+	return string(m.Box("CEMIAdditionalInformation", utils.DefaultWidth*2))
+}
+
+func (m CEMIAdditionalInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index c61b0d6..f4c1f4f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -323,3 +323,18 @@ func (m *CEMIAdditionalInformationBusmonitorInfo) MarshalXML(e *xml.Encoder, sta
 	}
 	return nil
 }
+
+func (m CEMIAdditionalInformationBusmonitorInfo) String() string {
+	return string(m.Box("CEMIAdditionalInformationBusmonitorInfo", utils.DefaultWidth*2))
+}
+
+func (m CEMIAdditionalInformationBusmonitorInfo) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("FrameErrorFlag", m.FrameErrorFlag, width-2))
+	boxes = append(boxes, utils.BoxAnything("BitErrorFlag", m.BitErrorFlag, width-2))
+	boxes = append(boxes, utils.BoxAnything("ParityErrorFlag", m.ParityErrorFlag, width-2))
+	boxes = append(boxes, utils.BoxAnything("UnknownFlag", m.UnknownFlag, width-2))
+	boxes = append(boxes, utils.BoxAnything("LostFlag", m.LostFlag, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceNumber", m.SequenceNumber, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
index 56fde95..eebca7c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
@@ -182,3 +182,13 @@ func (m *CEMIAdditionalInformationRelativeTimestamp) MarshalXML(e *xml.Encoder,
 	}
 	return nil
 }
+
+func (m CEMIAdditionalInformationRelativeTimestamp) String() string {
+	return string(m.Box("CEMIAdditionalInformationRelativeTimestamp", utils.DefaultWidth*2))
+}
+
+func (m CEMIAdditionalInformationRelativeTimestamp) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("RelativeTimestamp", m.RelativeTimestamp, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ChannelInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ChannelInformation.go
index c53bfbc..ed5c8ff 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ChannelInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ChannelInformation.go
@@ -165,3 +165,14 @@ func (m *ChannelInformation) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m ChannelInformation) String() string {
+	return string(m.Box("ChannelInformation", utils.DefaultWidth*2))
+}
+
+func (m ChannelInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NumChannels", m.NumChannels, width-2))
+	boxes = append(boxes, utils.BoxAnything("ChannelCode", m.ChannelCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
index cf0ec8c..77def77 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
@@ -213,3 +213,12 @@ func (m *ComObjectTable) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m ComObjectTable) String() string {
+	return string(m.Box("ComObjectTable", utils.DefaultWidth*2))
+}
+
+func (m ComObjectTable) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
index fdbdb3d..a0807df 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
@@ -235,3 +235,15 @@ func (m *ComObjectTableRealisationType1) MarshalXML(e *xml.Encoder, start xml.St
 	}
 	return nil
 }
+
+func (m ComObjectTableRealisationType1) String() string {
+	return string(m.Box("ComObjectTableRealisationType1", utils.DefaultWidth*2))
+}
+
+func (m ComObjectTableRealisationType1) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NumEntries", m.NumEntries, width-2))
+	boxes = append(boxes, utils.BoxAnything("RamFlagsTablePointer", m.RamFlagsTablePointer, width-2))
+	boxes = append(boxes, utils.BoxAnything("ComObjectDescriptors", m.ComObjectDescriptors, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
index 8ce5d18..47769b0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
@@ -235,3 +235,15 @@ func (m *ComObjectTableRealisationType2) MarshalXML(e *xml.Encoder, start xml.St
 	}
 	return nil
 }
+
+func (m ComObjectTableRealisationType2) String() string {
+	return string(m.Box("ComObjectTableRealisationType2", utils.DefaultWidth*2))
+}
+
+func (m ComObjectTableRealisationType2) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NumEntries", m.NumEntries, width-2))
+	boxes = append(boxes, utils.BoxAnything("RamFlagsTablePointer", m.RamFlagsTablePointer, width-2))
+	boxes = append(boxes, utils.BoxAnything("ComObjectDescriptors", m.ComObjectDescriptors, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
index ebbf1d2..69d168b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
@@ -160,3 +160,13 @@ func (m *ComObjectTableRealisationType6) MarshalXML(e *xml.Encoder, start xml.St
 	}
 	return nil
 }
+
+func (m ComObjectTableRealisationType6) String() string {
+	return string(m.Box("ComObjectTableRealisationType6", utils.DefaultWidth*2))
+}
+
+func (m ComObjectTableRealisationType6) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ComObjectDescriptors", m.ComObjectDescriptors, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
index c45e48e..89e98dd 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
@@ -214,3 +214,15 @@ func (m *ConnectionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m ConnectionRequest) String() string {
+	return string(m.Box("ConnectionRequest", utils.DefaultWidth*2))
+}
+
+func (m ConnectionRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HpaiDiscoveryEndpoint", m.HpaiDiscoveryEndpoint, width-2))
+	boxes = append(boxes, utils.BoxAnything("HpaiDataEndpoint", m.HpaiDataEndpoint, width-2))
+	boxes = append(boxes, utils.BoxAnything("ConnectionRequestInformation", m.ConnectionRequestInformation, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
index a5e66d8..69f3600 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -232,3 +232,12 @@ func (m *ConnectionRequestInformation) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m ConnectionRequestInformation) String() string {
+	return string(m.Box("ConnectionRequestInformation", utils.DefaultWidth*2))
+}
+
+func (m ConnectionRequestInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
index 6d0b861..e0351cd 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
@@ -132,3 +132,12 @@ func (m *ConnectionRequestInformationDeviceManagement) UnmarshalXML(d *xml.Decod
 func (m *ConnectionRequestInformationDeviceManagement) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ConnectionRequestInformationDeviceManagement) String() string {
+	return string(m.Box("ConnectionRequestInformationDeviceManagement", utils.DefaultWidth*2))
+}
+
+func (m ConnectionRequestInformationDeviceManagement) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
index facf467..0cd669f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
@@ -186,3 +186,13 @@ func (m *ConnectionRequestInformationTunnelConnection) MarshalXML(e *xml.Encoder
 	}
 	return nil
 }
+
+func (m ConnectionRequestInformationTunnelConnection) String() string {
+	return string(m.Box("ConnectionRequestInformationTunnelConnection", utils.DefaultWidth*2))
+}
+
+func (m ConnectionRequestInformationTunnelConnection) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("KnxLayer", m.KnxLayer, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
index 010088d..e1129c5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
@@ -262,3 +262,16 @@ func (m *ConnectionResponse) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m ConnectionResponse) String() string {
+	return string(m.Box("ConnectionResponse", utils.DefaultWidth*2))
+}
+
+func (m ConnectionResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	boxes = append(boxes, utils.BoxAnything("HpaiDataEndpoint", m.HpaiDataEndpoint, width-2))
+	boxes = append(boxes, utils.BoxAnything("ConnectionResponseDataBlock", m.ConnectionResponseDataBlock, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 974659e..e2710cd 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -232,3 +232,12 @@ func (m *ConnectionResponseDataBlock) MarshalXML(e *xml.Encoder, start xml.Start
 	}
 	return nil
 }
+
+func (m ConnectionResponseDataBlock) String() string {
+	return string(m.Box("ConnectionResponseDataBlock", utils.DefaultWidth*2))
+}
+
+func (m ConnectionResponseDataBlock) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
index e99009d..fa06a6b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
@@ -132,3 +132,12 @@ func (m *ConnectionResponseDataBlockDeviceManagement) UnmarshalXML(d *xml.Decode
 func (m *ConnectionResponseDataBlockDeviceManagement) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ConnectionResponseDataBlockDeviceManagement) String() string {
+	return string(m.Box("ConnectionResponseDataBlockDeviceManagement", utils.DefaultWidth*2))
+}
+
+func (m ConnectionResponseDataBlockDeviceManagement) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
index fe82714..cbd8ca5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
@@ -160,3 +160,13 @@ func (m *ConnectionResponseDataBlockTunnelConnection) MarshalXML(e *xml.Encoder,
 	}
 	return nil
 }
+
+func (m ConnectionResponseDataBlockTunnelConnection) String() string {
+	return string(m.Box("ConnectionResponseDataBlockTunnelConnection", utils.DefaultWidth*2))
+}
+
+func (m ConnectionResponseDataBlockTunnelConnection) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("KnxAddress", m.KnxAddress, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
index 024f010..2e6ae7c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
@@ -214,3 +214,14 @@ func (m *ConnectionStateRequest) MarshalXML(e *xml.Encoder, start xml.StartEleme
 	}
 	return nil
 }
+
+func (m ConnectionStateRequest) String() string {
+	return string(m.Box("ConnectionStateRequest", utils.DefaultWidth*2))
+}
+
+func (m ConnectionStateRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("HpaiControlEndpoint", m.HpaiControlEndpoint, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
index a023f6d..e5354f8 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
@@ -188,3 +188,14 @@ func (m *ConnectionStateResponse) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m ConnectionStateResponse) String() string {
+	return string(m.Box("ConnectionStateResponse", utils.DefaultWidth*2))
+}
+
+func (m ConnectionStateResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
index 0371120..4a3b9a7 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
@@ -394,3 +394,21 @@ func (m *DIBDeviceInfo) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m DIBDeviceInfo) String() string {
+	return string(m.Box("DIBDeviceInfo", utils.DefaultWidth*2))
+}
+
+func (m DIBDeviceInfo) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DescriptionType", m.DescriptionType, width-2))
+	boxes = append(boxes, utils.BoxAnything("KnxMedium", m.KnxMedium, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceStatus", m.DeviceStatus, width-2))
+	boxes = append(boxes, utils.BoxAnything("KnxAddress", m.KnxAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProjectInstallationIdentifier", m.ProjectInstallationIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("KnxNetIpDeviceSerialNumber", m.KnxNetIpDeviceSerialNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("KnxNetIpDeviceMulticastAddress", m.KnxNetIpDeviceMulticastAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("KnxNetIpDeviceMacAddress", m.KnxNetIpDeviceMacAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceFriendlyName", m.DeviceFriendlyName, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
index 3011649..60c5de0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
@@ -205,3 +205,14 @@ func (m *DIBSuppSvcFamilies) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m DIBSuppSvcFamilies) String() string {
+	return string(m.Box("DIBSuppSvcFamilies", utils.DefaultWidth*2))
+}
+
+func (m DIBSuppSvcFamilies) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DescriptionType", m.DescriptionType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ServiceIds", m.ServiceIds, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
index c616e04..5720de2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
@@ -160,3 +160,13 @@ func (m *DescriptionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m DescriptionRequest) String() string {
+	return string(m.Box("DescriptionRequest", utils.DefaultWidth*2))
+}
+
+func (m DescriptionRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HpaiControlEndpoint", m.HpaiControlEndpoint, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
index 2cf00c1..c4bdfdf 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
@@ -187,3 +187,14 @@ func (m *DescriptionResponse) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m DescriptionResponse) String() string {
+	return string(m.Box("DescriptionResponse", utils.DefaultWidth*2))
+}
+
+func (m DescriptionResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DibDeviceInfo", m.DibDeviceInfo, width-2))
+	boxes = append(boxes, utils.BoxAnything("DibSuppSvcFamilies", m.DibSuppSvcFamilies, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
index 31b76d2..3f417c3 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
@@ -160,3 +160,13 @@ func (m *DeviceConfigurationAck) MarshalXML(e *xml.Encoder, start xml.StartEleme
 	}
 	return nil
 }
+
+func (m DeviceConfigurationAck) String() string {
+	return string(m.Box("DeviceConfigurationAck", utils.DefaultWidth*2))
+}
+
+func (m DeviceConfigurationAck) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DeviceConfigurationAckDataBlock", m.DeviceConfigurationAckDataBlock, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
index 6223e3e..7bedb6b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
@@ -207,3 +207,15 @@ func (m *DeviceConfigurationAckDataBlock) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m DeviceConfigurationAckDataBlock) String() string {
+	return string(m.Box("DeviceConfigurationAckDataBlock", utils.DefaultWidth*2))
+}
+
+func (m DeviceConfigurationAckDataBlock) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceCounter", m.SequenceCounter, width-2))
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
index bd87f80..866ecff 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
@@ -187,3 +187,14 @@ func (m *DeviceConfigurationRequest) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m DeviceConfigurationRequest) String() string {
+	return string(m.Box("DeviceConfigurationRequest", utils.DefaultWidth*2))
+}
+
+func (m DeviceConfigurationRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DeviceConfigurationRequestDataBlock", m.DeviceConfigurationRequestDataBlock, width-2))
+	boxes = append(boxes, utils.BoxAnything("Cemi", m.Cemi, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
index beab1a4..9bd97dc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
@@ -208,3 +208,14 @@ func (m *DeviceConfigurationRequestDataBlock) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m DeviceConfigurationRequestDataBlock) String() string {
+	return string(m.Box("DeviceConfigurationRequestDataBlock", utils.DefaultWidth*2))
+}
+
+func (m DeviceConfigurationRequestDataBlock) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceCounter", m.SequenceCounter, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorType2.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorType2.go
index ffb3102..c1c50ca 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorType2.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorType2.go
@@ -369,3 +369,22 @@ func (m *DeviceDescriptorType2) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m DeviceDescriptorType2) String() string {
+	return string(m.Box("DeviceDescriptorType2", utils.DefaultWidth*2))
+}
+
+func (m DeviceDescriptorType2) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ManufacturerId", m.ManufacturerId, width-2))
+	boxes = append(boxes, utils.BoxAnything("DeviceType", m.DeviceType, width-2))
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadSupported", m.ReadSupported, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteSupported", m.WriteSupported, width-2))
+	boxes = append(boxes, utils.BoxAnything("LogicalTagBase", m.LogicalTagBase, width-2))
+	boxes = append(boxes, utils.BoxAnything("ChannelInfo1", m.ChannelInfo1, width-2))
+	boxes = append(boxes, utils.BoxAnything("ChannelInfo2", m.ChannelInfo2, width-2))
+	boxes = append(boxes, utils.BoxAnything("ChannelInfo3", m.ChannelInfo3, width-2))
+	boxes = append(boxes, utils.BoxAnything("ChannelInfo4", m.ChannelInfo4, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
index 864938a..066144a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
@@ -165,3 +165,13 @@ func (m *DeviceStatus) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m DeviceStatus) String() string {
+	return string(m.Box("DeviceStatus", utils.DefaultWidth*2))
+}
+
+func (m DeviceStatus) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ProgramMode", m.ProgramMode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
index 116432c..72b1c5f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
@@ -214,3 +214,14 @@ func (m *DisconnectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m DisconnectRequest) String() string {
+	return string(m.Box("DisconnectRequest", utils.DefaultWidth*2))
+}
+
+func (m DisconnectRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("HpaiControlEndpoint", m.HpaiControlEndpoint, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
index c2bda66..a663313 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
@@ -188,3 +188,14 @@ func (m *DisconnectResponse) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m DisconnectResponse) String() string {
+	return string(m.Box("DisconnectResponse", utils.DefaultWidth*2))
+}
+
+func (m DisconnectResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
index edda312..fceb8fb 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
@@ -345,3 +345,20 @@ func (m *GroupObjectDescriptorRealisationType1) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m GroupObjectDescriptorRealisationType1) String() string {
+	return string(m.Box("GroupObjectDescriptorRealisationType1", utils.DefaultWidth*2))
+}
+
+func (m GroupObjectDescriptorRealisationType1) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DataPointer", m.DataPointer, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitEnable", m.TransmitEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("SegmentSelectorEnable", m.SegmentSelectorEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteEnable", m.WriteEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadEnable", m.ReadEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("CommunicationEnable", m.CommunicationEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("Priority", m.Priority, width-2))
+	boxes = append(boxes, utils.BoxAnything("ValueType", m.ValueType, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType2.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType2.go
index c118c45..17e6455 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType2.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType2.go
@@ -345,3 +345,21 @@ func (m *GroupObjectDescriptorRealisationType2) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m GroupObjectDescriptorRealisationType2) String() string {
+	return string(m.Box("GroupObjectDescriptorRealisationType2", utils.DefaultWidth*2))
+}
+
+func (m GroupObjectDescriptorRealisationType2) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DataPointer", m.DataPointer, width-2))
+	boxes = append(boxes, utils.BoxAnything("UpdateEnable", m.UpdateEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitEnable", m.TransmitEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("SegmentSelectorEnable", m.SegmentSelectorEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteEnable", m.WriteEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadEnable", m.ReadEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("CommunicationEnable", m.CommunicationEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("Priority", m.Priority, width-2))
+	boxes = append(boxes, utils.BoxAnything("ValueType", m.ValueType, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType6.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType6.go
index fe3ec08..cdd8595 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType6.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType6.go
@@ -112,3 +112,12 @@ func (m *GroupObjectDescriptorRealisationType6) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m GroupObjectDescriptorRealisationType6) String() string {
+	return string(m.Box("GroupObjectDescriptorRealisationType6", utils.DefaultWidth*2))
+}
+
+func (m GroupObjectDescriptorRealisationType6) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType7.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType7.go
index b52aab9..53d1983 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType7.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType7.go
@@ -345,3 +345,21 @@ func (m *GroupObjectDescriptorRealisationType7) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m GroupObjectDescriptorRealisationType7) String() string {
+	return string(m.Box("GroupObjectDescriptorRealisationType7", utils.DefaultWidth*2))
+}
+
+func (m GroupObjectDescriptorRealisationType7) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DataAddress", m.DataAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("UpdateEnable", m.UpdateEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitEnable", m.TransmitEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("SegmentSelectorEnable", m.SegmentSelectorEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteEnable", m.WriteEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadEnable", m.ReadEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("CommunicationEnable", m.CommunicationEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("Priority", m.Priority, width-2))
+	boxes = append(boxes, utils.BoxAnything("ValueType", m.ValueType, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationTypeB.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationTypeB.go
index 924377e..33f490a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationTypeB.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationTypeB.go
@@ -319,3 +319,20 @@ func (m *GroupObjectDescriptorRealisationTypeB) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m GroupObjectDescriptorRealisationTypeB) String() string {
+	return string(m.Box("GroupObjectDescriptorRealisationTypeB", utils.DefaultWidth*2))
+}
+
+func (m GroupObjectDescriptorRealisationTypeB) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("UpdateEnable", m.UpdateEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransmitEnable", m.TransmitEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("SegmentSelectorEnable", m.SegmentSelectorEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteEnable", m.WriteEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadEnable", m.ReadEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("CommunicationEnable", m.CommunicationEnable, width-2))
+	boxes = append(boxes, utils.BoxAnything("Priority", m.Priority, width-2))
+	boxes = append(boxes, utils.BoxAnything("ValueType", m.ValueType, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
index 0955fdb..db7f0a9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
@@ -206,3 +206,15 @@ func (m *HPAIControlEndpoint) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m HPAIControlEndpoint) String() string {
+	return string(m.Box("HPAIControlEndpoint", utils.DefaultWidth*2))
+}
+
+func (m HPAIControlEndpoint) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HostProtocolCode", m.HostProtocolCode, width-2))
+	boxes = append(boxes, utils.BoxAnything("IpAddress", m.IpAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("IpPort", m.IpPort, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
index a7de4f5..132652f 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
@@ -206,3 +206,15 @@ func (m *HPAIDataEndpoint) MarshalXML(e *xml.Encoder, start xml.StartElement) er
 	}
 	return nil
 }
+
+func (m HPAIDataEndpoint) String() string {
+	return string(m.Box("HPAIDataEndpoint", utils.DefaultWidth*2))
+}
+
+func (m HPAIDataEndpoint) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HostProtocolCode", m.HostProtocolCode, width-2))
+	boxes = append(boxes, utils.BoxAnything("IpAddress", m.IpAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("IpPort", m.IpPort, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
index 98d4a85..130b849 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
@@ -206,3 +206,15 @@ func (m *HPAIDiscoveryEndpoint) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m HPAIDiscoveryEndpoint) String() string {
+	return string(m.Box("HPAIDiscoveryEndpoint", utils.DefaultWidth*2))
+}
+
+func (m HPAIDiscoveryEndpoint) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HostProtocolCode", m.HostProtocolCode, width-2))
+	boxes = append(boxes, utils.BoxAnything("IpAddress", m.IpAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("IpPort", m.IpPort, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
index 1aa1369..e231817 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
@@ -158,3 +158,13 @@ func (m *IPAddress) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m IPAddress) String() string {
+	return string(m.Box("IPAddress", utils.DefaultWidth*2))
+}
+
+func (m IPAddress) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Addr", m.Addr, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxAddress.go
index a6fe221..844fe4e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxAddress.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxAddress.go
@@ -191,3 +191,15 @@ func (m *KnxAddress) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m KnxAddress) String() string {
+	return string(m.Box("KnxAddress", utils.DefaultWidth*2))
+}
+
+func (m KnxAddress) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MainGroup", m.MainGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("MiddleGroup", m.MiddleGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("SubGroup", m.SubGroup, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go
index 48b8044..216e1c2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress.go
@@ -213,3 +213,12 @@ func (m *KnxGroupAddress) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m KnxGroupAddress) String() string {
+	return string(m.Box("KnxGroupAddress", utils.DefaultWidth*2))
+}
+
+func (m KnxGroupAddress) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress2Level.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress2Level.go
index cf1073f..e50725b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress2Level.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress2Level.go
@@ -189,3 +189,14 @@ func (m *KnxGroupAddress2Level) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m KnxGroupAddress2Level) String() string {
+	return string(m.Box("KnxGroupAddress2Level", utils.DefaultWidth*2))
+}
+
+func (m KnxGroupAddress2Level) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MainGroup", m.MainGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("SubGroup", m.SubGroup, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress3Level.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress3Level.go
index d88c8e0..56a8a24 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress3Level.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddress3Level.go
@@ -217,3 +217,15 @@ func (m *KnxGroupAddress3Level) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m KnxGroupAddress3Level) String() string {
+	return string(m.Box("KnxGroupAddress3Level", utils.DefaultWidth*2))
+}
+
+func (m KnxGroupAddress3Level) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MainGroup", m.MainGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("MiddleGroup", m.MiddleGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("SubGroup", m.SubGroup, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddressFreeLevel.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddressFreeLevel.go
index 035c4b9..20e4220 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddressFreeLevel.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxGroupAddressFreeLevel.go
@@ -161,3 +161,13 @@ func (m *KnxGroupAddressFreeLevel) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m KnxGroupAddressFreeLevel) String() string {
+	return string(m.Box("KnxGroupAddressFreeLevel", utils.DefaultWidth*2))
+}
+
+func (m KnxGroupAddressFreeLevel) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SubGroup", m.SubGroup, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
index ce607a5..1bc0b44 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
@@ -161,3 +161,13 @@ func (m *KnxNetIpCore) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m KnxNetIpCore) String() string {
+	return string(m.Box("KnxNetIpCore", utils.DefaultWidth*2))
+}
+
+func (m KnxNetIpCore) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
index 2d61933..98c9872 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
@@ -161,3 +161,13 @@ func (m *KnxNetIpDeviceManagement) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m KnxNetIpDeviceManagement) String() string {
+	return string(m.Box("KnxNetIpDeviceManagement", utils.DefaultWidth*2))
+}
+
+func (m KnxNetIpDeviceManagement) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
index 14a559e..58afe11 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpMessage.go
@@ -467,3 +467,12 @@ func (m *KnxNetIpMessage) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m KnxNetIpMessage) String() string {
+	return string(m.Box("KnxNetIpMessage", utils.DefaultWidth*2))
+}
+
+func (m KnxNetIpMessage) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpRouting.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpRouting.go
index 7f4345a..6f31e0c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpRouting.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpRouting.go
@@ -161,3 +161,13 @@ func (m *KnxNetIpRouting) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m KnxNetIpRouting) String() string {
+	return string(m.Box("KnxNetIpRouting", utils.DefaultWidth*2))
+}
+
+func (m KnxNetIpRouting) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
index 77e3bfb..c164f89 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
@@ -161,3 +161,13 @@ func (m *KnxNetIpTunneling) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m KnxNetIpTunneling) String() string {
+	return string(m.Box("KnxNetIpTunneling", utils.DefaultWidth*2))
+}
+
+func (m KnxNetIpTunneling) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
index 3117251..9715ca8 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
@@ -161,3 +161,13 @@ func (m *KnxNetObjectServer) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m KnxNetObjectServer) String() string {
+	return string(m.Box("KnxNetObjectServer", utils.DefaultWidth*2))
+}
+
+func (m KnxNetObjectServer) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
index f84ac7b..d524d20 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
@@ -161,3 +161,13 @@ func (m *KnxNetRemoteConfigurationAndDiagnosis) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m KnxNetRemoteConfigurationAndDiagnosis) String() string {
+	return string(m.Box("KnxNetRemoteConfigurationAndDiagnosis", utils.DefaultWidth*2))
+}
+
+func (m KnxNetRemoteConfigurationAndDiagnosis) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
index 85c0466..1883e45 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
@@ -161,3 +161,13 @@ func (m *KnxNetRemoteLogging) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m KnxNetRemoteLogging) String() string {
+	return string(m.Box("KnxNetRemoteLogging", utils.DefaultWidth*2))
+}
+
+func (m KnxNetRemoteLogging) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Version", m.Version, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
index 022c085..8a41239 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
@@ -276,3 +276,16 @@ func (m *LBusmonInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m LBusmonInd) String() string {
+	return string(m.Box("LBusmonInd", utils.DefaultWidth*2))
+}
+
+func (m LBusmonInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformationLength", m.AdditionalInformationLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformation", m.AdditionalInformation, width-2))
+	boxes = append(boxes, utils.BoxAnything("DataFrame", m.DataFrame, width-2))
+	boxes = append(boxes, utils.BoxAnything("Crc", m.Crc, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go
index 734cbdc..7690089 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataCon.go
@@ -239,3 +239,15 @@ func (m *LDataCon) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m LDataCon) String() string {
+	return string(m.Box("LDataCon", utils.DefaultWidth*2))
+}
+
+func (m LDataCon) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformationLength", m.AdditionalInformationLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformation", m.AdditionalInformation, width-2))
+	boxes = append(boxes, utils.BoxAnything("DataFrame", m.DataFrame, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go
index ca454c8..11ff8f1 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataExtended.go
@@ -344,3 +344,18 @@ func (m *LDataExtended) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m LDataExtended) String() string {
+	return string(m.Box("LDataExtended", utils.DefaultWidth*2))
+}
+
+func (m LDataExtended) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("GroupAddress", m.GroupAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("HopCount", m.HopCount, width-2))
+	boxes = append(boxes, utils.BoxAnything("ExtendedFrameFormat", m.ExtendedFrameFormat, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceAddress", m.SourceAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("DestinationAddress", m.DestinationAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Apdu", m.Apdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
index a4557df..dfb2af0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
@@ -376,3 +376,17 @@ func (m *LDataFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m LDataFrame) String() string {
+	return string(m.Box("LDataFrame", utils.DefaultWidth*2))
+}
+
+func (m LDataFrame) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("FrameType", m.FrameType, width-2))
+	boxes = append(boxes, utils.BoxAnything("NotRepeated", m.NotRepeated, width-2))
+	boxes = append(boxes, utils.BoxAnything("Priority", m.Priority, width-2))
+	boxes = append(boxes, utils.BoxAnything("AcknowledgeRequested", m.AcknowledgeRequested, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorFlag", m.ErrorFlag, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameACK.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameACK.go
index 1c7d9a9..00dd869 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameACK.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameACK.go
@@ -141,3 +141,12 @@ func (m *LDataFrameACK) UnmarshalXML(d *xml.Decoder, start xml.StartElement) err
 func (m *LDataFrameACK) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m LDataFrameACK) String() string {
+	return string(m.Box("LDataFrameACK", utils.DefaultWidth*2))
+}
+
+func (m LDataFrameACK) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go
index f4489cc..b8c205b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataInd.go
@@ -239,3 +239,15 @@ func (m *LDataInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m LDataInd) String() string {
+	return string(m.Box("LDataInd", utils.DefaultWidth*2))
+}
+
+func (m LDataInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformationLength", m.AdditionalInformationLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformation", m.AdditionalInformation, width-2))
+	boxes = append(boxes, utils.BoxAnything("DataFrame", m.DataFrame, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go
index 80a0c56..e249a3d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataReq.go
@@ -239,3 +239,15 @@ func (m *LDataReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m LDataReq) String() string {
+	return string(m.Box("LDataReq", utils.DefaultWidth*2))
+}
+
+func (m LDataReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformationLength", m.AdditionalInformationLength, width-2))
+	boxes = append(boxes, utils.BoxAnything("AdditionalInformation", m.AdditionalInformation, width-2))
+	boxes = append(boxes, utils.BoxAnything("DataFrame", m.DataFrame, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go
index 2935bbf..1b804cc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollData.go
@@ -270,3 +270,15 @@ func (m *LPollData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m LPollData) String() string {
+	return string(m.Box("LPollData", utils.DefaultWidth*2))
+}
+
+func (m LPollData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SourceAddress", m.SourceAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("TargetAddress", m.TargetAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("NumberExpectedPollData", m.NumberExpectedPollData, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataCon.go
index a604799..5356081 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataCon.go
@@ -132,3 +132,12 @@ func (m *LPollDataCon) UnmarshalXML(d *xml.Decoder, start xml.StartElement) erro
 func (m *LPollDataCon) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m LPollDataCon) String() string {
+	return string(m.Box("LPollDataCon", utils.DefaultWidth*2))
+}
+
+func (m LPollDataCon) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataReq.go
index 4f37aa2..83a403a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LPollDataReq.go
@@ -132,3 +132,12 @@ func (m *LPollDataReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement) erro
 func (m *LPollDataReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m LPollDataReq) String() string {
+	return string(m.Box("LPollDataReq", utils.DefaultWidth*2))
+}
+
+func (m LPollDataReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawCon.go
index 0ff062b..740f5dc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawCon.go
@@ -132,3 +132,12 @@ func (m *LRawCon) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
 func (m *LRawCon) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m LRawCon) String() string {
+	return string(m.Box("LRawCon", utils.DefaultWidth*2))
+}
+
+func (m LRawCon) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawInd.go
index 9059162..f8ef684 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawInd.go
@@ -132,3 +132,12 @@ func (m *LRawInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
 func (m *LRawInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m LRawInd) String() string {
+	return string(m.Box("LRawInd", utils.DefaultWidth*2))
+}
+
+func (m LRawInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawReq.go
index 7ea39f5..426f657 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LRawReq.go
@@ -132,3 +132,12 @@ func (m *LRawReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
 func (m *LRawReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m LRawReq) String() string {
+	return string(m.Box("LRawReq", utils.DefaultWidth*2))
+}
+
+func (m LRawReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
index 4eb079a..1b00089 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
@@ -158,3 +158,13 @@ func (m *MACAddress) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m MACAddress) String() string {
+	return string(m.Box("MACAddress", utils.DefaultWidth*2))
+}
+
+func (m MACAddress) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Addr", m.Addr, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCommandReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCommandReq.go
index c9194ce..346f533 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCommandReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCommandReq.go
@@ -132,3 +132,12 @@ func (m *MFuncPropCommandReq) UnmarshalXML(d *xml.Decoder, start xml.StartElemen
 func (m *MFuncPropCommandReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MFuncPropCommandReq) String() string {
+	return string(m.Box("MFuncPropCommandReq", utils.DefaultWidth*2))
+}
+
+func (m MFuncPropCommandReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCon.go
index 0f78c08..2028362 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropCon.go
@@ -132,3 +132,12 @@ func (m *MFuncPropCon) UnmarshalXML(d *xml.Decoder, start xml.StartElement) erro
 func (m *MFuncPropCon) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MFuncPropCon) String() string {
+	return string(m.Box("MFuncPropCon", utils.DefaultWidth*2))
+}
+
+func (m MFuncPropCon) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropStateReadReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropStateReadReq.go
index 956e1f2..a04a4ac 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropStateReadReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MFuncPropStateReadReq.go
@@ -132,3 +132,12 @@ func (m *MFuncPropStateReadReq) UnmarshalXML(d *xml.Decoder, start xml.StartElem
 func (m *MFuncPropStateReadReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MFuncPropStateReadReq) String() string {
+	return string(m.Box("MFuncPropStateReadReq", utils.DefaultWidth*2))
+}
+
+func (m MFuncPropStateReadReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropInfoInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropInfoInd.go
index c19556b..f39ec44 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropInfoInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropInfoInd.go
@@ -132,3 +132,12 @@ func (m *MPropInfoInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement) erro
 func (m *MPropInfoInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MPropInfoInd) String() string {
+	return string(m.Box("MPropInfoInd", utils.DefaultWidth*2))
+}
+
+func (m MPropInfoInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadCon.go
index 5a4b111..5ef27b5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadCon.go
@@ -301,3 +301,18 @@ func (m *MPropReadCon) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m MPropReadCon) String() string {
+	return string(m.Box("MPropReadCon", utils.DefaultWidth*2))
+}
+
+func (m MPropReadCon) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("InterfaceObjectType", m.InterfaceObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectInstance", m.ObjectInstance, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("NumberOfElements", m.NumberOfElements, width-2))
+	boxes = append(boxes, utils.BoxAnything("StartIndex", m.StartIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("Unknown", m.Unknown, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadReq.go
index 260cda2..4b06de7 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropReadReq.go
@@ -273,3 +273,17 @@ func (m *MPropReadReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m MPropReadReq) String() string {
+	return string(m.Box("MPropReadReq", utils.DefaultWidth*2))
+}
+
+func (m MPropReadReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("InterfaceObjectType", m.InterfaceObjectType, width-2))
+	boxes = append(boxes, utils.BoxAnything("ObjectInstance", m.ObjectInstance, width-2))
+	boxes = append(boxes, utils.BoxAnything("PropertyId", m.PropertyId, width-2))
+	boxes = append(boxes, utils.BoxAnything("NumberOfElements", m.NumberOfElements, width-2))
+	boxes = append(boxes, utils.BoxAnything("StartIndex", m.StartIndex, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteCon.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteCon.go
index 2dffa90..952ed32 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteCon.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteCon.go
@@ -132,3 +132,12 @@ func (m *MPropWriteCon) UnmarshalXML(d *xml.Decoder, start xml.StartElement) err
 func (m *MPropWriteCon) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MPropWriteCon) String() string {
+	return string(m.Box("MPropWriteCon", utils.DefaultWidth*2))
+}
+
+func (m MPropWriteCon) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteReq.go
index 84dae9c..30575c6 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MPropWriteReq.go
@@ -132,3 +132,12 @@ func (m *MPropWriteReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement) err
 func (m *MPropWriteReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MPropWriteReq) String() string {
+	return string(m.Box("MPropWriteReq", utils.DefaultWidth*2))
+}
+
+func (m MPropWriteReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetInd.go
index bb89e0f..52c5907 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetInd.go
@@ -132,3 +132,12 @@ func (m *MResetInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
 func (m *MResetInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MResetInd) String() string {
+	return string(m.Box("MResetInd", utils.DefaultWidth*2))
+}
+
+func (m MResetInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetReq.go
index 61e2193..d62a691 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/MResetReq.go
@@ -132,3 +132,12 @@ func (m *MResetReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
 func (m *MResetReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m MResetReq) String() string {
+	return string(m.Box("MResetReq", utils.DefaultWidth*2))
+}
+
+func (m MResetReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
index f3e88c6..0ba5b19 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
@@ -165,3 +165,14 @@ func (m *ProjectInstallationIdentifier) MarshalXML(e *xml.Encoder, start xml.Sta
 	}
 	return nil
 }
+
+func (m ProjectInstallationIdentifier) String() string {
+	return string(m.Box("ProjectInstallationIdentifier", utils.DefaultWidth*2))
+}
+
+func (m ProjectInstallationIdentifier) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ProjectNumber", m.ProjectNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("InstallationNumber", m.InstallationNumber, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
index 13f82af..aeaea69 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
@@ -139,3 +139,13 @@ func (m *RelativeTimestamp) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m RelativeTimestamp) String() string {
+	return string(m.Box("RelativeTimestamp", utils.DefaultWidth*2))
+}
+
+func (m RelativeTimestamp) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Timestamp", m.Timestamp, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
index 15ce54f..f792f0c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
@@ -132,3 +132,12 @@ func (m *RoutingIndication) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *RoutingIndication) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m RoutingIndication) String() string {
+	return string(m.Box("RoutingIndication", utils.DefaultWidth*2))
+}
+
+func (m RoutingIndication) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
index 92a71c9..0e1c224 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
@@ -160,3 +160,13 @@ func (m *SearchRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m SearchRequest) String() string {
+	return string(m.Box("SearchRequest", utils.DefaultWidth*2))
+}
+
+func (m SearchRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HpaiIDiscoveryEndpoint", m.HpaiIDiscoveryEndpoint, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
index 60608d7..4d71067 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
@@ -214,3 +214,15 @@ func (m *SearchResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m SearchResponse) String() string {
+	return string(m.Box("SearchResponse", utils.DefaultWidth*2))
+}
+
+func (m SearchResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("HpaiControlEndpoint", m.HpaiControlEndpoint, width-2))
+	boxes = append(boxes, utils.BoxAnything("DibDeviceInfo", m.DibDeviceInfo, width-2))
+	boxes = append(boxes, utils.BoxAnything("DibSuppSvcFamilies", m.DibSuppSvcFamilies, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
index d0fb1cd..bf07dc2 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
@@ -285,3 +285,12 @@ func (m *ServiceId) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m ServiceId) String() string {
+	return string(m.Box("ServiceId", utils.DefaultWidth*2))
+}
+
+func (m ServiceId) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedInd.go
index 44406ee..13e48dd 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedInd.go
@@ -132,3 +132,12 @@ func (m *TDataConnectedInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *TDataConnectedInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m TDataConnectedInd) String() string {
+	return string(m.Box("TDataConnectedInd", utils.DefaultWidth*2))
+}
+
+func (m TDataConnectedInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedReq.go
index 9e9c7f7..f2795ac 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataConnectedReq.go
@@ -132,3 +132,12 @@ func (m *TDataConnectedReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *TDataConnectedReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m TDataConnectedReq) String() string {
+	return string(m.Box("TDataConnectedReq", utils.DefaultWidth*2))
+}
+
+func (m TDataConnectedReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualInd.go
index b45c38a..4de061e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualInd.go
@@ -132,3 +132,12 @@ func (m *TDataIndividualInd) UnmarshalXML(d *xml.Decoder, start xml.StartElement
 func (m *TDataIndividualInd) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m TDataIndividualInd) String() string {
+	return string(m.Box("TDataIndividualInd", utils.DefaultWidth*2))
+}
+
+func (m TDataIndividualInd) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualReq.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualReq.go
index 6f4498e..cdd6133 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualReq.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TDataIndividualReq.go
@@ -132,3 +132,12 @@ func (m *TDataIndividualReq) UnmarshalXML(d *xml.Decoder, start xml.StartElement
 func (m *TDataIndividualReq) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m TDataIndividualReq) String() string {
+	return string(m.Box("TDataIndividualReq", utils.DefaultWidth*2))
+}
+
+func (m TDataIndividualReq) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
index 8d0f223..bf55074 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
@@ -187,3 +187,14 @@ func (m *TunnelingRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) er
 	}
 	return nil
 }
+
+func (m TunnelingRequest) String() string {
+	return string(m.Box("TunnelingRequest", utils.DefaultWidth*2))
+}
+
+func (m TunnelingRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TunnelingRequestDataBlock", m.TunnelingRequestDataBlock, width-2))
+	boxes = append(boxes, utils.BoxAnything("Cemi", m.Cemi, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
index 3108bd7..d06ee23 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
@@ -208,3 +208,14 @@ func (m *TunnelingRequestDataBlock) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m TunnelingRequestDataBlock) String() string {
+	return string(m.Box("TunnelingRequestDataBlock", utils.DefaultWidth*2))
+}
+
+func (m TunnelingRequestDataBlock) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceCounter", m.SequenceCounter, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
index 86bd39a..5cf49cc 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
@@ -160,3 +160,13 @@ func (m *TunnelingResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m TunnelingResponse) String() string {
+	return string(m.Box("TunnelingResponse", utils.DefaultWidth*2))
+}
+
+func (m TunnelingResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TunnelingResponseDataBlock", m.TunnelingResponseDataBlock, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
index 649dff3..7a48844 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
@@ -207,3 +207,15 @@ func (m *TunnelingResponseDataBlock) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m TunnelingResponseDataBlock) String() string {
+	return string(m.Box("TunnelingResponseDataBlock", utils.DefaultWidth*2))
+}
+
+func (m TunnelingResponseDataBlock) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("CommunicationChannelId", m.CommunicationChannelId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceCounter", m.SequenceCounter, width-2))
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
index b9915e4..84585e9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
@@ -180,3 +180,13 @@ func (m *UnknownMessage) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m UnknownMessage) String() string {
+	return string(m.Box("UnknownMessage", utils.DefaultWidth*2))
+}
+
+func (m UnknownMessage) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("UnknownData", m.UnknownData, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
index 0f28997..fd3e718 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
@@ -135,3 +135,12 @@ func (m *ModbusConstants) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m ModbusConstants) String() string {
+	return string(m.Box("ModbusConstants", utils.DefaultWidth*2))
+}
+
+func (m ModbusConstants) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
index 0b76aad..42183a8 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
@@ -751,3 +751,12 @@ func (m *ModbusPDU) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m ModbusPDU) String() string {
+	return string(m.Box("ModbusPDU", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
index 10545b3..f8033d9 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUDiagnosticRequest) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m ModbusPDUDiagnosticRequest) String() string {
+	return string(m.Box("ModbusPDUDiagnosticRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUDiagnosticRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SubFunction", m.SubFunction, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go
index 2541500..6525554 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUDiagnosticResponse) MarshalXML(e *xml.Encoder, start xml.Start
 	}
 	return nil
 }
+
+func (m ModbusPDUDiagnosticResponse) String() string {
+	return string(m.Box("ModbusPDUDiagnosticResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUDiagnosticResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("SubFunction", m.SubFunction, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
index 0177445..10d0a7b 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
@@ -169,3 +169,13 @@ func (m *ModbusPDUError) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m ModbusPDUError) String() string {
+	return string(m.Box("ModbusPDUError", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUError) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ExceptionCode", m.ExceptionCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go
index 38fc3fb..cc161fa 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go
@@ -140,3 +140,12 @@ func (m *ModbusPDUGetComEventCounterRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ModbusPDUGetComEventCounterRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ModbusPDUGetComEventCounterRequest) String() string {
+	return string(m.Box("ModbusPDUGetComEventCounterRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUGetComEventCounterRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go
index df9e61c..941d2db 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUGetComEventCounterResponse) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUGetComEventCounterResponse) String() string {
+	return string(m.Box("ModbusPDUGetComEventCounterResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUGetComEventCounterResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	boxes = append(boxes, utils.BoxAnything("EventCount", m.EventCount, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
index 3dc9571..cccb744 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
@@ -140,3 +140,12 @@ func (m *ModbusPDUGetComEventLogRequest) UnmarshalXML(d *xml.Decoder, start xml.
 func (m *ModbusPDUGetComEventLogRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ModbusPDUGetComEventLogRequest) String() string {
+	return string(m.Box("ModbusPDUGetComEventLogRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUGetComEventLogRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
index 8bd6b9e..7bba979 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
@@ -289,3 +289,16 @@ func (m *ModbusPDUGetComEventLogResponse) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m ModbusPDUGetComEventLogResponse) String() string {
+	return string(m.Box("ModbusPDUGetComEventLogResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUGetComEventLogResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Status", m.Status, width-2))
+	boxes = append(boxes, utils.BoxAnything("EventCount", m.EventCount, width-2))
+	boxes = append(boxes, utils.BoxAnything("MessageCount", m.MessageCount, width-2))
+	boxes = append(boxes, utils.BoxAnything("Events", m.Events, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
index 87347f9..0d6540a 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
@@ -225,3 +225,15 @@ func (m *ModbusPDUMaskWriteHoldingRegisterRequest) MarshalXML(e *xml.Encoder, st
 	}
 	return nil
 }
+
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) String() string {
+	return string(m.Box("ModbusPDUMaskWriteHoldingRegisterRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReferenceAddress", m.ReferenceAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("AndMask", m.AndMask, width-2))
+	boxes = append(boxes, utils.BoxAnything("OrMask", m.OrMask, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
index ab9b1b7..dd17956 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
@@ -225,3 +225,15 @@ func (m *ModbusPDUMaskWriteHoldingRegisterResponse) MarshalXML(e *xml.Encoder, s
 	}
 	return nil
 }
+
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) String() string {
+	return string(m.Box("ModbusPDUMaskWriteHoldingRegisterResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReferenceAddress", m.ReferenceAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("AndMask", m.AndMask, width-2))
+	boxes = append(boxes, utils.BoxAnything("OrMask", m.OrMask, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
index 86fc452..ac76076 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUReadCoilsRequest) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m ModbusPDUReadCoilsRequest) String() string {
+	return string(m.Box("ModbusPDUReadCoilsRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadCoilsRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go
index d529a80..e20d8dc 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go
@@ -205,3 +205,13 @@ func (m *ModbusPDUReadCoilsResponse) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m ModbusPDUReadCoilsResponse) String() string {
+	return string(m.Box("ModbusPDUReadCoilsResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadCoilsResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
index 5e24bb5..706a237 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
@@ -140,3 +140,12 @@ func (m *ModbusPDUReadDeviceIdentificationRequest) UnmarshalXML(d *xml.Decoder,
 func (m *ModbusPDUReadDeviceIdentificationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ModbusPDUReadDeviceIdentificationRequest) String() string {
+	return string(m.Box("ModbusPDUReadDeviceIdentificationRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadDeviceIdentificationRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
index d931574..830e1cd 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
@@ -140,3 +140,12 @@ func (m *ModbusPDUReadDeviceIdentificationResponse) UnmarshalXML(d *xml.Decoder,
 func (m *ModbusPDUReadDeviceIdentificationResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ModbusPDUReadDeviceIdentificationResponse) String() string {
+	return string(m.Box("ModbusPDUReadDeviceIdentificationResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadDeviceIdentificationResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go
index d212459..210673e 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUReadDiscreteInputsRequest) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m ModbusPDUReadDiscreteInputsRequest) String() string {
+	return string(m.Box("ModbusPDUReadDiscreteInputsRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadDiscreteInputsRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go
index c0d2d41..2043d23 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go
@@ -205,3 +205,13 @@ func (m *ModbusPDUReadDiscreteInputsResponse) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUReadDiscreteInputsResponse) String() string {
+	return string(m.Box("ModbusPDUReadDiscreteInputsResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadDiscreteInputsResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusRequest.go
index e060342..05f7d9a 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusRequest.go
@@ -140,3 +140,12 @@ func (m *ModbusPDUReadExceptionStatusRequest) UnmarshalXML(d *xml.Decoder, start
 func (m *ModbusPDUReadExceptionStatusRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ModbusPDUReadExceptionStatusRequest) String() string {
+	return string(m.Box("ModbusPDUReadExceptionStatusRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadExceptionStatusRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusResponse.go
index de98cce..60c9ebc 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadExceptionStatusResponse.go
@@ -169,3 +169,13 @@ func (m *ModbusPDUReadExceptionStatusResponse) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m ModbusPDUReadExceptionStatusResponse) String() string {
+	return string(m.Box("ModbusPDUReadExceptionStatusResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadExceptionStatusResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueRequest.go
index 90b8260..e7ae291 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueRequest.go
@@ -169,3 +169,13 @@ func (m *ModbusPDUReadFifoQueueRequest) MarshalXML(e *xml.Encoder, start xml.Sta
 	}
 	return nil
 }
+
+func (m ModbusPDUReadFifoQueueRequest) String() string {
+	return string(m.Box("ModbusPDUReadFifoQueueRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadFifoQueueRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("FifoPointerAddress", m.FifoPointerAddress, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go
index f73ff39..41ec56d 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFifoQueueResponse.go
@@ -219,3 +219,13 @@ func (m *ModbusPDUReadFifoQueueResponse) MarshalXML(e *xml.Encoder, start xml.St
 	}
 	return nil
 }
+
+func (m ModbusPDUReadFifoQueueResponse) String() string {
+	return string(m.Box("ModbusPDUReadFifoQueueResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadFifoQueueResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("FifoValue", m.FifoValue, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go
index 7cd0f4c..6b1d851 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequest.go
@@ -213,3 +213,13 @@ func (m *ModbusPDUReadFileRecordRequest) MarshalXML(e *xml.Encoder, start xml.St
 	}
 	return nil
 }
+
+func (m ModbusPDUReadFileRecordRequest) String() string {
+	return string(m.Box("ModbusPDUReadFileRecordRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadFileRecordRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequestItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequestItem.go
index 58f7e15..b25c277 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequestItem.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordRequestItem.go
@@ -217,3 +217,16 @@ func (m *ModbusPDUReadFileRecordRequestItem) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m ModbusPDUReadFileRecordRequestItem) String() string {
+	return string(m.Box("ModbusPDUReadFileRecordRequestItem", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadFileRecordRequestItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReferenceType", m.ReferenceType, width-2))
+	boxes = append(boxes, utils.BoxAnything("FileNumber", m.FileNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("RecordNumber", m.RecordNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("RecordLength", m.RecordLength, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go
index e375c42..9aacba2 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponse.go
@@ -213,3 +213,13 @@ func (m *ModbusPDUReadFileRecordResponse) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m ModbusPDUReadFileRecordResponse) String() string {
+	return string(m.Box("ModbusPDUReadFileRecordResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadFileRecordResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go
index 57504b1..ab2bf79 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadFileRecordResponseItem.go
@@ -203,3 +203,14 @@ func (m *ModbusPDUReadFileRecordResponseItem) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUReadFileRecordResponseItem) String() string {
+	return string(m.Box("ModbusPDUReadFileRecordResponseItem", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadFileRecordResponseItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReferenceType", m.ReferenceType, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersRequest.go
index 5f52ca4..6b1d2bf 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUReadHoldingRegistersRequest) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m ModbusPDUReadHoldingRegistersRequest) String() string {
+	return string(m.Box("ModbusPDUReadHoldingRegistersRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadHoldingRegistersRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go
index deaec1e..d85cd9c 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadHoldingRegistersResponse.go
@@ -205,3 +205,13 @@ func (m *ModbusPDUReadHoldingRegistersResponse) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m ModbusPDUReadHoldingRegistersResponse) String() string {
+	return string(m.Box("ModbusPDUReadHoldingRegistersResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadHoldingRegistersResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersRequest.go
index e1e73b7..b470495 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUReadInputRegistersRequest) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m ModbusPDUReadInputRegistersRequest) String() string {
+	return string(m.Box("ModbusPDUReadInputRegistersRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadInputRegistersRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go
index ffd9a93..fc45377 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadInputRegistersResponse.go
@@ -205,3 +205,13 @@ func (m *ModbusPDUReadInputRegistersResponse) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUReadInputRegistersResponse) String() string {
+	return string(m.Box("ModbusPDUReadInputRegistersResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadInputRegistersResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
index 87a7240..c625f2e 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersRequest.go
@@ -317,3 +317,17 @@ func (m *ModbusPDUReadWriteMultipleHoldingRegistersRequest) MarshalXML(e *xml.En
 	}
 	return nil
 }
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) String() string {
+	return string(m.Box("ModbusPDUReadWriteMultipleHoldingRegistersRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReadStartingAddress", m.ReadStartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("ReadQuantity", m.ReadQuantity, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteStartingAddress", m.WriteStartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("WriteQuantity", m.WriteQuantity, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
index 1360ca7..1fe7387 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadWriteMultipleHoldingRegistersResponse.go
@@ -205,3 +205,13 @@ func (m *ModbusPDUReadWriteMultipleHoldingRegistersResponse) MarshalXML(e *xml.E
 	}
 	return nil
 }
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) String() string {
+	return string(m.Box("ModbusPDUReadWriteMultipleHoldingRegistersResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReadWriteMultipleHoldingRegistersResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdRequest.go
index b340051..287d044 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdRequest.go
@@ -140,3 +140,12 @@ func (m *ModbusPDUReportServerIdRequest) UnmarshalXML(d *xml.Decoder, start xml.
 func (m *ModbusPDUReportServerIdRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m ModbusPDUReportServerIdRequest) String() string {
+	return string(m.Box("ModbusPDUReportServerIdRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReportServerIdRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go
index 5087015..ba47acc 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReportServerIdResponse.go
@@ -205,3 +205,13 @@ func (m *ModbusPDUReportServerIdResponse) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m ModbusPDUReportServerIdResponse) String() string {
+	return string(m.Box("ModbusPDUReportServerIdResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUReportServerIdResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go
index a1401bb..7a9043b 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequest.go
@@ -213,3 +213,13 @@ func (m *ModbusPDUWriteFileRecordRequest) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteFileRecordRequest) String() string {
+	return string(m.Box("ModbusPDUWriteFileRecordRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteFileRecordRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go
index 9621475..6b5967b 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordRequestItem.go
@@ -255,3 +255,16 @@ func (m *ModbusPDUWriteFileRecordRequestItem) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteFileRecordRequestItem) String() string {
+	return string(m.Box("ModbusPDUWriteFileRecordRequestItem", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteFileRecordRequestItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReferenceType", m.ReferenceType, width-2))
+	boxes = append(boxes, utils.BoxAnything("FileNumber", m.FileNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("RecordNumber", m.RecordNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("RecordData", m.RecordData, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go
index 1c6ed62..4b0a464 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponse.go
@@ -213,3 +213,13 @@ func (m *ModbusPDUWriteFileRecordResponse) MarshalXML(e *xml.Encoder, start xml.
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteFileRecordResponse) String() string {
+	return string(m.Box("ModbusPDUWriteFileRecordResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteFileRecordResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go
index 860fee9..a20d260 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteFileRecordResponseItem.go
@@ -255,3 +255,16 @@ func (m *ModbusPDUWriteFileRecordResponseItem) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteFileRecordResponseItem) String() string {
+	return string(m.Box("ModbusPDUWriteFileRecordResponseItem", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteFileRecordResponseItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReferenceType", m.ReferenceType, width-2))
+	boxes = append(boxes, utils.BoxAnything("FileNumber", m.FileNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("RecordNumber", m.RecordNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("RecordData", m.RecordData, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go
index 5fd654a..5bf2f6a 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsRequest.go
@@ -261,3 +261,15 @@ func (m *ModbusPDUWriteMultipleCoilsRequest) MarshalXML(e *xml.Encoder, start xm
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteMultipleCoilsRequest) String() string {
+	return string(m.Box("ModbusPDUWriteMultipleCoilsRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteMultipleCoilsRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsResponse.go
index a814058..15a0023 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleCoilsResponse.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUWriteMultipleCoilsResponse) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteMultipleCoilsResponse) String() string {
+	return string(m.Box("ModbusPDUWriteMultipleCoilsResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteMultipleCoilsResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go
index e04343c..c780712 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersRequest.go
@@ -261,3 +261,15 @@ func (m *ModbusPDUWriteMultipleHoldingRegistersRequest) MarshalXML(e *xml.Encode
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) String() string {
+	return string(m.Box("ModbusPDUWriteMultipleHoldingRegistersRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersResponse.go
index b9cec54..adbd5fb 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteMultipleHoldingRegistersResponse.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUWriteMultipleHoldingRegistersResponse) MarshalXML(e *xml.Encod
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) String() string {
+	return string(m.Box("ModbusPDUWriteMultipleHoldingRegistersResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteMultipleHoldingRegistersResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("StartingAddress", m.StartingAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("Quantity", m.Quantity, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilRequest.go
index 808345c..a6cc420 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUWriteSingleCoilRequest) MarshalXML(e *xml.Encoder, start xml.S
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteSingleCoilRequest) String() string {
+	return string(m.Box("ModbusPDUWriteSingleCoilRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteSingleCoilRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilResponse.go
index 35173f6..10a6084 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleCoilResponse.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUWriteSingleCoilResponse) MarshalXML(e *xml.Encoder, start xml.
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteSingleCoilResponse) String() string {
+	return string(m.Box("ModbusPDUWriteSingleCoilResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteSingleCoilResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterRequest.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterRequest.go
index 7bd8bee..dc9a670 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterRequest.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterRequest.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUWriteSingleRegisterRequest) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteSingleRegisterRequest) String() string {
+	return string(m.Box("ModbusPDUWriteSingleRegisterRequest", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteSingleRegisterRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterResponse.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterResponse.go
index 16b28a5..fb8e792 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterResponse.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUWriteSingleRegisterResponse.go
@@ -197,3 +197,14 @@ func (m *ModbusPDUWriteSingleRegisterResponse) MarshalXML(e *xml.Encoder, start
 	}
 	return nil
 }
+
+func (m ModbusPDUWriteSingleRegisterResponse) String() string {
+	return string(m.Box("ModbusPDUWriteSingleRegisterResponse", utils.DefaultWidth*2))
+}
+
+func (m ModbusPDUWriteSingleRegisterResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Value", m.Value, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusSerialADU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusSerialADU.go
index 51063fd..9cb7dcd 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusSerialADU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusSerialADU.go
@@ -242,3 +242,16 @@ func (m *ModbusSerialADU) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m ModbusSerialADU) String() string {
+	return string(m.Box("ModbusSerialADU", utils.DefaultWidth*2))
+}
+
+func (m ModbusSerialADU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TransactionId", m.TransactionId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Length", m.Length, width-2))
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	boxes = append(boxes, utils.BoxAnything("Pdu", m.Pdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
index f1e8528..fea21e7 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusTcpADU.go
@@ -229,3 +229,15 @@ func (m *ModbusTcpADU) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m ModbusTcpADU) String() string {
+	return string(m.Box("ModbusTcpADU", utils.DefaultWidth*2))
+}
+
+func (m ModbusTcpADU) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TransactionIdentifier", m.TransactionIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("UnitIdentifier", m.UnitIdentifier, width-2))
+	boxes = append(boxes, utils.BoxAnything("Pdu", m.Pdu, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
index 14e610b..607cc1a 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacket.go
@@ -377,3 +377,14 @@ func (m *COTPPacket) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m COTPPacket) String() string {
+	return string(m.Box("COTPPacket", utils.DefaultWidth*2))
+}
+
+func (m COTPPacket) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Parameters", m.Parameters, width-2))
+	boxes = append(boxes, utils.BoxAnything("Payload", m.Payload, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionRequest.go
index 55c4639..5c8c150 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionRequest.go
@@ -219,3 +219,15 @@ func (m *COTPPacketConnectionRequest) MarshalXML(e *xml.Encoder, start xml.Start
 	}
 	return nil
 }
+
+func (m COTPPacketConnectionRequest) String() string {
+	return string(m.Box("COTPPacketConnectionRequest", utils.DefaultWidth*2))
+}
+
+func (m COTPPacketConnectionRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationReference", m.DestinationReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceReference", m.SourceReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProtocolClass", m.ProtocolClass, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionResponse.go
index 0ffcc5e..e3c061f 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketConnectionResponse.go
@@ -219,3 +219,15 @@ func (m *COTPPacketConnectionResponse) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m COTPPacketConnectionResponse) String() string {
+	return string(m.Box("COTPPacketConnectionResponse", utils.DefaultWidth*2))
+}
+
+func (m COTPPacketConnectionResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationReference", m.DestinationReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceReference", m.SourceReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProtocolClass", m.ProtocolClass, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketData.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketData.go
index 506f4ba..fd1294d 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketData.go
@@ -191,3 +191,14 @@ func (m *COTPPacketData) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
 	}
 	return nil
 }
+
+func (m COTPPacketData) String() string {
+	return string(m.Box("COTPPacketData", utils.DefaultWidth*2))
+}
+
+func (m COTPPacketData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Eot", m.Eot, width-2))
+	boxes = append(boxes, utils.BoxAnything("TpduRef", m.TpduRef, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectRequest.go
index 866e0bd..0464d06 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectRequest.go
@@ -219,3 +219,15 @@ func (m *COTPPacketDisconnectRequest) MarshalXML(e *xml.Encoder, start xml.Start
 	}
 	return nil
 }
+
+func (m COTPPacketDisconnectRequest) String() string {
+	return string(m.Box("COTPPacketDisconnectRequest", utils.DefaultWidth*2))
+}
+
+func (m COTPPacketDisconnectRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationReference", m.DestinationReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceReference", m.SourceReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("ProtocolClass", m.ProtocolClass, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectResponse.go
index 88d9a59..e06c4ec 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketDisconnectResponse.go
@@ -191,3 +191,14 @@ func (m *COTPPacketDisconnectResponse) MarshalXML(e *xml.Encoder, start xml.Star
 	}
 	return nil
 }
+
+func (m COTPPacketDisconnectResponse) String() string {
+	return string(m.Box("COTPPacketDisconnectResponse", utils.DefaultWidth*2))
+}
+
+func (m COTPPacketDisconnectResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationReference", m.DestinationReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("SourceReference", m.SourceReference, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketTpduError.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketTpduError.go
index 46b0ef8..03f40b3 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketTpduError.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPPacketTpduError.go
@@ -191,3 +191,14 @@ func (m *COTPPacketTpduError) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m COTPPacketTpduError) String() string {
+	return string(m.Box("COTPPacketTpduError", utils.DefaultWidth*2))
+}
+
+func (m COTPPacketTpduError) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("DestinationReference", m.DestinationReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("RejectCause", m.RejectCause, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
index f70a499..27390f1 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameter.go
@@ -274,3 +274,12 @@ func (m *COTPParameter) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m COTPParameter) String() string {
+	return string(m.Box("COTPParameter", utils.DefaultWidth*2))
+}
+
+func (m COTPParameter) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCalledTsap.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCalledTsap.go
index addc90e..249e02d 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCalledTsap.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCalledTsap.go
@@ -161,3 +161,13 @@ func (m *COTPParameterCalledTsap) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m COTPParameterCalledTsap) String() string {
+	return string(m.Box("COTPParameterCalledTsap", utils.DefaultWidth*2))
+}
+
+func (m COTPParameterCalledTsap) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TsapId", m.TsapId, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCallingTsap.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCallingTsap.go
index 57e34f2..f53ee26 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCallingTsap.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterCallingTsap.go
@@ -161,3 +161,13 @@ func (m *COTPParameterCallingTsap) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m COTPParameterCallingTsap) String() string {
+	return string(m.Box("COTPParameterCallingTsap", utils.DefaultWidth*2))
+}
+
+func (m COTPParameterCallingTsap) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TsapId", m.TsapId, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterChecksum.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterChecksum.go
index 4233699..b9d92bc 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterChecksum.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterChecksum.go
@@ -161,3 +161,13 @@ func (m *COTPParameterChecksum) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m COTPParameterChecksum) String() string {
+	return string(m.Box("COTPParameterChecksum", utils.DefaultWidth*2))
+}
+
+func (m COTPParameterChecksum) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Crc", m.Crc, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go
index 468211c..0a473d9 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterDisconnectAdditionalInformation.go
@@ -177,3 +177,13 @@ func (m *COTPParameterDisconnectAdditionalInformation) MarshalXML(e *xml.Encoder
 	}
 	return nil
 }
+
+func (m COTPParameterDisconnectAdditionalInformation) String() string {
+	return string(m.Box("COTPParameterDisconnectAdditionalInformation", utils.DefaultWidth*2))
+}
+
+func (m COTPParameterDisconnectAdditionalInformation) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterTpduSize.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterTpduSize.go
index 05a446b..50aaf46 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterTpduSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPParameterTpduSize.go
@@ -161,3 +161,13 @@ func (m *COTPParameterTpduSize) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m COTPParameterTpduSize) String() string {
+	return string(m.Box("COTPParameterTpduSize", utils.DefaultWidth*2))
+}
+
+func (m COTPParameterTpduSize) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TpduSize", m.TpduSize, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
index 6dabda9..fd3b814 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Address.go
@@ -201,3 +201,12 @@ func (m *S7Address) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m S7Address) String() string {
+	return string(m.Box("S7Address", utils.DefaultWidth*2))
+}
+
+func (m S7Address) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go b/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go
index d7c4a2e..bdd88e1 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7AddressAny.go
@@ -327,3 +327,18 @@ func (m *S7AddressAny) MarshalXML(e *xml.Encoder, start xml.StartElement) error
 	}
 	return nil
 }
+
+func (m S7AddressAny) String() string {
+	return string(m.Box("S7AddressAny", utils.DefaultWidth*2))
+}
+
+func (m S7AddressAny) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TransportSize", m.TransportSize, width-2))
+	boxes = append(boxes, utils.BoxAnything("NumberOfElements", m.NumberOfElements, width-2))
+	boxes = append(boxes, utils.BoxAnything("DbNumber", m.DbNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("Area", m.Area, width-2))
+	boxes = append(boxes, utils.BoxAnything("ByteAddress", m.ByteAddress, width-2))
+	boxes = append(boxes, utils.BoxAnything("BitAddress", m.BitAddress, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
index 4ff1866..f475bf4 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Message.go
@@ -421,3 +421,15 @@ func (m *S7Message) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m S7Message) String() string {
+	return string(m.Box("S7Message", utils.DefaultWidth*2))
+}
+
+func (m S7Message) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TpduReference", m.TpduReference, width-2))
+	boxes = append(boxes, utils.BoxAnything("Parameter", m.Parameter, width-2))
+	boxes = append(boxes, utils.BoxAnything("Payload", m.Payload, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageRequest.go
index 5941011..7d6e15b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageRequest.go
@@ -135,3 +135,12 @@ func (m *S7MessageRequest) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *S7MessageRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m S7MessageRequest) String() string {
+	return string(m.Box("S7MessageRequest", utils.DefaultWidth*2))
+}
+
+func (m S7MessageRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponse.go
index 4bc0d81..a40da4c 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponse.go
@@ -192,3 +192,14 @@ func (m *S7MessageResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m S7MessageResponse) String() string {
+	return string(m.Box("S7MessageResponse", utils.DefaultWidth*2))
+}
+
+func (m S7MessageResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ErrorClass", m.ErrorClass, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorCode", m.ErrorCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponseData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponseData.go
index 35212d6..97f479d 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponseData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageResponseData.go
@@ -192,3 +192,14 @@ func (m *S7MessageResponseData) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m S7MessageResponseData) String() string {
+	return string(m.Box("S7MessageResponseData", utils.DefaultWidth*2))
+}
+
+func (m S7MessageResponseData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ErrorClass", m.ErrorClass, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorCode", m.ErrorCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageUserData.go
index 3d83a42..4af4cd3 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7MessageUserData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7MessageUserData.go
@@ -135,3 +135,12 @@ func (m *S7MessageUserData) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
 func (m *S7MessageUserData) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m S7MessageUserData) String() string {
+	return string(m.Box("S7MessageUserData", utils.DefaultWidth*2))
+}
+
+func (m S7MessageUserData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
index 3850ee4..420e545 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Parameter.go
@@ -272,3 +272,12 @@ func (m *S7Parameter) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m S7Parameter) String() string {
+	return string(m.Box("S7Parameter", utils.DefaultWidth*2))
+}
+
+func (m S7Parameter) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go
index ba3f247..601d5fc 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarRequest.go
@@ -203,3 +203,13 @@ func (m *S7ParameterReadVarRequest) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m S7ParameterReadVarRequest) String() string {
+	return string(m.Box("S7ParameterReadVarRequest", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterReadVarRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarResponse.go
index 25bd9d0..a2dcbde 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterReadVarResponse.go
@@ -165,3 +165,13 @@ func (m *S7ParameterReadVarResponse) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m S7ParameterReadVarResponse) String() string {
+	return string(m.Box("S7ParameterReadVarResponse", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterReadVarResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NumItems", m.NumItems, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterSetupCommunication.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterSetupCommunication.go
index 673497e..103f169 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterSetupCommunication.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterSetupCommunication.go
@@ -247,3 +247,15 @@ func (m *S7ParameterSetupCommunication) MarshalXML(e *xml.Encoder, start xml.Sta
 	}
 	return nil
 }
+
+func (m S7ParameterSetupCommunication) String() string {
+	return string(m.Box("S7ParameterSetupCommunication", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterSetupCommunication) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("MaxAmqCaller", m.MaxAmqCaller, width-2))
+	boxes = append(boxes, utils.BoxAnything("MaxAmqCallee", m.MaxAmqCallee, width-2))
+	boxes = append(boxes, utils.BoxAnything("PduLength", m.PduLength, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go
index 7c9e263..979bdd8 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserData.go
@@ -203,3 +203,13 @@ func (m *S7ParameterUserData) MarshalXML(e *xml.Encoder, start xml.StartElement)
 	}
 	return nil
 }
+
+func (m S7ParameterUserData) String() string {
+	return string(m.Box("S7ParameterUserData", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterUserData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
index 5a2d215..d075c10 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItem.go
@@ -201,3 +201,12 @@ func (m *S7ParameterUserDataItem) MarshalXML(e *xml.Encoder, start xml.StartElem
 	}
 	return nil
 }
+
+func (m S7ParameterUserDataItem) String() string {
+	return string(m.Box("S7ParameterUserDataItem", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterUserDataItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItemCPUFunctions.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItemCPUFunctions.go
index 73543c0..1eed6ff 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItemCPUFunctions.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterUserDataItemCPUFunctions.go
@@ -401,3 +401,20 @@ func (m *S7ParameterUserDataItemCPUFunctions) MarshalXML(e *xml.Encoder, start x
 	}
 	return nil
 }
+
+func (m S7ParameterUserDataItemCPUFunctions) String() string {
+	return string(m.Box("S7ParameterUserDataItemCPUFunctions", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterUserDataItemCPUFunctions) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Method", m.Method, width-2))
+	boxes = append(boxes, utils.BoxAnything("CpuFunctionType", m.CpuFunctionType, width-2))
+	boxes = append(boxes, utils.BoxAnything("CpuFunctionGroup", m.CpuFunctionGroup, width-2))
+	boxes = append(boxes, utils.BoxAnything("CpuSubfunction", m.CpuSubfunction, width-2))
+	boxes = append(boxes, utils.BoxAnything("SequenceNumber", m.SequenceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("DataUnitReferenceNumber", m.DataUnitReferenceNumber, width-2))
+	boxes = append(boxes, utils.BoxAnything("LastDataUnit", m.LastDataUnit, width-2))
+	boxes = append(boxes, utils.BoxAnything("ErrorCode", m.ErrorCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go
index a4bb9d2..00ecae6 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarRequest.go
@@ -203,3 +203,13 @@ func (m *S7ParameterWriteVarRequest) MarshalXML(e *xml.Encoder, start xml.StartE
 	}
 	return nil
 }
+
+func (m S7ParameterWriteVarRequest) String() string {
+	return string(m.Box("S7ParameterWriteVarRequest", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterWriteVarRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarResponse.go
index ac8cbc2..ef70a14 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7ParameterWriteVarResponse.go
@@ -165,3 +165,13 @@ func (m *S7ParameterWriteVarResponse) MarshalXML(e *xml.Encoder, start xml.Start
 	}
 	return nil
 }
+
+func (m S7ParameterWriteVarResponse) String() string {
+	return string(m.Box("S7ParameterWriteVarResponse", utils.DefaultWidth*2))
+}
+
+func (m S7ParameterWriteVarResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("NumItems", m.NumItems, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go b/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go
index b4e7549..d63ffbb 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7Payload.go
@@ -228,3 +228,12 @@ func (m *S7Payload) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m S7Payload) String() string {
+	return string(m.Box("S7Payload", utils.DefaultWidth*2))
+}
+
+func (m S7Payload) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go
index 15e3867..f8fbab6 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadReadVarResponse.go
@@ -188,3 +188,13 @@ func (m *S7PayloadReadVarResponse) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m S7PayloadReadVarResponse) String() string {
+	return string(m.Box("S7PayloadReadVarResponse", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadReadVarResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go
index dd9139b..a8f8d04 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserData.go
@@ -186,3 +186,13 @@ func (m *S7PayloadUserData) MarshalXML(e *xml.Encoder, start xml.StartElement) e
 	}
 	return nil
 }
+
+func (m S7PayloadUserData) String() string {
+	return string(m.Box("S7PayloadUserData", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadUserData) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go
index 8d9545e..fe88b1b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItem.go
@@ -319,3 +319,16 @@ func (m *S7PayloadUserDataItem) MarshalXML(e *xml.Encoder, start xml.StartElemen
 	}
 	return nil
 }
+
+func (m S7PayloadUserDataItem) String() string {
+	return string(m.Box("S7PayloadUserDataItem", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadUserDataItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReturnCode", m.ReturnCode, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransportSize", m.TransportSize, width-2))
+	boxes = append(boxes, utils.BoxAnything("SzlId", m.SzlId, width-2))
+	boxes = append(boxes, utils.BoxAnything("SzlIndex", m.SzlIndex, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlRequest.go
index 80071c7..f0ce595 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlRequest.go
@@ -136,3 +136,12 @@ func (m *S7PayloadUserDataItemCpuFunctionReadSzlRequest) UnmarshalXML(d *xml.Dec
 func (m *S7PayloadUserDataItemCpuFunctionReadSzlRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	return nil
 }
+
+func (m S7PayloadUserDataItemCpuFunctionReadSzlRequest) String() string {
+	return string(m.Box("S7PayloadUserDataItemCpuFunctionReadSzlRequest", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadUserDataItemCpuFunctionReadSzlRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
index 3baf14c..514cbcd 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadUserDataItemCpuFunctionReadSzlResponse.go
@@ -222,3 +222,13 @@ func (m *S7PayloadUserDataItemCpuFunctionReadSzlResponse) MarshalXML(e *xml.Enco
 	}
 	return nil
 }
+
+func (m S7PayloadUserDataItemCpuFunctionReadSzlResponse) String() string {
+	return string(m.Box("S7PayloadUserDataItemCpuFunctionReadSzlResponse", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadUserDataItemCpuFunctionReadSzlResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go
index 950483d..b140ade 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarRequest.go
@@ -188,3 +188,13 @@ func (m *S7PayloadWriteVarRequest) MarshalXML(e *xml.Encoder, start xml.StartEle
 	}
 	return nil
 }
+
+func (m S7PayloadWriteVarRequest) String() string {
+	return string(m.Box("S7PayloadWriteVarRequest", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadWriteVarRequest) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go
index 3c4d6d2..7db05d5 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7PayloadWriteVarResponse.go
@@ -183,3 +183,13 @@ func (m *S7PayloadWriteVarResponse) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m S7PayloadWriteVarResponse) String() string {
+	return string(m.Box("S7PayloadWriteVarResponse", utils.DefaultWidth*2))
+}
+
+func (m S7PayloadWriteVarResponse) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Items", m.Items, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go
index 509c5b4..61a0b76 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadDataItem.go
@@ -258,3 +258,15 @@ func (m *S7VarPayloadDataItem) MarshalXML(e *xml.Encoder, start xml.StartElement
 	}
 	return nil
 }
+
+func (m S7VarPayloadDataItem) String() string {
+	return string(m.Box("S7VarPayloadDataItem", utils.DefaultWidth*2))
+}
+
+func (m S7VarPayloadDataItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReturnCode", m.ReturnCode, width-2))
+	boxes = append(boxes, utils.BoxAnything("TransportSize", m.TransportSize, width-2))
+	boxes = append(boxes, utils.BoxAnything("Data", m.Data, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadStatusItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadStatusItem.go
index 234e23f..dadff25 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadStatusItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarPayloadStatusItem.go
@@ -139,3 +139,13 @@ func (m *S7VarPayloadStatusItem) MarshalXML(e *xml.Encoder, start xml.StartEleme
 	}
 	return nil
 }
+
+func (m S7VarPayloadStatusItem) String() string {
+	return string(m.Box("S7VarPayloadStatusItem", utils.DefaultWidth*2))
+}
+
+func (m S7VarPayloadStatusItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ReturnCode", m.ReturnCode, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
index 44d1c88..d0ef89b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItem.go
@@ -201,3 +201,12 @@ func (m *S7VarRequestParameterItem) MarshalXML(e *xml.Encoder, start xml.StartEl
 	}
 	return nil
 }
+
+func (m S7VarRequestParameterItem) String() string {
+	return string(m.Box("S7VarRequestParameterItem", utils.DefaultWidth*2))
+}
+
+func (m S7VarRequestParameterItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItemAddress.go b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItemAddress.go
index ef2f158..951d3fd 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItemAddress.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/S7VarRequestParameterItemAddress.go
@@ -177,3 +177,13 @@ func (m *S7VarRequestParameterItemAddress) MarshalXML(e *xml.Encoder, start xml.
 	}
 	return nil
 }
+
+func (m S7VarRequestParameterItemAddress) String() string {
+	return string(m.Box("S7VarRequestParameterItemAddress", utils.DefaultWidth*2))
+}
+
+func (m S7VarRequestParameterItemAddress) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Address", m.Address, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go
index ce5c0e9..e81a173 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlDataTreeItem.go
@@ -262,3 +262,17 @@ func (m *SzlDataTreeItem) MarshalXML(e *xml.Encoder, start xml.StartElement) err
 	}
 	return nil
 }
+
+func (m SzlDataTreeItem) String() string {
+	return string(m.Box("SzlDataTreeItem", utils.DefaultWidth*2))
+}
+
+func (m SzlDataTreeItem) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("ItemIndex", m.ItemIndex, width-2))
+	boxes = append(boxes, utils.BoxAnything("Mlfb", m.Mlfb, width-2))
+	boxes = append(boxes, utils.BoxAnything("ModuleTypeId", m.ModuleTypeId, width-2))
+	boxes = append(boxes, utils.BoxAnything("Ausbg", m.Ausbg, width-2))
+	boxes = append(boxes, utils.BoxAnything("Ausbe", m.Ausbe, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlId.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlId.go
index 0b723dd..28ea35b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlId.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlId.go
@@ -191,3 +191,15 @@ func (m *SzlId) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m SzlId) String() string {
+	return string(m.Box("SzlId", utils.DefaultWidth*2))
+}
+
+func (m SzlId) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("TypeClass", m.TypeClass, width-2))
+	boxes = append(boxes, utils.BoxAnything("SublistExtract", m.SublistExtract, width-2))
+	boxes = append(boxes, utils.BoxAnything("SublistList", m.SublistList, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go b/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
index 6f8e137..f2b5217 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TPKTPacket.go
@@ -203,3 +203,13 @@ func (m *TPKTPacket) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
 	}
 	return nil
 }
+
+func (m TPKTPacket) String() string {
+	return string(m.Box("TPKTPacket", utils.DefaultWidth*2))
+}
+
+func (m TPKTPacket) Box(name string, width int) utils.AsciiBox {
+	boxes := make([]utils.AsciiBox, 0)
+	boxes = append(boxes, utils.BoxAnything("Payload", m.Payload, width-2))
+	return utils.BoxString(name, string(utils.AlignBoxes(boxes, width-2)), width)
+}
diff --git a/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go b/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go
index a7b037c..060d17f 100644
--- a/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go
+++ b/plc4go/internal/plc4go/spi/testutils/DriverTestRunner.go
@@ -274,10 +274,17 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 		log.Trace().Msg("Comparing outputs")
 		for i := range expectedRawOutput {
 			if expectedRawOutput[i] != rawOutput[i] {
-				dasHierWollenWir := ser
-				dasKommt, err := readWriteModel.AmsTCPPacketParse(utils.NewReadBuffer(rawOutput))
-				println(dasHierWollenWir, dasKommt, err)
-				log.Error().Err(err).Msg("Omg")
+				switch m.driverName {
+				case "modbus":
+					message, err = modbusModel.ModbusXmlParserHelper{}.Parse(typeName, payloadString)
+					if err != nil {
+						return errors.Wrap(err, "error parsing xml")
+					}
+				case "ads":
+					expectationAmsTCPPacket := ser.(*readWriteModel.AmsTCPPacket)
+					actualAmsTcpPacket, err := readWriteModel.AmsTCPPacketParse(utils.NewReadBuffer(rawOutput))
+					log.Error().Err(err).Msgf("A readabled render of expectation:\n%v\nvs actual paket\n%v\n", expectationAmsTCPPacket, actualAmsTcpPacket)
+				}
 				return errors.Errorf("actual output doesn't match expected output:\nactual:   0x%X\nexpected: 0x%X", rawOutput, expectedRawOutput)
 			}
 		}
diff --git a/plc4go/internal/plc4go/spi/utils/asciiBox.go b/plc4go/internal/plc4go/spi/utils/asciiBox.go
new file mode 100644
index 0000000..d194544
--- /dev/null
+++ b/plc4go/internal/plc4go/spi/utils/asciiBox.go
@@ -0,0 +1,203 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package utils
+
+import (
+	"fmt"
+	"github.com/rs/zerolog/log"
+	"math"
+	"reflect"
+	"strings"
+)
+
+type AsciiBox string
+
+// Width returns the width of the box without the newlines
+func (m AsciiBox) Width() int {
+	maxWidth := 0
+	for _, line := range strings.Split(string(m), "\n") {
+		currentLength := countChars(line)
+		if maxWidth < currentLength {
+			maxWidth = currentLength
+		}
+	}
+	return maxWidth
+}
+
+// Boxer is used to render something in a box
+type AsciiBoxer interface {
+	// Box where int param is the proposed width
+	Box(string, int) AsciiBox
+}
+
+func BoxAnything(name string, anything interface{}, charWidth int) AsciiBox {
+	switch anything.(type) {
+	case AsciiBoxer:
+		// A box usually has its own name
+		return anything.(AsciiBoxer).Box(name, charWidth)
+	case bool:
+		return BoxString(name, fmt.Sprintf("%t", anything), 0)
+	case uint, uint8, uint16, uint32, uint64, int, int8, int16, int32, int64, float32, float64:
+		return BoxString(name, fmt.Sprintf("%d", anything), 0)
+	case []byte:
+		return AsciiBox(DumpFixedWidth(anything.([]byte), charWidth))
+	default:
+		switch reflect.ValueOf(anything).Kind() {
+		case reflect.Bool:
+			return BoxString(name, fmt.Sprintf("%t", anything), 0)
+		case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Int,
+			reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64:
+			return BoxString(name, fmt.Sprintf("%d", anything), 0)
+		// TODO: this case needs some more works as we can't imply byte[] so we might to recursively box it
+		//case reflect.Array:
+		//	return AsciiBox(DumpFixedWidth(anything.([]byte), charWidth))
+		default:
+			return BoxString(name, fmt.Sprintf("0x%x", anything.(interface{})), charWidth)
+		}
+	}
+}
+
+// BoxString boxes a newline separated string into a beautiful box
+func BoxString(name string, data string, charWidth int) AsciiBox {
+	longestLine := AsciiBox(data).Width()
+	if charWidth < longestLine {
+		log.Debug().Msgf("Overflow by %d chars", longestLine-charWidth)
+		charWidth = longestLine + 2
+	}
+	boxedString := ""
+	namePadding := int(math.Max(float64(charWidth-countChars(name)-2-1), 0))
+	bottomPadding := namePadding + countChars(name) + 1
+	boxedString += "╔═" + name + strings.Repeat("═", namePadding) + "╗\n"
+	// Name of the header stretches the box so we align to that
+	charWidth = 2 + countChars(name) + namePadding + 1
+	for _, line := range strings.Split(data, "\n") {
+		linePadding := float64(charWidth - boxLineOverheat - countChars(line))
+		if linePadding < 0 {
+			linePadding = 0
+		}
+		frontPadding := math.Floor(linePadding / 2.0)
+		backPadding := math.Ceil(linePadding / 2.0)
+		boxedString += "║" + strings.Repeat(" ", int(frontPadding)) + line + strings.Repeat(" ", int(backPadding)) + "║\n"
+	}
+	boxedString += "╚" + strings.Repeat("═", bottomPadding) + "╝"
+	return AsciiBox(boxedString)
+}
+
+func AlignBoxes(boxes []AsciiBox, desiredWith int) AsciiBox {
+	bigBox := AsciiBox("")
+	currentBoxRow := make([]AsciiBox, 0)
+	currentRowLength := 0
+	for _, box := range boxes {
+		currentRowLength += box.Width()
+		currentBoxRow = append(currentBoxRow, box)
+		if currentRowLength >= desiredWith {
+			mergedBoxes := mergeHorizontal(currentBoxRow)
+			if bigBox == "" {
+				bigBox = mergedBoxes
+			} else {
+				bigBox = BoxBelowBox(bigBox, mergedBoxes)
+			}
+			currentRowLength = 0
+			currentBoxRow = make([]AsciiBox, 0)
+		}
+	}
+	if len(currentBoxRow) > 0 {
+		// Special case where all boxes fit into one row
+		mergedBoxes := mergeHorizontal(currentBoxRow)
+		if bigBox == "" {
+			bigBox = mergedBoxes
+		} else {
+			bigBox = BoxBelowBox(bigBox, mergedBoxes)
+		}
+	}
+	return bigBox
+}
+
+func mergeHorizontal(boxes []AsciiBox) AsciiBox {
+	switch len(boxes) {
+	case 1:
+		return boxes[0]
+	case 2:
+		return BoxSideBySide(boxes[0], boxes[1])
+	default:
+		return BoxSideBySide(boxes[0], mergeHorizontal(boxes[1:]))
+	}
+}
+
+func BoxSideBySide(box1, box2 AsciiBox) AsciiBox {
+	aggregateBox := ""
+	box1Width := box1.Width()
+	box1Lines := strings.Split(string(box1), "\n")
+	box2Width := box2.Width()
+	box2Lines := strings.Split(string(box2), "\n")
+	maxRows := int(math.Max(float64(len(box1Lines)), float64(len(box2Lines))))
+	for row := 0; row < maxRows; row++ {
+		ranOutOfLines := false
+		if row >= len(box1Lines) {
+			ranOutOfLines = true
+			aggregateBox += strings.Repeat(" ", box1Width)
+		} else {
+			split1Row := box1Lines[row]
+			padding := box1Width - countChars(split1Row)
+			aggregateBox += split1Row + strings.Repeat(" ", padding)
+		}
+		if row >= len(box2Lines) {
+			if ranOutOfLines {
+				break
+			}
+			aggregateBox += strings.Repeat(" ", box2Width)
+		} else {
+			split2Row := box2Lines[row]
+			padding := box2Width - countChars(split2Row)
+			aggregateBox += split2Row + strings.Repeat(" ", padding)
+		}
+		aggregateBox += "\n"
+	}
+	return AsciiBox(aggregateBox[:len(aggregateBox)-1])
+}
+
+func BoxBelowBox(box1, box2 AsciiBox) AsciiBox {
+	box1Width := box1.Width()
+	box2Width := box2.Width()
+	if box1Width < box2Width {
+		box1 = expandBox(box1, box2Width)
+	} else if box2Width < box1Width {
+		box2 = expandBox(box2, box1Width)
+	}
+	return AsciiBox(string(box1) + "\n" + string(box2))
+}
+
+func expandBox(box AsciiBox, desiredWidth int) AsciiBox {
+	if box.Width() >= desiredWidth {
+		return box
+	}
+	// TODO: should we expand the borders?
+	boxLines := strings.Split(string(box), "\n")
+	newBox := ""
+	for _, line := range boxLines {
+		padding := desiredWidth - countChars(line)
+		newBox += line + strings.Repeat(" ", padding) + "\n"
+	}
+	return AsciiBox(newBox[:len(newBox)-1])
+}
+
+func countChars(s string) int {
+	return len([]rune(s))
+}
diff --git a/plc4go/internal/plc4go/spi/utils/asciiBox_test.go b/plc4go/internal/plc4go/spi/utils/asciiBox_test.go
new file mode 100644
index 0000000..b746ace
--- /dev/null
+++ b/plc4go/internal/plc4go/spi/utils/asciiBox_test.go
@@ -0,0 +1,498 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package utils
+
+import "testing"
+
+func TestBoxAnything(t *testing.T) {
+	type args struct {
+		name      string
+		anything  interface{}
+		charWidth int
+	}
+	tests := []struct {
+		name string
+		args args
+		want AsciiBox
+	}{
+		{
+			name: "test bool",
+			args: args{
+				name:      "exampleBool",
+				anything:  true,
+				charWidth: 0,
+			},
+			want: `╔═exampleBool╗
+║    true    ║
+╚════════════╝`,
+		},
+		{
+			name: "test int",
+			args: args{
+				name:      "exampleInt",
+				anything:  1,
+				charWidth: 0,
+			},
+			want: `╔═exampleInt╗
+║     1     ║
+╚═══════════╝`,
+		},
+		{
+			name: "test int 123123123",
+			args: args{
+				name:      "exampleInt",
+				anything:  123123123,
+				charWidth: 0,
+			},
+			want: `╔═exampleInt╗
+║ 123123123 ║
+╚═══════════╝`,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := BoxAnything(tt.args.name, tt.args.anything, tt.args.charWidth); got != tt.want {
+				t.Errorf("BoxAnything() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestBoxSideBySide(t *testing.T) {
+	type args struct {
+		box1 AsciiBox
+		box2 AsciiBox
+	}
+	tests := []struct {
+		name string
+		args args
+		want AsciiBox
+	}{
+		{
+			name: "Test2Boxes",
+			args: args{
+				box1: `000 0x: 31  32  33  34  35  36  37  38  '12345678'
+008 0x: 39  30  61  62  63  64  65  66  '90abcdef'
+016 0x: 67  68  69  6a  6b  6c  6d  6e  'ghijklmn'
+024 0x: 6f  70  71  72  73  74  75  76  'opqrstuv'
+032 0x: 77  78  79  7a                  'wxyz    '`,
+				box2: `╔═super nice data══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
+║  000 0x: 31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  '1234567890abcdefghijklmn'  ║
+║  024 0x: 6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  'opqrstuvwxyz.1234567890a'  ║
+║  048 0x: 62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  'bcdefghijklmnopqrstuvwxy'  ║
+║  072 0x: 7a  d3  61  61  31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  'z.aa1234567890abcdefghij'  ║
+║  096 0x: 6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  'klmnopqrstuvwxyz.1234567'  ║
+║  120 0x: 38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  '890abcdefghijklmnopqrstu'  ║
+║  144 0x: 76  77  78  79  7a  d3  61  61  62                                                              'vwxyz.aab               '  ║
+╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝`,
+			},
+			want: `000 0x: 31  32  33  34  35  36  37  38  '12345678'╔═super nice data══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
+008 0x: 39  30  61  62  63  64  65  66  '90abcdef'║  000 0x: 31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  '1234567890abcdefghijklmn'  ║
+016 0x: 67  68  69  6a  6b  6c  6d  6e  'ghijklmn'║  024 0x: 6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  'opqrstuvwxyz.1234567890a'  ║
+024 0x: 6f  70  71  72  73  74  75  76  'opqrstuv'║  048 0x: 62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  'bcdefghijklmnopqrstuvwxy'  ║
+032 0x: 77  78  79  7a                  'wxyz    '║  072 0x: 7a  d3  61  61  31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  'z.aa1234567890abcdefghij'  ║
+                                                  ║  096 0x: 6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  'klmnopqrstuvwxyz.1234567'  ║
+                                                  ║  120 0x: 38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  '890abcdefghijklmnopqrstu'  ║
+                                                  ║  144 0x: 76  77  78  79  7a  d3  61  61  62                                                              'vwxyz.aab               '  ║
+                                                  ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝`,
+		},
+		{
+			name: "another 2 boxes",
+			args: args{
+				box1: `╔═exampleInt╗
+║     4     ║
+╚═══════════╝`,
+				box2: `╔═exampleInt╗
+║     7     ║
+╚═══════════╝`,
+			},
+			want: `╔═exampleInt╗╔═exampleInt╗
+║     4     ║║     7     ║
+╚═══════════╝╚═══════════╝`,
+		},
+		{
+			name: "size difference first box",
+			args: args{
+				box1: `╔═exampleInt╗
+║     4     ║
+║     4     ║
+╚═══════════╝`,
+				box2: `╔═exampleInt╗
+║     7     ║
+╚═══════════╝`,
+			},
+			want: `╔═exampleInt╗╔═exampleInt╗
+║     4     ║║     7     ║
+║     4     ║╚═══════════╝
+╚═══════════╝             `,
+		},
+		{
+			name: "size difference second box",
+			args: args{
+				box1: `╔═exampleInt╗
+║     4     ║
+╚═══════════╝`,
+				box2: `╔═exampleInt╗
+║     7     ║
+║     7     ║
+╚═══════════╝`,
+			},
+			want: `╔═exampleInt╗╔═exampleInt╗
+║     4     ║║     7     ║
+╚═══════════╝║     7     ║
+             ╚═══════════╝`,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := BoxSideBySide(tt.args.box1, tt.args.box2); got != tt.want {
+				t.Errorf("BoxSideBySide() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestBoxBelowBox(t *testing.T) {
+	type args struct {
+		box1 AsciiBox
+		box2 AsciiBox
+	}
+	tests := []struct {
+		name string
+		args args
+		want AsciiBox
+	}{
+		{
+			name: "Test2Boxes",
+			args: args{
+				box1: `000 0x: 31  32  33  34  35  36  37  38  '12345678'
+008 0x: 39  30  61  62  63  64  65  66  '90abcdef'
+016 0x: 67  68  69  6a  6b  6c  6d  6e  'ghijklmn'
+024 0x: 6f  70  71  72  73  74  75  76  'opqrstuv'
+032 0x: 77  78  79  7a                  'wxyz    '`,
+				box2: `╔═super nice data══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
+║  000 0x: 31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  '1234567890abcdefghijklmn'  ║
+║  024 0x: 6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  'opqrstuvwxyz.1234567890a'  ║
+║  048 0x: 62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  'bcdefghijklmnopqrstuvwxy'  ║
+║  072 0x: 7a  d3  61  61  31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  'z.aa1234567890abcdefghij'  ║
+║  096 0x: 6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  'klmnopqrstuvwxyz.1234567'  ║
+║  120 0x: 38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  '890abcdefghijklmnopqrstu'  ║
+║  144 0x: 76  77  78  79  7a  d3  61  61  62                                                              'vwxyz.aab               '  ║
+╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝`,
+			},
+			want: `000 0x: 31  32  33  34  35  36  37  38  '12345678'                                                                                      
+008 0x: 39  30  61  62  63  64  65  66  '90abcdef'                                                                                      
+016 0x: 67  68  69  6a  6b  6c  6d  6e  'ghijklmn'                                                                                      
+024 0x: 6f  70  71  72  73  74  75  76  'opqrstuv'                                                                                      
+032 0x: 77  78  79  7a                  'wxyz    '                                                                                      
+╔═super nice data══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
+║  000 0x: 31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  '1234567890abcdefghijklmn'  ║
+║  024 0x: 6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  'opqrstuvwxyz.1234567890a'  ║
+║  048 0x: 62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  'bcdefghijklmnopqrstuvwxy'  ║
+║  072 0x: 7a  d3  61  61  31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  'z.aa1234567890abcdefghij'  ║
+║  096 0x: 6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  'klmnopqrstuvwxyz.1234567'  ║
+║  120 0x: 38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  '890abcdefghijklmnopqrstu'  ║
+║  144 0x: 76  77  78  79  7a  d3  61  61  62                                                              'vwxyz.aab               '  ║
+╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝`,
+		},
+		{
+			name: "different sized boxes",
+			args: args{
+				box1: `╔═sampleField════════════╗
+║123123123123123123123123║
+╚════════════════════════╝`,
+				box2: `╔═sampleField╗
+║123123123123║
+╚════════════╝`,
+			},
+			want: `╔═sampleField════════════╗
+║123123123123123123123123║
+╚════════════════════════╝
+╔═sampleField╗            
+║123123123123║            
+╚════════════╝            `,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := BoxBelowBox(tt.args.box1, tt.args.box2); got != tt.want {
+				t.Errorf("BoxSideBySide() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestBoxString(t *testing.T) {
+	type args struct {
+		name      string
+		data      string
+		charWidth int
+	}
+	tests := []struct {
+		name string
+		args args
+		want AsciiBox
+	}{
+		{
+			name: "simplebox",
+			args: args{
+				name:      "sampleField",
+				data:      "123123123123",
+				charWidth: 1,
+			},
+			want: `╔═sampleField╗
+║123123123123║
+╚════════════╝`,
+		},
+		{
+			name: "simplebox-unamed",
+			args: args{
+				name:      "",
+				data:      "123123123123",
+				charWidth: 1,
+			},
+			want: `╔════════════╗
+║123123123123║
+╚════════════╝`,
+		},
+		{
+			name: "simplebox",
+			args: args{
+				name:      "sampleField",
+				data:      "123123123123\n123123123123123123123123",
+				charWidth: 1,
+			},
+			want: `╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := BoxString(tt.args.name, tt.args.data, tt.args.charWidth); got != tt.want {
+				t.Errorf("BoxString() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestAlignBoxes(t *testing.T) {
+	type args struct {
+		boxes       []AsciiBox
+		desiredWith int
+	}
+	tests := []struct {
+		name string
+		args args
+		want AsciiBox
+	}{
+		{
+			name: "enough space",
+			args: args{
+				boxes: []AsciiBox{
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+				},
+				desiredWith: 1000,
+			},
+			want: `╔═sampleField════════════╗╔═sampleField════════════╗
+║      123123123123      ║║      123123123123      ║
+║123123ABABABABABAB123123║║123123123123123123123123║
+╚════════════════════════╝╚════════════════════════╝`,
+		},
+		{
+			name: "not enough space",
+			args: args{
+				boxes: []AsciiBox{
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+				},
+				desiredWith: 0,
+			},
+			want: `╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝
+╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+		},
+		{
+			name: "not enough space should result in multiple rows",
+			args: args{
+				boxes: []AsciiBox{
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123ABABABABABAB123123║
+╚════════════════════════╝`,
+					`╔═sampleField════════════╗
+║      123123123123      ║
+║123123123123123123123123║
+╚════════════════════════╝`,
+				},
+				desiredWith: 65,
+			},
+			want: `╔═sampleField════════════╗╔═sampleField════════════╗╔═sampleField════════════╗
+║      123123123123      ║║      123123123123      ║║      123123123123      ║
+║123123ABABABABABAB123123║║123123123123123123123123║║123123ABABABABABAB123123║
+╚════════════════════════╝╚════════════════════════╝╚════════════════════════╝
+╔═sampleField════════════╗╔═sampleField════════════╗╔═sampleField════════════╗
+║      123123123123      ║║      123123123123      ║║      123123123123      ║
+║123123123123123123123123║║123123ABABABABABAB123123║║123123123123123123123123║
+╚════════════════════════╝╚════════════════════════╝╚════════════════════════╝
+╔═sampleField════════════╗╔═sampleField════════════╗                          
+║      123123123123      ║║      123123123123      ║                          
+║123123ABABABABABAB123123║║123123123123123123123123║                          
+╚════════════════════════╝╚════════════════════════╝                          `,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := AlignBoxes(tt.args.boxes, tt.args.desiredWith); got != tt.want {
+				t.Errorf("AlignBoxes() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestAsciiBox_width(t *testing.T) {
+	tests := []struct {
+		name string
+		m    AsciiBox
+		want int
+	}{
+		{
+			name: "same width",
+			m: `123123123123123
+123123123123123
+123123123123123`,
+			want: 15,
+		},
+		{
+			name: "different width",
+			m: `123123123123123
+123123123123123123123123123123
+123123123123123`,
+			want: 30,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := tt.m.Width(); got != tt.want {
+				t.Errorf("width() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
+
+func Test_mergeHorizontal(t *testing.T) {
+	type args struct {
+		boxes []AsciiBox
+	}
+	tests := []struct {
+		name string
+		args args
+		want AsciiBox
+	}{
+		{
+			name: "3 same",
+			args: args{
+				boxes: []AsciiBox{
+					`123123123
+123123123
+123123123`,
+					`abcabcabc
+abcabcabc
+abcabcabc`,
+					`zxyzxyzxy
+zxyzxyzxy
+zxyzxyzxy`,
+				},
+			},
+			want: `123123123abcabcabczxyzxyzxy
+123123123abcabcabczxyzxyzxy
+123123123abcabcabczxyzxyzxy`,
+		},
+		{
+			name: "3 different",
+			args: args{
+				boxes: []AsciiBox{
+					`123123123
+123123123
+123123123`,
+					`abcabcabc
+abcabcabcabcabcabcabcabcabc
+abcabcabc`,
+					`zxyzxyzxy
+zxyzxyzxy
+zxyzxyzxy`,
+				},
+			},
+			want: `123123123abcabcabc                  zxyzxyzxy
+123123123abcabcabcabcabcabcabcabcabczxyzxyzxy
+123123123abcabcabc                  zxyzxyzxy`,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := mergeHorizontal(tt.args.boxes); got != tt.want {
+				t.Errorf("mergeHorizontal() = '\n%v\n', want '\n%v\n'", got, tt.want)
+			}
+		})
+	}
+}
diff --git a/plc4go/internal/plc4go/spi/utils/hex.go b/plc4go/internal/plc4go/spi/utils/hex.go
new file mode 100644
index 0000000..201d267
--- /dev/null
+++ b/plc4go/internal/plc4go/spi/utils/hex.go
@@ -0,0 +1,127 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package utils
+
+import (
+	"bytes"
+	"encoding/gob"
+	"fmt"
+	"github.com/pkg/errors"
+	"strings"
+)
+
+// DefaultWidth defaults to a default screen dumps size
+const DefaultWidth = 51
+
+// boxLineOverheat Overheat per line when drawing boxes
+const boxLineOverheat = 1 + 1
+
+// Dump dumps a 46 char wide hex string
+func BoxedDump(name string, data []byte) string {
+	// we substract the 2 lines at the side
+	dumpWidth := DefaultWidth - boxLineOverheat
+	return string(BoxString(name, DumpFixedWidth(data, dumpWidth), DefaultWidth))
+}
+
+// Dump dumps a 46 char wide hex string
+func Dump(data []byte) string {
+	return DumpFixedWidth(data, DefaultWidth)
+}
+
+// BoxedDumpFixedWidth dumps a hex into a beautiful box
+func BoxedDumpFixedWidth(name string, data []byte, charWidth int) string {
+	// we substract the 2 lines at the side
+	dumpWidth := charWidth - 1 - 1
+	return string(BoxString(name, DumpFixedWidth(data, dumpWidth), charWidth))
+}
+
+// DumpAnything dumps anything as hex
+func DumpAnything(anything interface{}) string {
+	convertedBytes, err := toBytes(anything)
+	if err != nil {
+		panic(err)
+	}
+	return DumpFixedWidth(convertedBytes, 1)
+}
+
+// DumpFixedWidth dumps hex as hex string. Min width of string returned is 18 up to supplied charWidth
+func DumpFixedWidth(data []byte, charWidth int) string {
+	if charWidth <= 0 {
+		panic("charWidth needs to be greater than 0")
+	}
+	hexString := ""
+	// 3 digits index plus one blank
+	const indexWidth = 3 + 1
+	// 2 hex digits + 2 blanks
+	const byteWidth = 2 + 2
+	// strings get quoate by 2 chars
+	const stringRenderOverheat = 2
+	const minWidth = indexWidth + byteWidth + stringRenderOverheat + 1
+	if charWidth < minWidth {
+		charWidth = minWidth + 6
+	}
+	// Formulary to calculate max bytes per row...
+	maxBytesPerRow := ((charWidth - indexWidth - stringRenderOverheat) / (byteWidth + 1)) - 1
+
+	for byteIndex, rowIndex := 0, 0; byteIndex < len(data); byteIndex, rowIndex = byteIndex+maxBytesPerRow, rowIndex+1 {
+		hexString += fmt.Sprintf("%03d 0x: ", byteIndex)
+		for columnIndex := 0; columnIndex < maxBytesPerRow; columnIndex++ {
+			absoluteIndex := byteIndex + columnIndex
+			if absoluteIndex < len(data) {
+				hexString += fmt.Sprintf("%02x  ", data[absoluteIndex])
+			} else {
+				// align with empty byte representation
+				hexString += strings.Repeat(" ", byteWidth)
+			}
+		}
+		endIndex := byteIndex + maxBytesPerRow
+		if endIndex >= len(data) {
+			endIndex = len(data)
+		}
+		stringRepresentation := maskString(data[byteIndex:endIndex])
+		if len([]rune(stringRepresentation)) < maxBytesPerRow {
+			stringRepresentation += strings.Repeat(" ", (maxBytesPerRow-len([]rune(stringRepresentation)))%maxBytesPerRow)
+		}
+		hexString += fmt.Sprintf("'%s'\n", stringRepresentation)
+	}
+	// remove last newline
+	return hexString[:len(hexString)-1]
+}
+
+func maskString(data []byte) string {
+	for i := range data {
+		switch {
+		case data[i] < 32:
+			fallthrough
+		case data[i] > 126:
+			data[i] = '.'
+		}
+	}
+	return string(data)
+}
+
+func toBytes(anything interface{}) ([]byte, error) {
+	var buffer bytes.Buffer
+	err := gob.NewEncoder(&buffer).Encode(anything)
+	if err != nil {
+		return nil, errors.Wrap(err, "error encoding datatype")
+	}
+	return buffer.Bytes(), nil
+}
diff --git a/plc4go/internal/plc4go/spi/utils/hex_test.go b/plc4go/internal/plc4go/spi/utils/hex_test.go
new file mode 100644
index 0000000..2dbe2d1
--- /dev/null
+++ b/plc4go/internal/plc4go/spi/utils/hex_test.go
@@ -0,0 +1,168 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package utils
+
+import "testing"
+
+func TestDump(t *testing.T) {
+	type args struct {
+		data []byte
+	}
+	tests := []struct {
+		name string
+		args args
+		want string
+	}{
+		{
+			name: "Test Dump",
+			args: args{
+				data: []byte("1234567890abcdefghijklmnopqrstuvwxyz"),
+			},
+			want: `000 0x: 31  32  33  34  35  36  37  38  '12345678'
+008 0x: 39  30  61  62  63  64  65  66  '90abcdef'
+016 0x: 67  68  69  6a  6b  6c  6d  6e  'ghijklmn'
+024 0x: 6f  70  71  72  73  74  75  76  'opqrstuv'
+032 0x: 77  78  79  7a                  'wxyz    '`,
+		},
+		{
+			name: "minimum size",
+			args: args{
+				[]byte("a"),
+			},
+			want: "000 0x: 61                              'a       '",
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := Dump(tt.args.data); got != tt.want {
+				t.Errorf("Dump() = \n%v\n, want \n%v\n", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestBoxedDumpFixedWidth(t *testing.T) {
+	type args struct {
+		name      string
+		data      []byte
+		charWidth int
+	}
+	tests := []struct {
+		name string
+		args args
+		want string
+	}{
+		{
+			name: "Test Dump",
+			args: args{
+				name:      "super nice data",
+				data:      []byte("1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aa1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aab"),
+				charWidth: 136,
+			},
+			want: `╔═super nice data══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
+║  000 0x: 31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  '1234567890abcdefghijklmn'  ║
+║  024 0x: 6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  'opqrstuvwxyz.1234567890a'  ║
+║  048 0x: 62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  'bcdefghijklmnopqrstuvwxy'  ║
+║  072 0x: 7a  d3  61  61  31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  'z.aa1234567890abcdefghij'  ║
+║  096 0x: 6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  'klmnopqrstuvwxyz.1234567'  ║
+║  120 0x: 38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  '890abcdefghijklmnopqrstu'  ║
+║  144 0x: 76  77  78  79  7a  d3  61  61  62                                                              'vwxyz.aab               '  ║
+╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝`,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := BoxedDumpFixedWidth(tt.args.name, tt.args.data, tt.args.charWidth); got != tt.want {
+				t.Errorf("Dump() = \n%v\n, want \n%v\n", got, tt.want)
+			}
+		})
+	}
+}
+
+func TestDumpFixedWidth(t *testing.T) {
+	type args struct {
+		data      []byte
+		charWidth int
+	}
+	tests := []struct {
+		name string
+		args args
+		want string
+	}{
+		{
+			name: "Test Dump",
+			args: args{
+				data:      []byte("1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aa1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aab"),
+				charWidth: 136,
+			},
+			want: `000 0x: 31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  '1234567890abcdefghijklmno'
+025 0x: 70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  62  63  'pqrstuvwxyz.1234567890abc'
+050 0x: 64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  61  'defghijklmnopqrstuvwxyz.a'
+075 0x: 61  31  32  33  34  35  36  37  38  39  30  61  62  63  64  65  66  67  68  69  6a  6b  6c  6d  6e  'a1234567890abcdefghijklmn'
+100 0x: 6f  70  71  72  73  74  75  76  77  78  79  7a  d3  31  32  33  34  35  36  37  38  39  30  61  62  'opqrstuvwxyz.1234567890ab'
+125 0x: 63  64  65  66  67  68  69  6a  6b  6c  6d  6e  6f  70  71  72  73  74  75  76  77  78  79  7a  d3  'cdefghijklmnopqrstuvwxyz.'
+150 0x: 61  61  62                                                                                          'aab                      '`,
+		},
+		{
+			name: "minimum size",
+			args: args{
+				[]byte("a"),
+				1,
+			},
+			want: "000 0x: 61  'a'",
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := DumpFixedWidth(tt.args.data, tt.args.charWidth); got != tt.want {
+				t.Errorf("Dump() = \n%v\n, want \n%v\n", got, tt.want)
+			}
+		})
+	}
+}
+
+func Test_maskString(t *testing.T) {
+	type args struct {
+		data []byte
+	}
+	tests := []struct {
+		name string
+		args args
+		want string
+	}{
+		{
+			name: "printable chars",
+			args: args{[]byte("1234567890abcdefghijklmnopqrstuvwxyz")},
+			want: "1234567890abcdefghijklmnopqrstuvwxyz",
+		},
+		{
+			name: "unprintable chars",
+			args: args{[]byte("\3231234567890abcdefghijklmnopqrstuvwxyz.\323")},
+			want: ".1234567890abcdefghijklmnopqrstuvwxyz..",
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			if got := maskString(tt.args.data); got != tt.want {
+				t.Errorf("maskString() = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}