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/12/13 15:07:17 UTC

[plc4x] branch develop updated: fix(bacnet): fixed typo in BACnetContextTag

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 8b856ea  fix(bacnet): fixed typo in BACnetContextTag
8b856ea is described below

commit 8b856eaabf249202690d19c69943f2d338d450c3
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Dec 13 16:04:06 2021 +0100

    fix(bacnet): fixed typo in BACnetContextTag
---
 .../model/AdsAddDeviceNotificationRequest.go       |  36 +++++-
 .../plc4go/bacnetip/readwrite/ParserHelper.go      |   4 +-
 .../plc4go/bacnetip/readwrite/XmlParserHelper.go   |   4 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |  26 ++---
 .../BACnetConfirmedServiceRequestReadProperty.go   |  18 +--
 ...netConfirmedServiceRequestReinitializeDevice.go |  22 ++--
 .../BACnetConfirmedServiceRequestWriteProperty.go  |  18 +--
 .../{BACnetComplexTag.go => BACnetContextTag.go}   | 118 +++++++++----------
 ...agBitString.go => BACnetContextTagBitString.go} |  66 +++++------
 ...lexTagBoolean.go => BACnetContextTagBoolean.go} |  66 +++++------
 ...tring.go => BACnetContextTagCharacterString.go} |  66 +++++------
 ...etComplexTagDate.go => BACnetContextTagDate.go} |  66 +++++------
 ...viceState.go => BACnetContextTagDeviceState.go} |  66 +++++------
 ...mplexTagDouble.go => BACnetContextTagDouble.go} |  66 +++++------
 ...Enumerated.go => BACnetContextTagEnumerated.go} |  66 +++++------
 ...etComplexTagNull.go => BACnetContextTagNull.go} |  66 +++++------
 ...fier.go => BACnetContextTagObjectIdentifier.go} |  66 +++++------
 ...tetString.go => BACnetContextTagOctetString.go} |  66 +++++------
 ...er.go => BACnetContextTagPropertyIdentifier.go} |  66 +++++------
 ...etComplexTagReal.go => BACnetContextTagReal.go} |  66 +++++------
 ...Integer.go => BACnetContextTagSignedInteger.go} |  66 +++++------
 ...etComplexTagTime.go => BACnetContextTagTime.go} |  66 +++++------
 ...teger.go => BACnetContextTagUnsignedInteger.go} |  66 +++++------
 .../model/BACnetServiceAckAtomicWriteFile.go       |  10 +-
 .../model/BACnetServiceAckReadProperty.go          |  18 +--
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |  50 ++++----
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |  26 ++---
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |   2 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |  36 +++++-
 .../resources/protocols/bacnetip/bacnetip.mspec    |  69 +++++------
 .../plc4x/java/bacnetip/RandomPackagesTest.java    | 127 +++++++++++++++++++--
 31 files changed, 868 insertions(+), 706 deletions(-)

diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
index 3dca40d..a8b39ad 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
@@ -23,7 +23,6 @@ import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog/log"
-	"math/big"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -123,7 +122,10 @@ func (m *AdsAddDeviceNotificationRequest) LengthInBitsConditional(lastItem bool)
 	lengthInBits += 32
 
 	// Reserved Field (reserved)
-	lengthInBits += 128
+	lengthInBits += 64
+
+	// Reserved Field (reserved)
+	lengthInBits += 64
 
 	return lengthInBits
 }
@@ -181,13 +183,27 @@ func AdsAddDeviceNotificationRequestParse(readBuffer utils.ReadBuffer, commandId
 
 	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
 	{
-		reserved, _err := readBuffer.ReadBigInt("reserved", 128)
+		reserved, _err := readBuffer.ReadUint64("reserved", 64)
+		if _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing 'reserved' field")
+		}
+		if reserved != uint64(0x0000) {
+			log.Info().Fields(map[string]interface{}{
+				"expected value": uint64(0x0000),
+				"got value":      reserved,
+			}).Msg("Got unexpected response.")
+		}
+	}
+
+	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+	{
+		reserved, _err := readBuffer.ReadUint64("reserved", 64)
 		if _err != nil {
 			return nil, errors.Wrap(_err, "Error parsing 'reserved' field")
 		}
-		if reserved.Cmp(big.NewInt(0x0000)) != 0 {
+		if reserved != uint64(0x0000) {
 			log.Info().Fields(map[string]interface{}{
-				"expected value": big.NewInt(0x0000),
+				"expected value": uint64(0x0000),
 				"got value":      reserved,
 			}).Msg("Got unexpected response.")
 		}
@@ -261,7 +277,15 @@ func (m *AdsAddDeviceNotificationRequest) Serialize(writeBuffer utils.WriteBuffe
 
 		// Reserved Field (reserved)
 		{
-			_err := writeBuffer.WriteBigInt("reserved", 128, big.NewInt(0x0000))
+			_err := writeBuffer.WriteUint64("reserved", 64, uint64(0x0000))
+			if _err != nil {
+				return errors.Wrap(_err, "Error serializing 'reserved' field")
+			}
+		}
+
+		// Reserved Field (reserved)
+		{
+			_err := writeBuffer.WriteUint64("reserved", 64, uint64(0x0000))
 			if _err != nil {
 				return errors.Wrap(_err, "Error serializing 'reserved' field")
 			}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go b/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
index 1e51e79..16cdeda 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
@@ -32,13 +32,13 @@ type BacnetipParserHelper struct {
 
 func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io utils.ReadBuffer) (interface{}, error) {
 	switch typeName {
-	case "BACnetComplexTag":
+	case "BACnetContextTag":
 		tagNumberArgument, err := utils.StrToUint8(arguments[0])
 		if err != nil {
 			return nil, errors.Wrap(err, "Error parsing")
 		}
 		var dataType model.BACnetDataType
-		return model.BACnetComplexTagParse(io, tagNumberArgument, dataType)
+		return model.BACnetContextTagParse(io, tagNumberArgument, dataType)
 	case "APDU":
 		apduLength, err := utils.StrToUint16(arguments[0])
 		if err != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go b/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
index 38aa5b1..91f76da 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
@@ -42,14 +42,14 @@ func init() {
 
 func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parserArguments ...string) (interface{}, error) {
 	switch typeName {
-	case "BACnetComplexTag":
+	case "BACnetContextTag":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 4)
 		if err != nil {
 			return nil, err
 		}
 		tagNumberArgument := uint8(parsedUint0)
 		dataType := model.BACnetDataTypeByName(parserArguments[1])
-		return model.BACnetComplexTagParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumberArgument, dataType)
+		return model.BACnetContextTagParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumberArgument, dataType)
 	case "APDU":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 16)
 		if err != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
index d73208f..b48cbde 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
@@ -30,10 +30,10 @@ import (
 type BACnetConfirmedServiceRequestAtomicWriteFile struct {
 	*BACnetConfirmedServiceRequest
 	DeviceIdentifier  *BACnetTagApplicationObjectIdentifier
-	OpeningTag        *BACnetComplexTagNull
+	OpeningTag        *BACnetContextTagNull
 	FileStartPosition *BACnetTagApplicationSignedInteger
 	FileData          *BACnetTagApplicationOctetString
-	ClosingTag        *BACnetComplexTagNull
+	ClosingTag        *BACnetContextTagNull
 }
 
 // The corresponding interface
@@ -53,7 +53,7 @@ func (m *BACnetConfirmedServiceRequestAtomicWriteFile) ServiceChoice() uint8 {
 func (m *BACnetConfirmedServiceRequestAtomicWriteFile) InitializeParent(parent *BACnetConfirmedServiceRequest) {
 }
 
-func NewBACnetConfirmedServiceRequestAtomicWriteFile(deviceIdentifier *BACnetTagApplicationObjectIdentifier, openingTag *BACnetComplexTagNull, fileStartPosition *BACnetTagApplicationSignedInteger, fileData *BACnetTagApplicationOctetString, closingTag *BACnetComplexTagNull) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestAtomicWriteFile(deviceIdentifier *BACnetTagApplicationObjectIdentifier, openingTag *BACnetContextTagNull, fileStartPosition *BACnetTagApplicationSignedInteger, fileData *BACnetTagApplicationOctetString, closingTag *BACnetContextTagNull) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestAtomicWriteFile{
 		DeviceIdentifier:              deviceIdentifier,
 		OpeningTag:                    openingTag,
@@ -141,20 +141,20 @@ func BACnetConfirmedServiceRequestAtomicWriteFileParse(readBuffer utils.ReadBuff
 	}
 
 	// Optional Field (openingTag) (Can be skipped, if a given expression evaluates to false)
-	var openingTag *BACnetComplexTagNull = nil
+	var openingTag *BACnetContextTagNull = nil
 	{
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("openingTag"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_NULL)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_NULL)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'openingTag' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			openingTag = CastBACnetComplexTagNull(_val)
+			openingTag = CastBACnetContextTagNull(_val)
 			if closeErr := readBuffer.CloseContext("openingTag"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -188,20 +188,20 @@ func BACnetConfirmedServiceRequestAtomicWriteFileParse(readBuffer utils.ReadBuff
 	}
 
 	// Optional Field (closingTag) (Can be skipped, if a given expression evaluates to false)
-	var closingTag *BACnetComplexTagNull = nil
+	var closingTag *BACnetContextTagNull = nil
 	{
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("closingTag"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_NULL)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_NULL)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'closingTag' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			closingTag = CastBACnetComplexTagNull(_val)
+			closingTag = CastBACnetContextTagNull(_val)
 			if closeErr := readBuffer.CloseContext("closingTag"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -215,10 +215,10 @@ func BACnetConfirmedServiceRequestAtomicWriteFileParse(readBuffer utils.ReadBuff
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestAtomicWriteFile{
 		DeviceIdentifier:              CastBACnetTagApplicationObjectIdentifier(deviceIdentifier),
-		OpeningTag:                    CastBACnetComplexTagNull(openingTag),
+		OpeningTag:                    CastBACnetContextTagNull(openingTag),
 		FileStartPosition:             CastBACnetTagApplicationSignedInteger(fileStartPosition),
 		FileData:                      CastBACnetTagApplicationOctetString(fileData),
-		ClosingTag:                    CastBACnetComplexTagNull(closingTag),
+		ClosingTag:                    CastBACnetContextTagNull(closingTag),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -244,7 +244,7 @@ func (m *BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(writeBuffer uti
 		}
 
 		// Optional Field (openingTag) (Can be skipped, if the value is null)
-		var openingTag *BACnetComplexTagNull = nil
+		var openingTag *BACnetContextTagNull = nil
 		if m.OpeningTag != nil {
 			if pushErr := writeBuffer.PushContext("openingTag"); pushErr != nil {
 				return pushErr
@@ -284,7 +284,7 @@ func (m *BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(writeBuffer uti
 		}
 
 		// Optional Field (closingTag) (Can be skipped, if the value is null)
-		var closingTag *BACnetComplexTagNull = nil
+		var closingTag *BACnetContextTagNull = nil
 		if m.ClosingTag != nil {
 			if pushErr := writeBuffer.PushContext("closingTag"); pushErr != nil {
 				return pushErr
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
index b2483cb..4653670 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -29,8 +29,8 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReadProperty struct {
 	*BACnetConfirmedServiceRequest
-	ObjectIdentifier   *BACnetComplexTagObjectIdentifier
-	PropertyIdentifier *BACnetComplexTagPropertyIdentifier
+	ObjectIdentifier   *BACnetContextTagObjectIdentifier
+	PropertyIdentifier *BACnetContextTagPropertyIdentifier
 	ArrayIndex         *uint32
 }
 
@@ -51,7 +51,7 @@ func (m *BACnetConfirmedServiceRequestReadProperty) ServiceChoice() uint8 {
 func (m *BACnetConfirmedServiceRequestReadProperty) InitializeParent(parent *BACnetConfirmedServiceRequest) {
 }
 
-func NewBACnetConfirmedServiceRequestReadProperty(objectIdentifier *BACnetComplexTagObjectIdentifier, propertyIdentifier *BACnetComplexTagPropertyIdentifier, arrayIndex *uint32) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestReadProperty{
 		ObjectIdentifier:              objectIdentifier,
 		PropertyIdentifier:            propertyIdentifier,
@@ -119,11 +119,11 @@ func BACnetConfirmedServiceRequestReadPropertyParse(readBuffer utils.ReadBuffer,
 	if pullErr := readBuffer.PullContext("objectIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
-	_objectIdentifier, _objectIdentifierErr := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+	_objectIdentifier, _objectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
 	if _objectIdentifierErr != nil {
 		return nil, errors.Wrap(_objectIdentifierErr, "Error parsing 'objectIdentifier' field")
 	}
-	objectIdentifier := CastBACnetComplexTagObjectIdentifier(_objectIdentifier)
+	objectIdentifier := CastBACnetContextTagObjectIdentifier(_objectIdentifier)
 	if closeErr := readBuffer.CloseContext("objectIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -132,11 +132,11 @@ func BACnetConfirmedServiceRequestReadPropertyParse(readBuffer utils.ReadBuffer,
 	if pullErr := readBuffer.PullContext("propertyIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
-	_propertyIdentifier, _propertyIdentifierErr := BACnetComplexTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_PROPERTY_IDENTIFIER)
+	_propertyIdentifier, _propertyIdentifierErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_PROPERTY_IDENTIFIER)
 	if _propertyIdentifierErr != nil {
 		return nil, errors.Wrap(_propertyIdentifierErr, "Error parsing 'propertyIdentifier' field")
 	}
-	propertyIdentifier := CastBACnetComplexTagPropertyIdentifier(_propertyIdentifier)
+	propertyIdentifier := CastBACnetContextTagPropertyIdentifier(_propertyIdentifier)
 	if closeErr := readBuffer.CloseContext("propertyIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -157,8 +157,8 @@ func BACnetConfirmedServiceRequestReadPropertyParse(readBuffer utils.ReadBuffer,
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestReadProperty{
-		ObjectIdentifier:              CastBACnetComplexTagObjectIdentifier(objectIdentifier),
-		PropertyIdentifier:            CastBACnetComplexTagPropertyIdentifier(propertyIdentifier),
+		ObjectIdentifier:              CastBACnetContextTagObjectIdentifier(objectIdentifier),
+		PropertyIdentifier:            CastBACnetContextTagPropertyIdentifier(propertyIdentifier),
 		ArrayIndex:                    arrayIndex,
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
index 106373d..8d0574b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
@@ -29,8 +29,8 @@ import (
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReinitializeDevice struct {
 	*BACnetConfirmedServiceRequest
-	ReinitializedStateOfDevice *BACnetComplexTagDeviceState
-	Password                   *BACnetComplexTagCharacterString
+	ReinitializedStateOfDevice *BACnetContextTagDeviceState
+	Password                   *BACnetContextTagCharacterString
 }
 
 // The corresponding interface
@@ -50,7 +50,7 @@ func (m *BACnetConfirmedServiceRequestReinitializeDevice) ServiceChoice() uint8
 func (m *BACnetConfirmedServiceRequestReinitializeDevice) InitializeParent(parent *BACnetConfirmedServiceRequest) {
 }
 
-func NewBACnetConfirmedServiceRequestReinitializeDevice(reinitializedStateOfDevice *BACnetComplexTagDeviceState, password *BACnetComplexTagCharacterString) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestReinitializeDevice(reinitializedStateOfDevice *BACnetContextTagDeviceState, password *BACnetContextTagCharacterString) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestReinitializeDevice{
 		ReinitializedStateOfDevice:    reinitializedStateOfDevice,
 		Password:                      password,
@@ -114,30 +114,30 @@ func BACnetConfirmedServiceRequestReinitializeDeviceParse(readBuffer utils.ReadB
 	if pullErr := readBuffer.PullContext("reinitializedStateOfDevice"); pullErr != nil {
 		return nil, pullErr
 	}
-	_reinitializedStateOfDevice, _reinitializedStateOfDeviceErr := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_DEVICE_STATE)
+	_reinitializedStateOfDevice, _reinitializedStateOfDeviceErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_DEVICE_STATE)
 	if _reinitializedStateOfDeviceErr != nil {
 		return nil, errors.Wrap(_reinitializedStateOfDeviceErr, "Error parsing 'reinitializedStateOfDevice' field")
 	}
-	reinitializedStateOfDevice := CastBACnetComplexTagDeviceState(_reinitializedStateOfDevice)
+	reinitializedStateOfDevice := CastBACnetContextTagDeviceState(_reinitializedStateOfDevice)
 	if closeErr := readBuffer.CloseContext("reinitializedStateOfDevice"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Optional Field (password) (Can be skipped, if a given expression evaluates to false)
-	var password *BACnetComplexTagCharacterString = nil
+	var password *BACnetContextTagCharacterString = nil
 	{
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("password"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(1), BACnetDataType_CHARACTER_STRING)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_CHARACTER_STRING)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'password' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			password = CastBACnetComplexTagCharacterString(_val)
+			password = CastBACnetContextTagCharacterString(_val)
 			if closeErr := readBuffer.CloseContext("password"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -150,8 +150,8 @@ func BACnetConfirmedServiceRequestReinitializeDeviceParse(readBuffer utils.ReadB
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestReinitializeDevice{
-		ReinitializedStateOfDevice:    CastBACnetComplexTagDeviceState(reinitializedStateOfDevice),
-		Password:                      CastBACnetComplexTagCharacterString(password),
+		ReinitializedStateOfDevice:    CastBACnetContextTagDeviceState(reinitializedStateOfDevice),
+		Password:                      CastBACnetContextTagCharacterString(password),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -177,7 +177,7 @@ func (m *BACnetConfirmedServiceRequestReinitializeDevice) Serialize(writeBuffer
 		}
 
 		// Optional Field (password) (Can be skipped, if the value is null)
-		var password *BACnetComplexTagCharacterString = nil
+		var password *BACnetContextTagCharacterString = nil
 		if m.Password != nil {
 			if pushErr := writeBuffer.PushContext("password"); pushErr != nil {
 				return pushErr
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
index 217feea..5f00c6a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
@@ -34,8 +34,8 @@ const BACnetConfirmedServiceRequestWriteProperty_CLOSINGTAG uint8 = 0x3F
 // The data-structure of this message
 type BACnetConfirmedServiceRequestWriteProperty struct {
 	*BACnetConfirmedServiceRequest
-	ObjectIdentifier   *BACnetComplexTagObjectIdentifier
-	PropertyIdentifier *BACnetComplexTagPropertyIdentifier
+	ObjectIdentifier   *BACnetContextTagObjectIdentifier
+	PropertyIdentifier *BACnetContextTagPropertyIdentifier
 	ArrayIndex         *uint32
 	Value              *BACnetTag
 	Priority           *BACnetTag
@@ -58,7 +58,7 @@ func (m *BACnetConfirmedServiceRequestWriteProperty) ServiceChoice() uint8 {
 func (m *BACnetConfirmedServiceRequestWriteProperty) InitializeParent(parent *BACnetConfirmedServiceRequest) {
 }
 
-func NewBACnetConfirmedServiceRequestWriteProperty(objectIdentifier *BACnetComplexTagObjectIdentifier, propertyIdentifier *BACnetComplexTagPropertyIdentifier, arrayIndex *uint32, value *BACnetTag, priority *BACnetTag) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestWriteProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32, value *BACnetTag, priority *BACnetTag) *BACnetConfirmedServiceRequest {
 	child := &BACnetConfirmedServiceRequestWriteProperty{
 		ObjectIdentifier:              objectIdentifier,
 		PropertyIdentifier:            propertyIdentifier,
@@ -144,11 +144,11 @@ func BACnetConfirmedServiceRequestWritePropertyParse(readBuffer utils.ReadBuffer
 	if pullErr := readBuffer.PullContext("objectIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
-	_objectIdentifier, _objectIdentifierErr := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+	_objectIdentifier, _objectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
 	if _objectIdentifierErr != nil {
 		return nil, errors.Wrap(_objectIdentifierErr, "Error parsing 'objectIdentifier' field")
 	}
-	objectIdentifier := CastBACnetComplexTagObjectIdentifier(_objectIdentifier)
+	objectIdentifier := CastBACnetContextTagObjectIdentifier(_objectIdentifier)
 	if closeErr := readBuffer.CloseContext("objectIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -157,11 +157,11 @@ func BACnetConfirmedServiceRequestWritePropertyParse(readBuffer utils.ReadBuffer
 	if pullErr := readBuffer.PullContext("propertyIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
-	_propertyIdentifier, _propertyIdentifierErr := BACnetComplexTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_PROPERTY_IDENTIFIER)
+	_propertyIdentifier, _propertyIdentifierErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_PROPERTY_IDENTIFIER)
 	if _propertyIdentifierErr != nil {
 		return nil, errors.Wrap(_propertyIdentifierErr, "Error parsing 'propertyIdentifier' field")
 	}
-	propertyIdentifier := CastBACnetComplexTagPropertyIdentifier(_propertyIdentifier)
+	propertyIdentifier := CastBACnetContextTagPropertyIdentifier(_propertyIdentifier)
 	if closeErr := readBuffer.CloseContext("propertyIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -235,8 +235,8 @@ func BACnetConfirmedServiceRequestWritePropertyParse(readBuffer utils.ReadBuffer
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestWriteProperty{
-		ObjectIdentifier:              CastBACnetComplexTagObjectIdentifier(objectIdentifier),
-		PropertyIdentifier:            CastBACnetComplexTagPropertyIdentifier(propertyIdentifier),
+		ObjectIdentifier:              CastBACnetContextTagObjectIdentifier(objectIdentifier),
+		PropertyIdentifier:            CastBACnetContextTagPropertyIdentifier(propertyIdentifier),
 		ArrayIndex:                    arrayIndex,
 		Value:                         CastBACnetTag(value),
 		Priority:                      CastBACnetTag(priority),
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go
similarity index 74%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTag.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go
index c732c03..4519de4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go
@@ -27,7 +27,7 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTag struct {
+type BACnetContextTag struct {
 	TagNumber       uint8
 	TagClass        TagClass
 	LengthValueType uint8
@@ -37,39 +37,39 @@ type BACnetComplexTag struct {
 	ExtExtExtLength *uint32
 	ActualTagNumber uint8
 	ActualLength    uint32
-	Child           IBACnetComplexTagChild
+	Child           IBACnetContextTagChild
 }
 
 // The corresponding interface
-type IBACnetComplexTag interface {
+type IBACnetContextTag interface {
 	DataType() BACnetDataType
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
 }
 
-type IBACnetComplexTagParent interface {
-	SerializeParent(writeBuffer utils.WriteBuffer, child IBACnetComplexTag, serializeChildFunction func() error) error
+type IBACnetContextTagParent interface {
+	SerializeParent(writeBuffer utils.WriteBuffer, child IBACnetContextTag, serializeChildFunction func() error) error
 	GetTypeName() string
 }
 
-type IBACnetComplexTagChild interface {
+type IBACnetContextTagChild interface {
 	Serialize(writeBuffer utils.WriteBuffer) error
-	InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32)
+	InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32)
 	GetTypeName() string
-	IBACnetComplexTag
+	IBACnetContextTag
 }
 
-func NewBACnetComplexTag(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	return &BACnetComplexTag{TagNumber: tagNumber, TagClass: tagClass, LengthValueType: lengthValueType, ExtTagNumber: extTagNumber, ExtLength: extLength, ExtExtLength: extExtLength, ExtExtExtLength: extExtExtLength}
+func NewBACnetContextTag(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	return &BACnetContextTag{TagNumber: tagNumber, TagClass: tagClass, LengthValueType: lengthValueType, ExtTagNumber: extTagNumber, ExtLength: extLength, ExtExtLength: extExtLength, ExtExtExtLength: extExtExtLength}
 }
 
-func CastBACnetComplexTag(structType interface{}) *BACnetComplexTag {
-	castFunc := func(typ interface{}) *BACnetComplexTag {
-		if casted, ok := typ.(BACnetComplexTag); ok {
+func CastBACnetContextTag(structType interface{}) *BACnetContextTag {
+	castFunc := func(typ interface{}) *BACnetContextTag {
+		if casted, ok := typ.(BACnetContextTag); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
+		if casted, ok := typ.(*BACnetContextTag); ok {
 			return casted
 		}
 		return nil
@@ -77,19 +77,19 @@ func CastBACnetComplexTag(structType interface{}) *BACnetComplexTag {
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTag) GetTypeName() string {
-	return "BACnetComplexTag"
+func (m *BACnetContextTag) GetTypeName() string {
+	return "BACnetContextTag"
 }
 
-func (m *BACnetComplexTag) LengthInBits() uint16 {
+func (m *BACnetContextTag) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTag) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTag) LengthInBitsConditional(lastItem bool) uint16 {
 	return m.Child.LengthInBits()
 }
 
-func (m *BACnetComplexTag) ParentLengthInBits() uint16 {
+func (m *BACnetContextTag) ParentLengthInBits() uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (lengthValueType)
@@ -122,12 +122,12 @@ func (m *BACnetComplexTag) ParentLengthInBits() uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetComplexTag) LengthInBytes() uint16 {
+func (m *BACnetContextTag) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTag"); pullErr != nil {
+func BACnetContextTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTag"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -209,39 +209,39 @@ func BACnetComplexTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8,
 	actualLength := uint32(_actualLength)
 
 	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-	var _parent *BACnetComplexTag
+	var _parent *BACnetContextTag
 	var typeSwitchError error
 	switch {
-	case dataType == BACnetDataType_NULL: // BACnetComplexTagNull
-		_parent, typeSwitchError = BACnetComplexTagNullParse(readBuffer, tagNumberArgument, dataType)
-	case dataType == BACnetDataType_BOOLEAN: // BACnetComplexTagBoolean
-		_parent, typeSwitchError = BACnetComplexTagBooleanParse(readBuffer, tagNumberArgument, dataType)
-	case dataType == BACnetDataType_UNSIGNED_INTEGER: // BACnetComplexTagUnsignedInteger
-		_parent, typeSwitchError = BACnetComplexTagUnsignedIntegerParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_SIGNED_INTEGER: // BACnetComplexTagSignedInteger
-		_parent, typeSwitchError = BACnetComplexTagSignedIntegerParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_REAL: // BACnetComplexTagReal
-		_parent, typeSwitchError = BACnetComplexTagRealParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_DOUBLE: // BACnetComplexTagDouble
-		_parent, typeSwitchError = BACnetComplexTagDoubleParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_OCTET_STRING: // BACnetComplexTagOctetString
-		_parent, typeSwitchError = BACnetComplexTagOctetStringParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_CHARACTER_STRING: // BACnetComplexTagCharacterString
-		_parent, typeSwitchError = BACnetComplexTagCharacterStringParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_BIT_STRING: // BACnetComplexTagBitString
-		_parent, typeSwitchError = BACnetComplexTagBitStringParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_ENUMERATED: // BACnetComplexTagEnumerated
-		_parent, typeSwitchError = BACnetComplexTagEnumeratedParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_DATE: // BACnetComplexTagDate
-		_parent, typeSwitchError = BACnetComplexTagDateParse(readBuffer, tagNumberArgument, dataType)
-	case dataType == BACnetDataType_TIME: // BACnetComplexTagTime
-		_parent, typeSwitchError = BACnetComplexTagTimeParse(readBuffer, tagNumberArgument, dataType)
-	case dataType == BACnetDataType_BACNET_OBJECT_IDENTIFIER: // BACnetComplexTagObjectIdentifier
-		_parent, typeSwitchError = BACnetComplexTagObjectIdentifierParse(readBuffer, tagNumberArgument, dataType)
-	case dataType == BACnetDataType_BACNET_PROPERTY_IDENTIFIER: // BACnetComplexTagPropertyIdentifier
-		_parent, typeSwitchError = BACnetComplexTagPropertyIdentifierParse(readBuffer, tagNumberArgument, dataType, actualLength)
-	case dataType == BACnetDataType_BACNET_DEVICE_STATE: // BACnetComplexTagDeviceState
-		_parent, typeSwitchError = BACnetComplexTagDeviceStateParse(readBuffer, tagNumberArgument, dataType)
+	case dataType == BACnetDataType_NULL: // BACnetContextTagNull
+		_parent, typeSwitchError = BACnetContextTagNullParse(readBuffer, tagNumberArgument, dataType)
+	case dataType == BACnetDataType_BOOLEAN: // BACnetContextTagBoolean
+		_parent, typeSwitchError = BACnetContextTagBooleanParse(readBuffer, tagNumberArgument, dataType)
+	case dataType == BACnetDataType_UNSIGNED_INTEGER: // BACnetContextTagUnsignedInteger
+		_parent, typeSwitchError = BACnetContextTagUnsignedIntegerParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_SIGNED_INTEGER: // BACnetContextTagSignedInteger
+		_parent, typeSwitchError = BACnetContextTagSignedIntegerParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_REAL: // BACnetContextTagReal
+		_parent, typeSwitchError = BACnetContextTagRealParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_DOUBLE: // BACnetContextTagDouble
+		_parent, typeSwitchError = BACnetContextTagDoubleParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_OCTET_STRING: // BACnetContextTagOctetString
+		_parent, typeSwitchError = BACnetContextTagOctetStringParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_CHARACTER_STRING: // BACnetContextTagCharacterString
+		_parent, typeSwitchError = BACnetContextTagCharacterStringParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_BIT_STRING: // BACnetContextTagBitString
+		_parent, typeSwitchError = BACnetContextTagBitStringParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_ENUMERATED: // BACnetContextTagEnumerated
+		_parent, typeSwitchError = BACnetContextTagEnumeratedParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_DATE: // BACnetContextTagDate
+		_parent, typeSwitchError = BACnetContextTagDateParse(readBuffer, tagNumberArgument, dataType)
+	case dataType == BACnetDataType_TIME: // BACnetContextTagTime
+		_parent, typeSwitchError = BACnetContextTagTimeParse(readBuffer, tagNumberArgument, dataType)
+	case dataType == BACnetDataType_BACNET_OBJECT_IDENTIFIER: // BACnetContextTagObjectIdentifier
+		_parent, typeSwitchError = BACnetContextTagObjectIdentifierParse(readBuffer, tagNumberArgument, dataType)
+	case dataType == BACnetDataType_BACNET_PROPERTY_IDENTIFIER: // BACnetContextTagPropertyIdentifier
+		_parent, typeSwitchError = BACnetContextTagPropertyIdentifierParse(readBuffer, tagNumberArgument, dataType, actualLength)
+	case dataType == BACnetDataType_BACNET_DEVICE_STATE: // BACnetContextTagDeviceState
+		_parent, typeSwitchError = BACnetContextTagDeviceStateParse(readBuffer, tagNumberArgument, dataType)
 	default:
 		// TODO: return actual type
 		typeSwitchError = errors.New("Unmapped type")
@@ -250,7 +250,7 @@ func BACnetComplexTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8,
 		return nil, errors.Wrap(typeSwitchError, "Error parsing sub-type for type-switch.")
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTag"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTag"); closeErr != nil {
 		return nil, closeErr
 	}
 
@@ -259,12 +259,12 @@ func BACnetComplexTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8,
 	return _parent, nil
 }
 
-func (m *BACnetComplexTag) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTag) Serialize(writeBuffer utils.WriteBuffer) error {
 	return m.Child.Serialize(writeBuffer)
 }
 
-func (m *BACnetComplexTag) SerializeParent(writeBuffer utils.WriteBuffer, child IBACnetComplexTag, serializeChildFunction func() error) error {
-	if pushErr := writeBuffer.PushContext("BACnetComplexTag"); pushErr != nil {
+func (m *BACnetContextTag) SerializeParent(writeBuffer utils.WriteBuffer, child IBACnetContextTag, serializeChildFunction func() error) error {
+	if pushErr := writeBuffer.PushContext("BACnetContextTag"); pushErr != nil {
 		return pushErr
 	}
 
@@ -328,13 +328,13 @@ func (m *BACnetComplexTag) SerializeParent(writeBuffer utils.WriteBuffer, child
 		return errors.Wrap(_typeSwitchErr, "Error serializing sub-type field")
 	}
 
-	if popErr := writeBuffer.PopContext("BACnetComplexTag"); popErr != nil {
+	if popErr := writeBuffer.PopContext("BACnetContextTag"); popErr != nil {
 		return popErr
 	}
 	return nil
 }
 
-func (m *BACnetComplexTag) String() string {
+func (m *BACnetContextTag) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagBitString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBitString.go
similarity index 73%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagBitString.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBitString.go
index b04781c..4e2cb9c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagBitString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBitString.go
@@ -27,15 +27,15 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagBitString struct {
-	*BACnetComplexTag
+type BACnetContextTagBitString struct {
+	*BACnetContextTag
 	UnusedBits        uint8
 	Data              []int8
 	ActualLengthInBit uint16
 }
 
 // The corresponding interface
-type IBACnetComplexTagBitString interface {
+type IBACnetContextTagBitString interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -44,11 +44,11 @@ type IBACnetComplexTagBitString interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagBitString) DataType() BACnetDataType {
+func (m *BACnetContextTagBitString) DataType() BACnetDataType {
 	return BACnetDataType_BIT_STRING
 }
 
-func (m *BACnetComplexTagBitString) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagBitString) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -58,44 +58,44 @@ func (m *BACnetComplexTagBitString) InitializeParent(parent *BACnetComplexTag, t
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagBitString(unusedBits uint8, data []int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagBitString{
+func NewBACnetContextTagBitString(unusedBits uint8, data []int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagBitString{
 		UnusedBits:       unusedBits,
 		Data:             data,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagBitString(structType interface{}) *BACnetComplexTagBitString {
-	castFunc := func(typ interface{}) *BACnetComplexTagBitString {
-		if casted, ok := typ.(BACnetComplexTagBitString); ok {
+func CastBACnetContextTagBitString(structType interface{}) *BACnetContextTagBitString {
+	castFunc := func(typ interface{}) *BACnetContextTagBitString {
+		if casted, ok := typ.(BACnetContextTagBitString); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagBitString); ok {
+		if casted, ok := typ.(*BACnetContextTagBitString); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagBitString(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagBitString(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagBitString(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagBitString(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagBitString) GetTypeName() string {
-	return "BACnetComplexTagBitString"
+func (m *BACnetContextTagBitString) GetTypeName() string {
+	return "BACnetContextTagBitString"
 }
 
-func (m *BACnetComplexTagBitString) LengthInBits() uint16 {
+func (m *BACnetContextTagBitString) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagBitString) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagBitString) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -111,12 +111,12 @@ func (m *BACnetComplexTagBitString) LengthInBitsConditional(lastItem bool) uint1
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagBitString) LengthInBytes() uint16 {
+func (m *BACnetContextTagBitString) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagBitStringParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagBitString"); pullErr != nil {
+func BACnetContextTagBitStringParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagBitString"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -152,24 +152,24 @@ func BACnetComplexTagBitStringParse(readBuffer utils.ReadBuffer, tagNumberArgume
 		return nil, closeErr
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagBitString"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagBitString"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagBitString{
+	_child := &BACnetContextTagBitString{
 		UnusedBits:        unusedBits,
 		Data:              data,
 		ActualLengthInBit: actualLengthInBit,
-		BACnetComplexTag:  &BACnetComplexTag{},
+		BACnetContextTag:  &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagBitString) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagBitString) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagBitString"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagBitString"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -200,7 +200,7 @@ func (m *BACnetComplexTagBitString) Serialize(writeBuffer utils.WriteBuffer) err
 			}
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagBitString"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagBitString"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -208,7 +208,7 @@ func (m *BACnetComplexTagBitString) Serialize(writeBuffer utils.WriteBuffer) err
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagBitString) String() string {
+func (m *BACnetContextTagBitString) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagBoolean.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go
similarity index 57%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagBoolean.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go
index dacd2ca..b86f7be 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagBoolean.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go
@@ -26,12 +26,12 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagBoolean struct {
-	*BACnetComplexTag
+type BACnetContextTagBoolean struct {
+	*BACnetContextTag
 }
 
 // The corresponding interface
-type IBACnetComplexTagBoolean interface {
+type IBACnetContextTagBoolean interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -40,11 +40,11 @@ type IBACnetComplexTagBoolean interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagBoolean) DataType() BACnetDataType {
+func (m *BACnetContextTagBoolean) DataType() BACnetDataType {
 	return BACnetDataType_BOOLEAN
 }
 
-func (m *BACnetComplexTagBoolean) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagBoolean) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -54,75 +54,75 @@ func (m *BACnetComplexTagBoolean) InitializeParent(parent *BACnetComplexTag, tag
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagBoolean(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagBoolean{
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+func NewBACnetContextTagBoolean(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagBoolean{
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagBoolean(structType interface{}) *BACnetComplexTagBoolean {
-	castFunc := func(typ interface{}) *BACnetComplexTagBoolean {
-		if casted, ok := typ.(BACnetComplexTagBoolean); ok {
+func CastBACnetContextTagBoolean(structType interface{}) *BACnetContextTagBoolean {
+	castFunc := func(typ interface{}) *BACnetContextTagBoolean {
+		if casted, ok := typ.(BACnetContextTagBoolean); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagBoolean); ok {
+		if casted, ok := typ.(*BACnetContextTagBoolean); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagBoolean(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagBoolean(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagBoolean(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagBoolean(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagBoolean) GetTypeName() string {
-	return "BACnetComplexTagBoolean"
+func (m *BACnetContextTagBoolean) GetTypeName() string {
+	return "BACnetContextTagBoolean"
 }
 
-func (m *BACnetComplexTagBoolean) LengthInBits() uint16 {
+func (m *BACnetContextTagBoolean) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagBoolean) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagBoolean) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagBoolean) LengthInBytes() uint16 {
+func (m *BACnetContextTagBoolean) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagBooleanParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagBoolean"); pullErr != nil {
+func BACnetContextTagBooleanParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagBoolean"); pullErr != nil {
 		return nil, pullErr
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagBoolean"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagBoolean"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagBoolean{
-		BACnetComplexTag: &BACnetComplexTag{},
+	_child := &BACnetContextTagBoolean{
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagBoolean) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagBoolean) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagBoolean"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagBoolean"); pushErr != nil {
 			return pushErr
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagBoolean"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagBoolean"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -130,7 +130,7 @@ func (m *BACnetComplexTagBoolean) Serialize(writeBuffer utils.WriteBuffer) error
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagBoolean) String() string {
+func (m *BACnetContextTagBoolean) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagCharacterString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagCharacterString.go
similarity index 70%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagCharacterString.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagCharacterString.go
index 13ce1bb..34500fd 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagCharacterString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagCharacterString.go
@@ -27,15 +27,15 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagCharacterString struct {
-	*BACnetComplexTag
+type BACnetContextTagCharacterString struct {
+	*BACnetContextTag
 	Encoding          BACnetCharacterEncoding
 	Value             string
 	ActualLengthInBit uint16
 }
 
 // The corresponding interface
-type IBACnetComplexTagCharacterString interface {
+type IBACnetContextTagCharacterString interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -44,11 +44,11 @@ type IBACnetComplexTagCharacterString interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagCharacterString) DataType() BACnetDataType {
+func (m *BACnetContextTagCharacterString) DataType() BACnetDataType {
 	return BACnetDataType_CHARACTER_STRING
 }
 
-func (m *BACnetComplexTagCharacterString) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagCharacterString) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -58,44 +58,44 @@ func (m *BACnetComplexTagCharacterString) InitializeParent(parent *BACnetComplex
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagCharacterString(encoding BACnetCharacterEncoding, value string, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagCharacterString{
+func NewBACnetContextTagCharacterString(encoding BACnetCharacterEncoding, value string, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagCharacterString{
 		Encoding:         encoding,
 		Value:            value,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagCharacterString(structType interface{}) *BACnetComplexTagCharacterString {
-	castFunc := func(typ interface{}) *BACnetComplexTagCharacterString {
-		if casted, ok := typ.(BACnetComplexTagCharacterString); ok {
+func CastBACnetContextTagCharacterString(structType interface{}) *BACnetContextTagCharacterString {
+	castFunc := func(typ interface{}) *BACnetContextTagCharacterString {
+		if casted, ok := typ.(BACnetContextTagCharacterString); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagCharacterString); ok {
+		if casted, ok := typ.(*BACnetContextTagCharacterString); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagCharacterString(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagCharacterString(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagCharacterString(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagCharacterString(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagCharacterString) GetTypeName() string {
-	return "BACnetComplexTagCharacterString"
+func (m *BACnetContextTagCharacterString) GetTypeName() string {
+	return "BACnetContextTagCharacterString"
 }
 
-func (m *BACnetComplexTagCharacterString) LengthInBits() uint16 {
+func (m *BACnetContextTagCharacterString) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagCharacterString) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagCharacterString) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Simple field (encoding)
@@ -109,12 +109,12 @@ func (m *BACnetComplexTagCharacterString) LengthInBitsConditional(lastItem bool)
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagCharacterString) LengthInBytes() uint16 {
+func (m *BACnetContextTagCharacterString) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagCharacterStringParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagCharacterString"); pullErr != nil {
+func BACnetContextTagCharacterStringParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagCharacterString"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -142,24 +142,24 @@ func BACnetComplexTagCharacterStringParse(readBuffer utils.ReadBuffer, tagNumber
 	}
 	value := _value
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagCharacterString"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagCharacterString"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagCharacterString{
+	_child := &BACnetContextTagCharacterString{
 		Encoding:          encoding,
 		Value:             value,
 		ActualLengthInBit: actualLengthInBit,
-		BACnetComplexTag:  &BACnetComplexTag{},
+		BACnetContextTag:  &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagCharacterString) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagCharacterString) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagCharacterString"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagCharacterString"); pushErr != nil {
 			return pushErr
 		}
 
@@ -186,7 +186,7 @@ func (m *BACnetComplexTagCharacterString) Serialize(writeBuffer utils.WriteBuffe
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagCharacterString"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagCharacterString"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -194,7 +194,7 @@ func (m *BACnetComplexTagCharacterString) Serialize(writeBuffer utils.WriteBuffe
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagCharacterString) String() string {
+func (m *BACnetContextTagCharacterString) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDate.go
similarity index 85%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDate.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDate.go
index f5b6803..7104870 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDate.go
@@ -27,8 +27,8 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagDate struct {
-	*BACnetComplexTag
+type BACnetContextTagDate struct {
+	*BACnetContextTag
 	YearMinus1900          int8
 	Month                  int8
 	DayOfMonth             int8
@@ -46,7 +46,7 @@ type BACnetComplexTagDate struct {
 }
 
 // The corresponding interface
-type IBACnetComplexTagDate interface {
+type IBACnetContextTagDate interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -55,11 +55,11 @@ type IBACnetComplexTagDate interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagDate) DataType() BACnetDataType {
+func (m *BACnetContextTagDate) DataType() BACnetDataType {
 	return BACnetDataType_DATE
 }
 
-func (m *BACnetComplexTagDate) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagDate) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -69,46 +69,46 @@ func (m *BACnetComplexTagDate) InitializeParent(parent *BACnetComplexTag, tagNum
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagDate(yearMinus1900 int8, month int8, dayOfMonth int8, dayOfWeek int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagDate{
+func NewBACnetContextTagDate(yearMinus1900 int8, month int8, dayOfMonth int8, dayOfWeek int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagDate{
 		YearMinus1900:    yearMinus1900,
 		Month:            month,
 		DayOfMonth:       dayOfMonth,
 		DayOfWeek:        dayOfWeek,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagDate(structType interface{}) *BACnetComplexTagDate {
-	castFunc := func(typ interface{}) *BACnetComplexTagDate {
-		if casted, ok := typ.(BACnetComplexTagDate); ok {
+func CastBACnetContextTagDate(structType interface{}) *BACnetContextTagDate {
+	castFunc := func(typ interface{}) *BACnetContextTagDate {
+		if casted, ok := typ.(BACnetContextTagDate); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagDate); ok {
+		if casted, ok := typ.(*BACnetContextTagDate); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagDate(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagDate(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagDate(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagDate(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagDate) GetTypeName() string {
-	return "BACnetComplexTagDate"
+func (m *BACnetContextTagDate) GetTypeName() string {
+	return "BACnetContextTagDate"
 }
 
-func (m *BACnetComplexTagDate) LengthInBits() uint16 {
+func (m *BACnetContextTagDate) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagDate) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagDate) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -146,12 +146,12 @@ func (m *BACnetComplexTagDate) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagDate) LengthInBytes() uint16 {
+func (m *BACnetContextTagDate) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagDateParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagDate"); pullErr != nil {
+func BACnetContextTagDateParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagDate"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -223,12 +223,12 @@ func BACnetComplexTagDateParse(readBuffer utils.ReadBuffer, tagNumberArgument ui
 	_dayOfWeekIsWildcard := bool((dayOfWeek) == (wildcard))
 	dayOfWeekIsWildcard := bool(_dayOfWeekIsWildcard)
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagDate"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagDate"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagDate{
+	_child := &BACnetContextTagDate{
 		YearMinus1900:          yearMinus1900,
 		Month:                  month,
 		DayOfMonth:             dayOfMonth,
@@ -243,15 +243,15 @@ func BACnetComplexTagDateParse(readBuffer utils.ReadBuffer, tagNumberArgument ui
 		OddDayOfMonthWildcard:  oddDayOfMonthWildcard,
 		EvenDayOfMonthWildcard: evenDayOfMonthWildcard,
 		DayOfWeekIsWildcard:    dayOfWeekIsWildcard,
-		BACnetComplexTag:       &BACnetComplexTag{},
+		BACnetContextTag:       &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagDate) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagDate) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagDate"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagDate"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -323,7 +323,7 @@ func (m *BACnetComplexTagDate) Serialize(writeBuffer utils.WriteBuffer) error {
 			return errors.Wrap(_dayOfWeekIsWildcardErr, "Error serializing 'dayOfWeekIsWildcard' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagDate"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagDate"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -331,7 +331,7 @@ func (m *BACnetComplexTagDate) Serialize(writeBuffer utils.WriteBuffer) error {
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagDate) String() string {
+func (m *BACnetContextTagDate) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDeviceState.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDeviceState.go
similarity index 64%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDeviceState.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDeviceState.go
index 9176c7b..68f494c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDeviceState.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDeviceState.go
@@ -27,13 +27,13 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagDeviceState struct {
-	*BACnetComplexTag
+type BACnetContextTagDeviceState struct {
+	*BACnetContextTag
 	State BACnetDeviceState
 }
 
 // The corresponding interface
-type IBACnetComplexTagDeviceState interface {
+type IBACnetContextTagDeviceState interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -42,11 +42,11 @@ type IBACnetComplexTagDeviceState interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagDeviceState) DataType() BACnetDataType {
+func (m *BACnetContextTagDeviceState) DataType() BACnetDataType {
 	return BACnetDataType_BACNET_DEVICE_STATE
 }
 
-func (m *BACnetComplexTagDeviceState) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagDeviceState) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -56,43 +56,43 @@ func (m *BACnetComplexTagDeviceState) InitializeParent(parent *BACnetComplexTag,
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagDeviceState(state BACnetDeviceState, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagDeviceState{
+func NewBACnetContextTagDeviceState(state BACnetDeviceState, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagDeviceState{
 		State:            state,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagDeviceState(structType interface{}) *BACnetComplexTagDeviceState {
-	castFunc := func(typ interface{}) *BACnetComplexTagDeviceState {
-		if casted, ok := typ.(BACnetComplexTagDeviceState); ok {
+func CastBACnetContextTagDeviceState(structType interface{}) *BACnetContextTagDeviceState {
+	castFunc := func(typ interface{}) *BACnetContextTagDeviceState {
+		if casted, ok := typ.(BACnetContextTagDeviceState); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagDeviceState); ok {
+		if casted, ok := typ.(*BACnetContextTagDeviceState); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagDeviceState(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagDeviceState(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagDeviceState(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagDeviceState(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagDeviceState) GetTypeName() string {
-	return "BACnetComplexTagDeviceState"
+func (m *BACnetContextTagDeviceState) GetTypeName() string {
+	return "BACnetContextTagDeviceState"
 }
 
-func (m *BACnetComplexTagDeviceState) LengthInBits() uint16 {
+func (m *BACnetContextTagDeviceState) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagDeviceState) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagDeviceState) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Simple field (state)
@@ -101,12 +101,12 @@ func (m *BACnetComplexTagDeviceState) LengthInBitsConditional(lastItem bool) uin
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagDeviceState) LengthInBytes() uint16 {
+func (m *BACnetContextTagDeviceState) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagDeviceStateParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagDeviceState"); pullErr != nil {
+func BACnetContextTagDeviceStateParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagDeviceState"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -123,22 +123,22 @@ func BACnetComplexTagDeviceStateParse(readBuffer utils.ReadBuffer, tagNumberArgu
 		return nil, closeErr
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagDeviceState"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagDeviceState"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagDeviceState{
+	_child := &BACnetContextTagDeviceState{
 		State:            state,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagDeviceState) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagDeviceState) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagDeviceState"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagDeviceState"); pushErr != nil {
 			return pushErr
 		}
 
@@ -154,7 +154,7 @@ func (m *BACnetComplexTagDeviceState) Serialize(writeBuffer utils.WriteBuffer) e
 			return errors.Wrap(_stateErr, "Error serializing 'state' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagDeviceState"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagDeviceState"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -162,7 +162,7 @@ func (m *BACnetComplexTagDeviceState) Serialize(writeBuffer utils.WriteBuffer) e
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagDeviceState) String() string {
+func (m *BACnetContextTagDeviceState) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDouble.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDouble.go
similarity index 63%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDouble.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDouble.go
index 660ba21..a351985 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagDouble.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagDouble.go
@@ -27,13 +27,13 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagDouble struct {
-	*BACnetComplexTag
+type BACnetContextTagDouble struct {
+	*BACnetContextTag
 	Value float64
 }
 
 // The corresponding interface
-type IBACnetComplexTagDouble interface {
+type IBACnetContextTagDouble interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -42,11 +42,11 @@ type IBACnetComplexTagDouble interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagDouble) DataType() BACnetDataType {
+func (m *BACnetContextTagDouble) DataType() BACnetDataType {
 	return BACnetDataType_DOUBLE
 }
 
-func (m *BACnetComplexTagDouble) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagDouble) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -56,43 +56,43 @@ func (m *BACnetComplexTagDouble) InitializeParent(parent *BACnetComplexTag, tagN
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagDouble(value float64, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagDouble{
+func NewBACnetContextTagDouble(value float64, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagDouble{
 		Value:            value,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagDouble(structType interface{}) *BACnetComplexTagDouble {
-	castFunc := func(typ interface{}) *BACnetComplexTagDouble {
-		if casted, ok := typ.(BACnetComplexTagDouble); ok {
+func CastBACnetContextTagDouble(structType interface{}) *BACnetContextTagDouble {
+	castFunc := func(typ interface{}) *BACnetContextTagDouble {
+		if casted, ok := typ.(BACnetContextTagDouble); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagDouble); ok {
+		if casted, ok := typ.(*BACnetContextTagDouble); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagDouble(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagDouble(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagDouble(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagDouble(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagDouble) GetTypeName() string {
-	return "BACnetComplexTagDouble"
+func (m *BACnetContextTagDouble) GetTypeName() string {
+	return "BACnetContextTagDouble"
 }
 
-func (m *BACnetComplexTagDouble) LengthInBits() uint16 {
+func (m *BACnetContextTagDouble) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagDouble) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagDouble) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Simple field (value)
@@ -101,12 +101,12 @@ func (m *BACnetComplexTagDouble) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagDouble) LengthInBytes() uint16 {
+func (m *BACnetContextTagDouble) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagDoubleParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagDouble"); pullErr != nil {
+func BACnetContextTagDoubleParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagDouble"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -117,22 +117,22 @@ func BACnetComplexTagDoubleParse(readBuffer utils.ReadBuffer, tagNumberArgument
 	}
 	value := _value
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagDouble"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagDouble"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagDouble{
+	_child := &BACnetContextTagDouble{
 		Value:            value,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagDouble) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagDouble) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagDouble"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagDouble"); pushErr != nil {
 			return pushErr
 		}
 
@@ -143,7 +143,7 @@ func (m *BACnetComplexTagDouble) Serialize(writeBuffer utils.WriteBuffer) error
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagDouble"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagDouble"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -151,7 +151,7 @@ func (m *BACnetComplexTagDouble) Serialize(writeBuffer utils.WriteBuffer) error
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagDouble) String() string {
+func (m *BACnetContextTagDouble) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagEnumerated.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagEnumerated.go
similarity index 70%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagEnumerated.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagEnumerated.go
index 2f30bc1..91d25f7 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagEnumerated.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagEnumerated.go
@@ -27,14 +27,14 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagEnumerated struct {
-	*BACnetComplexTag
+type BACnetContextTagEnumerated struct {
+	*BACnetContextTag
 	Data              []int8
 	ActualLengthInBit uint16
 }
 
 // The corresponding interface
-type IBACnetComplexTagEnumerated interface {
+type IBACnetContextTagEnumerated interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -43,11 +43,11 @@ type IBACnetComplexTagEnumerated interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagEnumerated) DataType() BACnetDataType {
+func (m *BACnetContextTagEnumerated) DataType() BACnetDataType {
 	return BACnetDataType_ENUMERATED
 }
 
-func (m *BACnetComplexTagEnumerated) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagEnumerated) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -57,43 +57,43 @@ func (m *BACnetComplexTagEnumerated) InitializeParent(parent *BACnetComplexTag,
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagEnumerated(data []int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagEnumerated{
+func NewBACnetContextTagEnumerated(data []int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagEnumerated{
 		Data:             data,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagEnumerated(structType interface{}) *BACnetComplexTagEnumerated {
-	castFunc := func(typ interface{}) *BACnetComplexTagEnumerated {
-		if casted, ok := typ.(BACnetComplexTagEnumerated); ok {
+func CastBACnetContextTagEnumerated(structType interface{}) *BACnetContextTagEnumerated {
+	castFunc := func(typ interface{}) *BACnetContextTagEnumerated {
+		if casted, ok := typ.(BACnetContextTagEnumerated); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagEnumerated); ok {
+		if casted, ok := typ.(*BACnetContextTagEnumerated); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagEnumerated(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagEnumerated(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagEnumerated(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagEnumerated(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagEnumerated) GetTypeName() string {
-	return "BACnetComplexTagEnumerated"
+func (m *BACnetContextTagEnumerated) GetTypeName() string {
+	return "BACnetContextTagEnumerated"
 }
 
-func (m *BACnetComplexTagEnumerated) LengthInBits() uint16 {
+func (m *BACnetContextTagEnumerated) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagEnumerated) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagEnumerated) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -106,12 +106,12 @@ func (m *BACnetComplexTagEnumerated) LengthInBitsConditional(lastItem bool) uint
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagEnumerated) LengthInBytes() uint16 {
+func (m *BACnetContextTagEnumerated) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagEnumeratedParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagEnumerated"); pullErr != nil {
+func BACnetContextTagEnumeratedParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagEnumerated"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -140,23 +140,23 @@ func BACnetComplexTagEnumeratedParse(readBuffer utils.ReadBuffer, tagNumberArgum
 		return nil, closeErr
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagEnumerated"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagEnumerated"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagEnumerated{
+	_child := &BACnetContextTagEnumerated{
 		Data:              data,
 		ActualLengthInBit: actualLengthInBit,
-		BACnetComplexTag:  &BACnetComplexTag{},
+		BACnetContextTag:  &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagEnumerated) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagEnumerated) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagEnumerated"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagEnumerated"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -180,7 +180,7 @@ func (m *BACnetComplexTagEnumerated) Serialize(writeBuffer utils.WriteBuffer) er
 			}
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagEnumerated"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagEnumerated"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -188,7 +188,7 @@ func (m *BACnetComplexTagEnumerated) Serialize(writeBuffer utils.WriteBuffer) er
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagEnumerated) String() string {
+func (m *BACnetContextTagEnumerated) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagNull.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagNull.go
similarity index 57%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagNull.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagNull.go
index 0577cf6..26892cb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagNull.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagNull.go
@@ -26,12 +26,12 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagNull struct {
-	*BACnetComplexTag
+type BACnetContextTagNull struct {
+	*BACnetContextTag
 }
 
 // The corresponding interface
-type IBACnetComplexTagNull interface {
+type IBACnetContextTagNull interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -40,11 +40,11 @@ type IBACnetComplexTagNull interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagNull) DataType() BACnetDataType {
+func (m *BACnetContextTagNull) DataType() BACnetDataType {
 	return BACnetDataType_NULL
 }
 
-func (m *BACnetComplexTagNull) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagNull) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -54,75 +54,75 @@ func (m *BACnetComplexTagNull) InitializeParent(parent *BACnetComplexTag, tagNum
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagNull(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagNull{
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+func NewBACnetContextTagNull(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagNull{
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagNull(structType interface{}) *BACnetComplexTagNull {
-	castFunc := func(typ interface{}) *BACnetComplexTagNull {
-		if casted, ok := typ.(BACnetComplexTagNull); ok {
+func CastBACnetContextTagNull(structType interface{}) *BACnetContextTagNull {
+	castFunc := func(typ interface{}) *BACnetContextTagNull {
+		if casted, ok := typ.(BACnetContextTagNull); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagNull); ok {
+		if casted, ok := typ.(*BACnetContextTagNull); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagNull(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagNull(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagNull(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagNull(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagNull) GetTypeName() string {
-	return "BACnetComplexTagNull"
+func (m *BACnetContextTagNull) GetTypeName() string {
+	return "BACnetContextTagNull"
 }
 
-func (m *BACnetComplexTagNull) LengthInBits() uint16 {
+func (m *BACnetContextTagNull) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagNull) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagNull) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagNull) LengthInBytes() uint16 {
+func (m *BACnetContextTagNull) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagNullParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagNull"); pullErr != nil {
+func BACnetContextTagNullParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagNull"); pullErr != nil {
 		return nil, pullErr
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagNull"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagNull"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagNull{
-		BACnetComplexTag: &BACnetComplexTag{},
+	_child := &BACnetContextTagNull{
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagNull) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagNull) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagNull"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagNull"); pushErr != nil {
 			return pushErr
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagNull"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagNull"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -130,7 +130,7 @@ func (m *BACnetComplexTagNull) Serialize(writeBuffer utils.WriteBuffer) error {
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagNull) String() string {
+func (m *BACnetContextTagNull) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagObjectIdentifier.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagObjectIdentifier.go
similarity index 69%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagObjectIdentifier.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagObjectIdentifier.go
index cdf0e84..fa7f3f4 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagObjectIdentifier.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagObjectIdentifier.go
@@ -27,14 +27,14 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagObjectIdentifier struct {
-	*BACnetComplexTag
+type BACnetContextTagObjectIdentifier struct {
+	*BACnetContextTag
 	ObjectType     BACnetObjectType
 	InstanceNumber uint32
 }
 
 // The corresponding interface
-type IBACnetComplexTagObjectIdentifier interface {
+type IBACnetContextTagObjectIdentifier interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -43,11 +43,11 @@ type IBACnetComplexTagObjectIdentifier interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagObjectIdentifier) DataType() BACnetDataType {
+func (m *BACnetContextTagObjectIdentifier) DataType() BACnetDataType {
 	return BACnetDataType_BACNET_OBJECT_IDENTIFIER
 }
 
-func (m *BACnetComplexTagObjectIdentifier) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagObjectIdentifier) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -57,44 +57,44 @@ func (m *BACnetComplexTagObjectIdentifier) InitializeParent(parent *BACnetComple
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagObjectIdentifier(objectType BACnetObjectType, instanceNumber uint32, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagObjectIdentifier{
+func NewBACnetContextTagObjectIdentifier(objectType BACnetObjectType, instanceNumber uint32, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagObjectIdentifier{
 		ObjectType:       objectType,
 		InstanceNumber:   instanceNumber,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagObjectIdentifier(structType interface{}) *BACnetComplexTagObjectIdentifier {
-	castFunc := func(typ interface{}) *BACnetComplexTagObjectIdentifier {
-		if casted, ok := typ.(BACnetComplexTagObjectIdentifier); ok {
+func CastBACnetContextTagObjectIdentifier(structType interface{}) *BACnetContextTagObjectIdentifier {
+	castFunc := func(typ interface{}) *BACnetContextTagObjectIdentifier {
+		if casted, ok := typ.(BACnetContextTagObjectIdentifier); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagObjectIdentifier); ok {
+		if casted, ok := typ.(*BACnetContextTagObjectIdentifier); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagObjectIdentifier(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagObjectIdentifier(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagObjectIdentifier(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagObjectIdentifier(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagObjectIdentifier) GetTypeName() string {
-	return "BACnetComplexTagObjectIdentifier"
+func (m *BACnetContextTagObjectIdentifier) GetTypeName() string {
+	return "BACnetContextTagObjectIdentifier"
 }
 
-func (m *BACnetComplexTagObjectIdentifier) LengthInBits() uint16 {
+func (m *BACnetContextTagObjectIdentifier) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagObjectIdentifier) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagObjectIdentifier) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Simple field (objectType)
@@ -106,12 +106,12 @@ func (m *BACnetComplexTagObjectIdentifier) LengthInBitsConditional(lastItem bool
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagObjectIdentifier) LengthInBytes() uint16 {
+func (m *BACnetContextTagObjectIdentifier) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagObjectIdentifierParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagObjectIdentifier"); pullErr != nil {
+func BACnetContextTagObjectIdentifierParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagObjectIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -135,23 +135,23 @@ func BACnetComplexTagObjectIdentifierParse(readBuffer utils.ReadBuffer, tagNumbe
 	}
 	instanceNumber := _instanceNumber
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagObjectIdentifier"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagObjectIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagObjectIdentifier{
+	_child := &BACnetContextTagObjectIdentifier{
 		ObjectType:       objectType,
 		InstanceNumber:   instanceNumber,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagObjectIdentifier) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagObjectIdentifier) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagObjectIdentifier"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagObjectIdentifier"); pushErr != nil {
 			return pushErr
 		}
 
@@ -174,7 +174,7 @@ func (m *BACnetComplexTagObjectIdentifier) Serialize(writeBuffer utils.WriteBuff
 			return errors.Wrap(_instanceNumberErr, "Error serializing 'instanceNumber' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagObjectIdentifier"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagObjectIdentifier"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -182,7 +182,7 @@ func (m *BACnetComplexTagObjectIdentifier) Serialize(writeBuffer utils.WriteBuff
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagObjectIdentifier) String() string {
+func (m *BACnetContextTagObjectIdentifier) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagOctetString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagOctetString.go
similarity index 67%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagOctetString.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagOctetString.go
index 7ef4169..b8a0d85 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagOctetString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagOctetString.go
@@ -27,14 +27,14 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagOctetString struct {
-	*BACnetComplexTag
+type BACnetContextTagOctetString struct {
+	*BACnetContextTag
 	Value             string
 	ActualLengthInBit uint16
 }
 
 // The corresponding interface
-type IBACnetComplexTagOctetString interface {
+type IBACnetContextTagOctetString interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -43,11 +43,11 @@ type IBACnetComplexTagOctetString interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagOctetString) DataType() BACnetDataType {
+func (m *BACnetContextTagOctetString) DataType() BACnetDataType {
 	return BACnetDataType_OCTET_STRING
 }
 
-func (m *BACnetComplexTagOctetString) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagOctetString) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -57,43 +57,43 @@ func (m *BACnetComplexTagOctetString) InitializeParent(parent *BACnetComplexTag,
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagOctetString(value string, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagOctetString{
+func NewBACnetContextTagOctetString(value string, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagOctetString{
 		Value:            value,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagOctetString(structType interface{}) *BACnetComplexTagOctetString {
-	castFunc := func(typ interface{}) *BACnetComplexTagOctetString {
-		if casted, ok := typ.(BACnetComplexTagOctetString); ok {
+func CastBACnetContextTagOctetString(structType interface{}) *BACnetContextTagOctetString {
+	castFunc := func(typ interface{}) *BACnetContextTagOctetString {
+		if casted, ok := typ.(BACnetContextTagOctetString); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagOctetString); ok {
+		if casted, ok := typ.(*BACnetContextTagOctetString); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagOctetString(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagOctetString(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagOctetString(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagOctetString(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagOctetString) GetTypeName() string {
-	return "BACnetComplexTagOctetString"
+func (m *BACnetContextTagOctetString) GetTypeName() string {
+	return "BACnetContextTagOctetString"
 }
 
-func (m *BACnetComplexTagOctetString) LengthInBits() uint16 {
+func (m *BACnetContextTagOctetString) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagOctetString) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagOctetString) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -104,12 +104,12 @@ func (m *BACnetComplexTagOctetString) LengthInBitsConditional(lastItem bool) uin
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagOctetString) LengthInBytes() uint16 {
+func (m *BACnetContextTagOctetString) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagOctetStringParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagOctetString"); pullErr != nil {
+func BACnetContextTagOctetStringParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagOctetString"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -124,23 +124,23 @@ func BACnetComplexTagOctetStringParse(readBuffer utils.ReadBuffer, tagNumberArgu
 	}
 	value := _value
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagOctetString"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagOctetString"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagOctetString{
+	_child := &BACnetContextTagOctetString{
 		Value:             value,
 		ActualLengthInBit: actualLengthInBit,
-		BACnetComplexTag:  &BACnetComplexTag{},
+		BACnetContextTag:  &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagOctetString) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagOctetString) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagOctetString"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagOctetString"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -155,7 +155,7 @@ func (m *BACnetComplexTagOctetString) Serialize(writeBuffer utils.WriteBuffer) e
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagOctetString"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagOctetString"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -163,7 +163,7 @@ func (m *BACnetComplexTagOctetString) Serialize(writeBuffer utils.WriteBuffer) e
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagOctetString) String() string {
+func (m *BACnetContextTagOctetString) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagPropertyIdentifier.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagPropertyIdentifier.go
similarity index 62%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagPropertyIdentifier.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagPropertyIdentifier.go
index c9e72a6..06a6db2 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagPropertyIdentifier.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagPropertyIdentifier.go
@@ -27,13 +27,13 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagPropertyIdentifier struct {
-	*BACnetComplexTag
+type BACnetContextTagPropertyIdentifier struct {
+	*BACnetContextTag
 	Value BACnetPropertyIdentifier
 }
 
 // The corresponding interface
-type IBACnetComplexTagPropertyIdentifier interface {
+type IBACnetContextTagPropertyIdentifier interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -42,11 +42,11 @@ type IBACnetComplexTagPropertyIdentifier interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagPropertyIdentifier) DataType() BACnetDataType {
+func (m *BACnetContextTagPropertyIdentifier) DataType() BACnetDataType {
 	return BACnetDataType_BACNET_PROPERTY_IDENTIFIER
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagPropertyIdentifier) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -56,43 +56,43 @@ func (m *BACnetComplexTagPropertyIdentifier) InitializeParent(parent *BACnetComp
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagPropertyIdentifier(value BACnetPropertyIdentifier, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagPropertyIdentifier{
+func NewBACnetContextTagPropertyIdentifier(value BACnetPropertyIdentifier, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagPropertyIdentifier{
 		Value:            value,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagPropertyIdentifier(structType interface{}) *BACnetComplexTagPropertyIdentifier {
-	castFunc := func(typ interface{}) *BACnetComplexTagPropertyIdentifier {
-		if casted, ok := typ.(BACnetComplexTagPropertyIdentifier); ok {
+func CastBACnetContextTagPropertyIdentifier(structType interface{}) *BACnetContextTagPropertyIdentifier {
+	castFunc := func(typ interface{}) *BACnetContextTagPropertyIdentifier {
+		if casted, ok := typ.(BACnetContextTagPropertyIdentifier); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagPropertyIdentifier); ok {
+		if casted, ok := typ.(*BACnetContextTagPropertyIdentifier); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagPropertyIdentifier(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagPropertyIdentifier(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagPropertyIdentifier(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagPropertyIdentifier(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) GetTypeName() string {
-	return "BACnetComplexTagPropertyIdentifier"
+func (m *BACnetContextTagPropertyIdentifier) GetTypeName() string {
+	return "BACnetContextTagPropertyIdentifier"
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) LengthInBits() uint16 {
+func (m *BACnetContextTagPropertyIdentifier) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagPropertyIdentifier) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Manual Field (value)
@@ -101,12 +101,12 @@ func (m *BACnetComplexTagPropertyIdentifier) LengthInBitsConditional(lastItem bo
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) LengthInBytes() uint16 {
+func (m *BACnetContextTagPropertyIdentifier) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagPropertyIdentifierParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagPropertyIdentifier"); pullErr != nil {
+func BACnetContextTagPropertyIdentifierParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagPropertyIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -116,22 +116,22 @@ func BACnetComplexTagPropertyIdentifierParse(readBuffer utils.ReadBuffer, tagNum
 		return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 	}
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagPropertyIdentifier"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagPropertyIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagPropertyIdentifier{
+	_child := &BACnetContextTagPropertyIdentifier{
 		Value:            value,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagPropertyIdentifier) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagPropertyIdentifier"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagPropertyIdentifier"); pushErr != nil {
 			return pushErr
 		}
 
@@ -141,7 +141,7 @@ func (m *BACnetComplexTagPropertyIdentifier) Serialize(writeBuffer utils.WriteBu
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagPropertyIdentifier"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagPropertyIdentifier"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -149,7 +149,7 @@ func (m *BACnetComplexTagPropertyIdentifier) Serialize(writeBuffer utils.WriteBu
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagPropertyIdentifier) String() string {
+func (m *BACnetContextTagPropertyIdentifier) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagReal.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagReal.go
similarity index 64%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagReal.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagReal.go
index eaf03ad..145b6e0 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagReal.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagReal.go
@@ -27,13 +27,13 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagReal struct {
-	*BACnetComplexTag
+type BACnetContextTagReal struct {
+	*BACnetContextTag
 	Value float32
 }
 
 // The corresponding interface
-type IBACnetComplexTagReal interface {
+type IBACnetContextTagReal interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -42,11 +42,11 @@ type IBACnetComplexTagReal interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagReal) DataType() BACnetDataType {
+func (m *BACnetContextTagReal) DataType() BACnetDataType {
 	return BACnetDataType_REAL
 }
 
-func (m *BACnetComplexTagReal) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagReal) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -56,43 +56,43 @@ func (m *BACnetComplexTagReal) InitializeParent(parent *BACnetComplexTag, tagNum
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagReal(value float32, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagReal{
+func NewBACnetContextTagReal(value float32, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagReal{
 		Value:            value,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagReal(structType interface{}) *BACnetComplexTagReal {
-	castFunc := func(typ interface{}) *BACnetComplexTagReal {
-		if casted, ok := typ.(BACnetComplexTagReal); ok {
+func CastBACnetContextTagReal(structType interface{}) *BACnetContextTagReal {
+	castFunc := func(typ interface{}) *BACnetContextTagReal {
+		if casted, ok := typ.(BACnetContextTagReal); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagReal); ok {
+		if casted, ok := typ.(*BACnetContextTagReal); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagReal(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagReal(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagReal(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagReal(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagReal) GetTypeName() string {
-	return "BACnetComplexTagReal"
+func (m *BACnetContextTagReal) GetTypeName() string {
+	return "BACnetContextTagReal"
 }
 
-func (m *BACnetComplexTagReal) LengthInBits() uint16 {
+func (m *BACnetContextTagReal) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagReal) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagReal) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// Simple field (value)
@@ -101,12 +101,12 @@ func (m *BACnetComplexTagReal) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagReal) LengthInBytes() uint16 {
+func (m *BACnetContextTagReal) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagRealParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagReal"); pullErr != nil {
+func BACnetContextTagRealParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagReal"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -117,22 +117,22 @@ func BACnetComplexTagRealParse(readBuffer utils.ReadBuffer, tagNumberArgument ui
 	}
 	value := _value
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagReal"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagReal"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagReal{
+	_child := &BACnetContextTagReal{
 		Value:            value,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagReal) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagReal) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagReal"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagReal"); pushErr != nil {
 			return pushErr
 		}
 
@@ -143,7 +143,7 @@ func (m *BACnetComplexTagReal) Serialize(writeBuffer utils.WriteBuffer) error {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagReal"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagReal"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -151,7 +151,7 @@ func (m *BACnetComplexTagReal) Serialize(writeBuffer utils.WriteBuffer) error {
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagReal) String() string {
+func (m *BACnetContextTagReal) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagSignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagSignedInteger.go
similarity index 81%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagSignedInteger.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagSignedInteger.go
index e0c79d7..542ac63 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagSignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagSignedInteger.go
@@ -27,8 +27,8 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagSignedInteger struct {
-	*BACnetComplexTag
+type BACnetContextTagSignedInteger struct {
+	*BACnetContextTag
 	ValueInt8   *int8
 	ValueInt16  *int16
 	ValueInt32  *int32
@@ -41,7 +41,7 @@ type BACnetComplexTagSignedInteger struct {
 }
 
 // The corresponding interface
-type IBACnetComplexTagSignedInteger interface {
+type IBACnetContextTagSignedInteger interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -50,11 +50,11 @@ type IBACnetComplexTagSignedInteger interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagSignedInteger) DataType() BACnetDataType {
+func (m *BACnetContextTagSignedInteger) DataType() BACnetDataType {
 	return BACnetDataType_SIGNED_INTEGER
 }
 
-func (m *BACnetComplexTagSignedInteger) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagSignedInteger) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -64,46 +64,46 @@ func (m *BACnetComplexTagSignedInteger) InitializeParent(parent *BACnetComplexTa
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagSignedInteger(valueInt8 *int8, valueInt16 *int16, valueInt32 *int32, valueInt64 *int64, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagSignedInteger{
+func NewBACnetContextTagSignedInteger(valueInt8 *int8, valueInt16 *int16, valueInt32 *int32, valueInt64 *int64, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagSignedInteger{
 		ValueInt8:        valueInt8,
 		ValueInt16:       valueInt16,
 		ValueInt32:       valueInt32,
 		ValueInt64:       valueInt64,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagSignedInteger(structType interface{}) *BACnetComplexTagSignedInteger {
-	castFunc := func(typ interface{}) *BACnetComplexTagSignedInteger {
-		if casted, ok := typ.(BACnetComplexTagSignedInteger); ok {
+func CastBACnetContextTagSignedInteger(structType interface{}) *BACnetContextTagSignedInteger {
+	castFunc := func(typ interface{}) *BACnetContextTagSignedInteger {
+		if casted, ok := typ.(BACnetContextTagSignedInteger); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagSignedInteger); ok {
+		if casted, ok := typ.(*BACnetContextTagSignedInteger); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagSignedInteger(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagSignedInteger(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagSignedInteger(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagSignedInteger(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagSignedInteger) GetTypeName() string {
-	return "BACnetComplexTagSignedInteger"
+func (m *BACnetContextTagSignedInteger) GetTypeName() string {
+	return "BACnetContextTagSignedInteger"
 }
 
-func (m *BACnetComplexTagSignedInteger) LengthInBits() uint16 {
+func (m *BACnetContextTagSignedInteger) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagSignedInteger) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagSignedInteger) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -139,12 +139,12 @@ func (m *BACnetComplexTagSignedInteger) LengthInBitsConditional(lastItem bool) u
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagSignedInteger) LengthInBytes() uint16 {
+func (m *BACnetContextTagSignedInteger) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagSignedIntegerParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagSignedInteger"); pullErr != nil {
+func BACnetContextTagSignedIntegerParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagSignedInteger"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -212,12 +212,12 @@ func BACnetComplexTagSignedIntegerParse(readBuffer utils.ReadBuffer, tagNumberAr
 	}).(uint64)
 	actualValue := uint64(_actualValue)
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagSignedInteger"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagSignedInteger"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagSignedInteger{
+	_child := &BACnetContextTagSignedInteger{
 		ValueInt8:        valueInt8,
 		ValueInt16:       valueInt16,
 		ValueInt32:       valueInt32,
@@ -227,15 +227,15 @@ func BACnetComplexTagSignedIntegerParse(readBuffer utils.ReadBuffer, tagNumberAr
 		IsInt32:          isInt32,
 		IsInt64:          isInt64,
 		ActualValue:      actualValue,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagSignedInteger) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagSignedInteger) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagSignedInteger"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagSignedInteger"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -299,7 +299,7 @@ func (m *BACnetComplexTagSignedInteger) Serialize(writeBuffer utils.WriteBuffer)
 			return errors.Wrap(_actualValueErr, "Error serializing 'actualValue' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagSignedInteger"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagSignedInteger"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -307,7 +307,7 @@ func (m *BACnetComplexTagSignedInteger) Serialize(writeBuffer utils.WriteBuffer)
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagSignedInteger) String() string {
+func (m *BACnetContextTagSignedInteger) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagTime.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagTime.go
similarity index 80%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagTime.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagTime.go
index 22531b3..5a1495d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagTime.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagTime.go
@@ -27,8 +27,8 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagTime struct {
-	*BACnetComplexTag
+type BACnetContextTagTime struct {
+	*BACnetContextTag
 	Hour                 int8
 	Minute               int8
 	Second               int8
@@ -41,7 +41,7 @@ type BACnetComplexTagTime struct {
 }
 
 // The corresponding interface
-type IBACnetComplexTagTime interface {
+type IBACnetContextTagTime interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -50,11 +50,11 @@ type IBACnetComplexTagTime interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagTime) DataType() BACnetDataType {
+func (m *BACnetContextTagTime) DataType() BACnetDataType {
 	return BACnetDataType_TIME
 }
 
-func (m *BACnetComplexTagTime) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagTime) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -64,46 +64,46 @@ func (m *BACnetComplexTagTime) InitializeParent(parent *BACnetComplexTag, tagNum
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagTime(hour int8, minute int8, second int8, fractional int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagTime{
+func NewBACnetContextTagTime(hour int8, minute int8, second int8, fractional int8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagTime{
 		Hour:             hour,
 		Minute:           minute,
 		Second:           second,
 		Fractional:       fractional,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagTime(structType interface{}) *BACnetComplexTagTime {
-	castFunc := func(typ interface{}) *BACnetComplexTagTime {
-		if casted, ok := typ.(BACnetComplexTagTime); ok {
+func CastBACnetContextTagTime(structType interface{}) *BACnetContextTagTime {
+	castFunc := func(typ interface{}) *BACnetContextTagTime {
+		if casted, ok := typ.(BACnetContextTagTime); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagTime); ok {
+		if casted, ok := typ.(*BACnetContextTagTime); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagTime(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagTime(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagTime(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagTime(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagTime) GetTypeName() string {
-	return "BACnetComplexTagTime"
+func (m *BACnetContextTagTime) GetTypeName() string {
+	return "BACnetContextTagTime"
 }
 
-func (m *BACnetComplexTagTime) LengthInBits() uint16 {
+func (m *BACnetContextTagTime) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagTime) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagTime) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -131,12 +131,12 @@ func (m *BACnetComplexTagTime) LengthInBitsConditional(lastItem bool) uint16 {
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagTime) LengthInBytes() uint16 {
+func (m *BACnetContextTagTime) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagTimeParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagTime"); pullErr != nil {
+func BACnetContextTagTimeParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagTime"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -188,12 +188,12 @@ func BACnetComplexTagTimeParse(readBuffer utils.ReadBuffer, tagNumberArgument ui
 	_fractionalIsWildcard := bool((fractional) == (wildcard))
 	fractionalIsWildcard := bool(_fractionalIsWildcard)
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagTime"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagTime"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagTime{
+	_child := &BACnetContextTagTime{
 		Hour:                 hour,
 		Minute:               minute,
 		Second:               second,
@@ -203,15 +203,15 @@ func BACnetComplexTagTimeParse(readBuffer utils.ReadBuffer, tagNumberArgument ui
 		MinuteIsWildcard:     minuteIsWildcard,
 		SecondIsWildcard:     secondIsWildcard,
 		FractionalIsWildcard: fractionalIsWildcard,
-		BACnetComplexTag:     &BACnetComplexTag{},
+		BACnetContextTag:     &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagTime) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagTime) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagTime"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagTime"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -263,7 +263,7 @@ func (m *BACnetComplexTagTime) Serialize(writeBuffer utils.WriteBuffer) error {
 			return errors.Wrap(_fractionalIsWildcardErr, "Error serializing 'fractionalIsWildcard' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagTime"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagTime"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -271,7 +271,7 @@ func (m *BACnetComplexTagTime) Serialize(writeBuffer utils.WriteBuffer) error {
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagTime) String() string {
+func (m *BACnetContextTagTime) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagUnsignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagUnsignedInteger.go
similarity index 78%
rename from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagUnsignedInteger.go
rename to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagUnsignedInteger.go
index 5805672..355363b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetComplexTagUnsignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagUnsignedInteger.go
@@ -27,8 +27,8 @@ import (
 // Code generated by code-generation. DO NOT EDIT.
 
 // The data-structure of this message
-type BACnetComplexTagUnsignedInteger struct {
-	*BACnetComplexTag
+type BACnetContextTagUnsignedInteger struct {
+	*BACnetContextTag
 	ValueUint8  *uint8
 	ValueUint16 *uint16
 	ValueUint32 *uint32
@@ -39,7 +39,7 @@ type BACnetComplexTagUnsignedInteger struct {
 }
 
 // The corresponding interface
-type IBACnetComplexTagUnsignedInteger interface {
+type IBACnetContextTagUnsignedInteger interface {
 	LengthInBytes() uint16
 	LengthInBits() uint16
 	Serialize(writeBuffer utils.WriteBuffer) error
@@ -48,11 +48,11 @@ type IBACnetComplexTagUnsignedInteger interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *BACnetComplexTagUnsignedInteger) DataType() BACnetDataType {
+func (m *BACnetContextTagUnsignedInteger) DataType() BACnetDataType {
 	return BACnetDataType_UNSIGNED_INTEGER
 }
 
-func (m *BACnetComplexTagUnsignedInteger) InitializeParent(parent *BACnetComplexTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
+func (m *BACnetContextTagUnsignedInteger) InitializeParent(parent *BACnetContextTag, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, actualLength uint32) {
 	m.TagNumber = tagNumber
 	m.TagClass = tagClass
 	m.LengthValueType = lengthValueType
@@ -62,45 +62,45 @@ func (m *BACnetComplexTagUnsignedInteger) InitializeParent(parent *BACnetComplex
 	m.ExtExtExtLength = extExtExtLength
 }
 
-func NewBACnetComplexTagUnsignedInteger(valueUint8 *uint8, valueUint16 *uint16, valueUint32 *uint32, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetComplexTag {
-	child := &BACnetComplexTagUnsignedInteger{
+func NewBACnetContextTagUnsignedInteger(valueUint8 *uint8, valueUint16 *uint16, valueUint32 *uint32, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+	child := &BACnetContextTagUnsignedInteger{
 		ValueUint8:       valueUint8,
 		ValueUint16:      valueUint16,
 		ValueUint32:      valueUint32,
-		BACnetComplexTag: NewBACnetComplexTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+		BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
 	}
 	child.Child = child
-	return child.BACnetComplexTag
+	return child.BACnetContextTag
 }
 
-func CastBACnetComplexTagUnsignedInteger(structType interface{}) *BACnetComplexTagUnsignedInteger {
-	castFunc := func(typ interface{}) *BACnetComplexTagUnsignedInteger {
-		if casted, ok := typ.(BACnetComplexTagUnsignedInteger); ok {
+func CastBACnetContextTagUnsignedInteger(structType interface{}) *BACnetContextTagUnsignedInteger {
+	castFunc := func(typ interface{}) *BACnetContextTagUnsignedInteger {
+		if casted, ok := typ.(BACnetContextTagUnsignedInteger); ok {
 			return &casted
 		}
-		if casted, ok := typ.(*BACnetComplexTagUnsignedInteger); ok {
+		if casted, ok := typ.(*BACnetContextTagUnsignedInteger); ok {
 			return casted
 		}
-		if casted, ok := typ.(BACnetComplexTag); ok {
-			return CastBACnetComplexTagUnsignedInteger(casted.Child)
+		if casted, ok := typ.(BACnetContextTag); ok {
+			return CastBACnetContextTagUnsignedInteger(casted.Child)
 		}
-		if casted, ok := typ.(*BACnetComplexTag); ok {
-			return CastBACnetComplexTagUnsignedInteger(casted.Child)
+		if casted, ok := typ.(*BACnetContextTag); ok {
+			return CastBACnetContextTagUnsignedInteger(casted.Child)
 		}
 		return nil
 	}
 	return castFunc(structType)
 }
 
-func (m *BACnetComplexTagUnsignedInteger) GetTypeName() string {
-	return "BACnetComplexTagUnsignedInteger"
+func (m *BACnetContextTagUnsignedInteger) GetTypeName() string {
+	return "BACnetContextTagUnsignedInteger"
 }
 
-func (m *BACnetComplexTagUnsignedInteger) LengthInBits() uint16 {
+func (m *BACnetContextTagUnsignedInteger) LengthInBits() uint16 {
 	return m.LengthInBitsConditional(false)
 }
 
-func (m *BACnetComplexTagUnsignedInteger) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetContextTagUnsignedInteger) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
 	// A virtual field doesn't have any in- or output.
@@ -129,12 +129,12 @@ func (m *BACnetComplexTagUnsignedInteger) LengthInBitsConditional(lastItem bool)
 	return lengthInBits
 }
 
-func (m *BACnetComplexTagUnsignedInteger) LengthInBytes() uint16 {
+func (m *BACnetContextTagUnsignedInteger) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BACnetComplexTagUnsignedIntegerParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetComplexTag, error) {
-	if pullErr := readBuffer.PullContext("BACnetComplexTagUnsignedInteger"); pullErr != nil {
+func BACnetContextTagUnsignedIntegerParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+	if pullErr := readBuffer.PullContext("BACnetContextTagUnsignedInteger"); pullErr != nil {
 		return nil, pullErr
 	}
 
@@ -188,12 +188,12 @@ func BACnetComplexTagUnsignedIntegerParse(readBuffer utils.ReadBuffer, tagNumber
 	}).(uint32)
 	actualValue := uint32(_actualValue)
 
-	if closeErr := readBuffer.CloseContext("BACnetComplexTagUnsignedInteger"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetContextTagUnsignedInteger"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
-	_child := &BACnetComplexTagUnsignedInteger{
+	_child := &BACnetContextTagUnsignedInteger{
 		ValueUint8:       valueUint8,
 		ValueUint16:      valueUint16,
 		ValueUint32:      valueUint32,
@@ -201,15 +201,15 @@ func BACnetComplexTagUnsignedIntegerParse(readBuffer utils.ReadBuffer, tagNumber
 		IsUint16:         isUint16,
 		IsUint32:         isUint32,
 		ActualValue:      actualValue,
-		BACnetComplexTag: &BACnetComplexTag{},
+		BACnetContextTag: &BACnetContextTag{},
 	}
-	_child.BACnetComplexTag.Child = _child
-	return _child.BACnetComplexTag, nil
+	_child.BACnetContextTag.Child = _child
+	return _child.BACnetContextTag, nil
 }
 
-func (m *BACnetComplexTagUnsignedInteger) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetContextTagUnsignedInteger) Serialize(writeBuffer utils.WriteBuffer) error {
 	ser := func() error {
-		if pushErr := writeBuffer.PushContext("BACnetComplexTagUnsignedInteger"); pushErr != nil {
+		if pushErr := writeBuffer.PushContext("BACnetContextTagUnsignedInteger"); pushErr != nil {
 			return pushErr
 		}
 		// Virtual field (doesn't actually serialize anything, just makes the value available)
@@ -259,7 +259,7 @@ func (m *BACnetComplexTagUnsignedInteger) Serialize(writeBuffer utils.WriteBuffe
 			return errors.Wrap(_actualValueErr, "Error serializing 'actualValue' field")
 		}
 
-		if popErr := writeBuffer.PopContext("BACnetComplexTagUnsignedInteger"); popErr != nil {
+		if popErr := writeBuffer.PopContext("BACnetContextTagUnsignedInteger"); popErr != nil {
 			return popErr
 		}
 		return nil
@@ -267,7 +267,7 @@ func (m *BACnetComplexTagUnsignedInteger) Serialize(writeBuffer utils.WriteBuffe
 	return m.SerializeParent(writeBuffer, m, ser)
 }
 
-func (m *BACnetComplexTagUnsignedInteger) String() string {
+func (m *BACnetContextTagUnsignedInteger) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
index 505340d..d7006df 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
@@ -29,7 +29,7 @@ import (
 // The data-structure of this message
 type BACnetServiceAckAtomicWriteFile struct {
 	*BACnetServiceAck
-	FileStartPosition *BACnetComplexTagSignedInteger
+	FileStartPosition *BACnetContextTagSignedInteger
 }
 
 // The corresponding interface
@@ -49,7 +49,7 @@ func (m *BACnetServiceAckAtomicWriteFile) ServiceChoice() uint8 {
 func (m *BACnetServiceAckAtomicWriteFile) InitializeParent(parent *BACnetServiceAck) {
 }
 
-func NewBACnetServiceAckAtomicWriteFile(fileStartPosition *BACnetComplexTagSignedInteger) *BACnetServiceAck {
+func NewBACnetServiceAckAtomicWriteFile(fileStartPosition *BACnetContextTagSignedInteger) *BACnetServiceAck {
 	child := &BACnetServiceAckAtomicWriteFile{
 		FileStartPosition: fileStartPosition,
 		BACnetServiceAck:  NewBACnetServiceAck(),
@@ -107,11 +107,11 @@ func BACnetServiceAckAtomicWriteFileParse(readBuffer utils.ReadBuffer) (*BACnetS
 	if pullErr := readBuffer.PullContext("fileStartPosition"); pullErr != nil {
 		return nil, pullErr
 	}
-	_fileStartPosition, _fileStartPositionErr := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_SIGNED_INTEGER)
+	_fileStartPosition, _fileStartPositionErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_SIGNED_INTEGER)
 	if _fileStartPositionErr != nil {
 		return nil, errors.Wrap(_fileStartPositionErr, "Error parsing 'fileStartPosition' field")
 	}
-	fileStartPosition := CastBACnetComplexTagSignedInteger(_fileStartPosition)
+	fileStartPosition := CastBACnetContextTagSignedInteger(_fileStartPosition)
 	if closeErr := readBuffer.CloseContext("fileStartPosition"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -122,7 +122,7 @@ func BACnetServiceAckAtomicWriteFileParse(readBuffer utils.ReadBuffer) (*BACnetS
 
 	// Create a partially initialized instance
 	_child := &BACnetServiceAckAtomicWriteFile{
-		FileStartPosition: CastBACnetComplexTagSignedInteger(fileStartPosition),
+		FileStartPosition: CastBACnetContextTagSignedInteger(fileStartPosition),
 		BACnetServiceAck:  &BACnetServiceAck{},
 	}
 	_child.BACnetServiceAck.Child = _child
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index 2ef3171..b3f566b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -29,8 +29,8 @@ import (
 // The data-structure of this message
 type BACnetServiceAckReadProperty struct {
 	*BACnetServiceAck
-	ObjectIdentifier   *BACnetComplexTagObjectIdentifier
-	PropertyIdentifier *BACnetComplexTagPropertyIdentifier
+	ObjectIdentifier   *BACnetContextTagObjectIdentifier
+	PropertyIdentifier *BACnetContextTagPropertyIdentifier
 	ArrayIndex         *uint32
 }
 
@@ -51,7 +51,7 @@ func (m *BACnetServiceAckReadProperty) ServiceChoice() uint8 {
 func (m *BACnetServiceAckReadProperty) InitializeParent(parent *BACnetServiceAck) {
 }
 
-func NewBACnetServiceAckReadProperty(objectIdentifier *BACnetComplexTagObjectIdentifier, propertyIdentifier *BACnetComplexTagPropertyIdentifier, arrayIndex *uint32) *BACnetServiceAck {
+func NewBACnetServiceAckReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32) *BACnetServiceAck {
 	child := &BACnetServiceAckReadProperty{
 		ObjectIdentifier:   objectIdentifier,
 		PropertyIdentifier: propertyIdentifier,
@@ -119,11 +119,11 @@ func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer) (*BACnetServ
 	if pullErr := readBuffer.PullContext("objectIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
-	_objectIdentifier, _objectIdentifierErr := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+	_objectIdentifier, _objectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
 	if _objectIdentifierErr != nil {
 		return nil, errors.Wrap(_objectIdentifierErr, "Error parsing 'objectIdentifier' field")
 	}
-	objectIdentifier := CastBACnetComplexTagObjectIdentifier(_objectIdentifier)
+	objectIdentifier := CastBACnetContextTagObjectIdentifier(_objectIdentifier)
 	if closeErr := readBuffer.CloseContext("objectIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -132,11 +132,11 @@ func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer) (*BACnetServ
 	if pullErr := readBuffer.PullContext("propertyIdentifier"); pullErr != nil {
 		return nil, pullErr
 	}
-	_propertyIdentifier, _propertyIdentifierErr := BACnetComplexTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_PROPERTY_IDENTIFIER)
+	_propertyIdentifier, _propertyIdentifierErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_PROPERTY_IDENTIFIER)
 	if _propertyIdentifierErr != nil {
 		return nil, errors.Wrap(_propertyIdentifierErr, "Error parsing 'propertyIdentifier' field")
 	}
-	propertyIdentifier := CastBACnetComplexTagPropertyIdentifier(_propertyIdentifier)
+	propertyIdentifier := CastBACnetContextTagPropertyIdentifier(_propertyIdentifier)
 	if closeErr := readBuffer.CloseContext("propertyIdentifier"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -157,8 +157,8 @@ func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer) (*BACnetServ
 
 	// Create a partially initialized instance
 	_child := &BACnetServiceAckReadProperty{
-		ObjectIdentifier:   CastBACnetComplexTagObjectIdentifier(objectIdentifier),
-		PropertyIdentifier: CastBACnetComplexTagPropertyIdentifier(propertyIdentifier),
+		ObjectIdentifier:   CastBACnetContextTagObjectIdentifier(objectIdentifier),
+		PropertyIdentifier: CastBACnetContextTagPropertyIdentifier(propertyIdentifier),
 		ArrayIndex:         arrayIndex,
 		BACnetServiceAck:   &BACnetServiceAck{},
 	}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
index 1511b38..0faef5c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
@@ -29,10 +29,10 @@ import (
 // The data-structure of this message
 type BACnetUnconfirmedServiceRequestWhoHas struct {
 	*BACnetUnconfirmedServiceRequest
-	DeviceInstanceRangeLowLimit  *BACnetComplexTagUnsignedInteger
-	DeviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger
-	ObjectIdentifier             *BACnetComplexTagObjectIdentifier
-	ObjectName                   *BACnetComplexTagOctetString
+	DeviceInstanceRangeLowLimit  *BACnetContextTagUnsignedInteger
+	DeviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger
+	ObjectIdentifier             *BACnetContextTagObjectIdentifier
+	ObjectName                   *BACnetContextTagOctetString
 }
 
 // The corresponding interface
@@ -52,7 +52,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoHas) ServiceChoice() uint8 {
 func (m *BACnetUnconfirmedServiceRequestWhoHas) InitializeParent(parent *BACnetUnconfirmedServiceRequest) {
 }
 
-func NewBACnetUnconfirmedServiceRequestWhoHas(deviceInstanceRangeLowLimit *BACnetComplexTagUnsignedInteger, deviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger, objectIdentifier *BACnetComplexTagObjectIdentifier, objectName *BACnetComplexTagOctetString) *BACnetUnconfirmedServiceRequest {
+func NewBACnetUnconfirmedServiceRequestWhoHas(deviceInstanceRangeLowLimit *BACnetContextTagUnsignedInteger, deviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger, objectIdentifier *BACnetContextTagObjectIdentifier, objectName *BACnetContextTagOctetString) *BACnetUnconfirmedServiceRequest {
 	child := &BACnetUnconfirmedServiceRequestWhoHas{
 		DeviceInstanceRangeLowLimit:     deviceInstanceRangeLowLimit,
 		DeviceInstanceRangeHighLimit:    deviceInstanceRangeHighLimit,
@@ -127,20 +127,20 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(readBuffer utils.ReadBuffer, len
 	}
 
 	// Optional Field (deviceInstanceRangeLowLimit) (Can be skipped, if a given expression evaluates to false)
-	var deviceInstanceRangeLowLimit *BACnetComplexTagUnsignedInteger = nil
+	var deviceInstanceRangeLowLimit *BACnetContextTagUnsignedInteger = nil
 	{
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("deviceInstanceRangeLowLimit"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'deviceInstanceRangeLowLimit' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			deviceInstanceRangeLowLimit = CastBACnetComplexTagUnsignedInteger(_val)
+			deviceInstanceRangeLowLimit = CastBACnetContextTagUnsignedInteger(_val)
 			if closeErr := readBuffer.CloseContext("deviceInstanceRangeLowLimit"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -148,20 +148,20 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(readBuffer utils.ReadBuffer, len
 	}
 
 	// Optional Field (deviceInstanceRangeHighLimit) (Can be skipped, if a given expression evaluates to false)
-	var deviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger = nil
+	var deviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger = nil
 	if bool((deviceInstanceRangeLowLimit) != (nil)) {
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("deviceInstanceRangeHighLimit"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(1), BACnetDataType_UNSIGNED_INTEGER)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_UNSIGNED_INTEGER)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'deviceInstanceRangeHighLimit' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			deviceInstanceRangeHighLimit = CastBACnetComplexTagUnsignedInteger(_val)
+			deviceInstanceRangeHighLimit = CastBACnetContextTagUnsignedInteger(_val)
 			if closeErr := readBuffer.CloseContext("deviceInstanceRangeHighLimit"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -169,20 +169,20 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(readBuffer utils.ReadBuffer, len
 	}
 
 	// Optional Field (objectIdentifier) (Can be skipped, if a given expression evaluates to false)
-	var objectIdentifier *BACnetComplexTagObjectIdentifier = nil
+	var objectIdentifier *BACnetContextTagObjectIdentifier = nil
 	{
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("objectIdentifier"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(2), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(2), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'objectIdentifier' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			objectIdentifier = CastBACnetComplexTagObjectIdentifier(_val)
+			objectIdentifier = CastBACnetContextTagObjectIdentifier(_val)
 			if closeErr := readBuffer.CloseContext("objectIdentifier"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -190,20 +190,20 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(readBuffer utils.ReadBuffer, len
 	}
 
 	// Optional Field (objectName) (Can be skipped, if a given expression evaluates to false)
-	var objectName *BACnetComplexTagOctetString = nil
+	var objectName *BACnetContextTagOctetString = nil
 	if bool((objectIdentifier) == (nil)) {
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("objectName"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(3), BACnetDataType_OCTET_STRING)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(3), BACnetDataType_OCTET_STRING)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'objectName' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			objectName = CastBACnetComplexTagOctetString(_val)
+			objectName = CastBACnetContextTagOctetString(_val)
 			if closeErr := readBuffer.CloseContext("objectName"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -216,10 +216,10 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(readBuffer utils.ReadBuffer, len
 
 	// Create a partially initialized instance
 	_child := &BACnetUnconfirmedServiceRequestWhoHas{
-		DeviceInstanceRangeLowLimit:     CastBACnetComplexTagUnsignedInteger(deviceInstanceRangeLowLimit),
-		DeviceInstanceRangeHighLimit:    CastBACnetComplexTagUnsignedInteger(deviceInstanceRangeHighLimit),
-		ObjectIdentifier:                CastBACnetComplexTagObjectIdentifier(objectIdentifier),
-		ObjectName:                      CastBACnetComplexTagOctetString(objectName),
+		DeviceInstanceRangeLowLimit:     CastBACnetContextTagUnsignedInteger(deviceInstanceRangeLowLimit),
+		DeviceInstanceRangeHighLimit:    CastBACnetContextTagUnsignedInteger(deviceInstanceRangeHighLimit),
+		ObjectIdentifier:                CastBACnetContextTagObjectIdentifier(objectIdentifier),
+		ObjectName:                      CastBACnetContextTagOctetString(objectName),
 		BACnetUnconfirmedServiceRequest: &BACnetUnconfirmedServiceRequest{},
 	}
 	_child.BACnetUnconfirmedServiceRequest.Child = _child
@@ -233,7 +233,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoHas) Serialize(writeBuffer utils.Writ
 		}
 
 		// Optional Field (deviceInstanceRangeLowLimit) (Can be skipped, if the value is null)
-		var deviceInstanceRangeLowLimit *BACnetComplexTagUnsignedInteger = nil
+		var deviceInstanceRangeLowLimit *BACnetContextTagUnsignedInteger = nil
 		if m.DeviceInstanceRangeLowLimit != nil {
 			if pushErr := writeBuffer.PushContext("deviceInstanceRangeLowLimit"); pushErr != nil {
 				return pushErr
@@ -249,7 +249,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoHas) Serialize(writeBuffer utils.Writ
 		}
 
 		// Optional Field (deviceInstanceRangeHighLimit) (Can be skipped, if the value is null)
-		var deviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger = nil
+		var deviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger = nil
 		if m.DeviceInstanceRangeHighLimit != nil {
 			if pushErr := writeBuffer.PushContext("deviceInstanceRangeHighLimit"); pushErr != nil {
 				return pushErr
@@ -265,7 +265,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoHas) Serialize(writeBuffer utils.Writ
 		}
 
 		// Optional Field (objectIdentifier) (Can be skipped, if the value is null)
-		var objectIdentifier *BACnetComplexTagObjectIdentifier = nil
+		var objectIdentifier *BACnetContextTagObjectIdentifier = nil
 		if m.ObjectIdentifier != nil {
 			if pushErr := writeBuffer.PushContext("objectIdentifier"); pushErr != nil {
 				return pushErr
@@ -281,7 +281,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoHas) Serialize(writeBuffer utils.Writ
 		}
 
 		// Optional Field (objectName) (Can be skipped, if the value is null)
-		var objectName *BACnetComplexTagOctetString = nil
+		var objectName *BACnetContextTagOctetString = nil
 		if m.ObjectName != nil {
 			if pushErr := writeBuffer.PushContext("objectName"); pushErr != nil {
 				return pushErr
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
index f092aff..c5e4712 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
@@ -29,8 +29,8 @@ import (
 // The data-structure of this message
 type BACnetUnconfirmedServiceRequestWhoIs struct {
 	*BACnetUnconfirmedServiceRequest
-	DeviceInstanceRangeLowLimit  *BACnetComplexTagUnsignedInteger
-	DeviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger
+	DeviceInstanceRangeLowLimit  *BACnetContextTagUnsignedInteger
+	DeviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger
 }
 
 // The corresponding interface
@@ -50,7 +50,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoIs) ServiceChoice() uint8 {
 func (m *BACnetUnconfirmedServiceRequestWhoIs) InitializeParent(parent *BACnetUnconfirmedServiceRequest) {
 }
 
-func NewBACnetUnconfirmedServiceRequestWhoIs(deviceInstanceRangeLowLimit *BACnetComplexTagUnsignedInteger, deviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger) *BACnetUnconfirmedServiceRequest {
+func NewBACnetUnconfirmedServiceRequestWhoIs(deviceInstanceRangeLowLimit *BACnetContextTagUnsignedInteger, deviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger) *BACnetUnconfirmedServiceRequest {
 	child := &BACnetUnconfirmedServiceRequestWhoIs{
 		DeviceInstanceRangeLowLimit:     deviceInstanceRangeLowLimit,
 		DeviceInstanceRangeHighLimit:    deviceInstanceRangeHighLimit,
@@ -113,20 +113,20 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(readBuffer utils.ReadBuffer, len
 	}
 
 	// Optional Field (deviceInstanceRangeLowLimit) (Can be skipped, if a given expression evaluates to false)
-	var deviceInstanceRangeLowLimit *BACnetComplexTagUnsignedInteger = nil
+	var deviceInstanceRangeLowLimit *BACnetContextTagUnsignedInteger = nil
 	{
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("deviceInstanceRangeLowLimit"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'deviceInstanceRangeLowLimit' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			deviceInstanceRangeLowLimit = CastBACnetComplexTagUnsignedInteger(_val)
+			deviceInstanceRangeLowLimit = CastBACnetContextTagUnsignedInteger(_val)
 			if closeErr := readBuffer.CloseContext("deviceInstanceRangeLowLimit"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -134,20 +134,20 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(readBuffer utils.ReadBuffer, len
 	}
 
 	// Optional Field (deviceInstanceRangeHighLimit) (Can be skipped, if a given expression evaluates to false)
-	var deviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger = nil
+	var deviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger = nil
 	if bool((deviceInstanceRangeLowLimit) != (nil)) {
 		currentPos := readBuffer.GetPos()
 		if pullErr := readBuffer.PullContext("deviceInstanceRangeHighLimit"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetComplexTagParse(readBuffer, uint8(1), BACnetDataType_UNSIGNED_INTEGER)
+		_val, _err := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_UNSIGNED_INTEGER)
 		switch {
 		case _err != nil && _err != utils.ParseAssertError:
 			return nil, errors.Wrap(_err, "Error parsing 'deviceInstanceRangeHighLimit' field")
 		case _err == utils.ParseAssertError:
 			readBuffer.SetPos(currentPos)
 		default:
-			deviceInstanceRangeHighLimit = CastBACnetComplexTagUnsignedInteger(_val)
+			deviceInstanceRangeHighLimit = CastBACnetContextTagUnsignedInteger(_val)
 			if closeErr := readBuffer.CloseContext("deviceInstanceRangeHighLimit"); closeErr != nil {
 				return nil, closeErr
 			}
@@ -160,8 +160,8 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(readBuffer utils.ReadBuffer, len
 
 	// Create a partially initialized instance
 	_child := &BACnetUnconfirmedServiceRequestWhoIs{
-		DeviceInstanceRangeLowLimit:     CastBACnetComplexTagUnsignedInteger(deviceInstanceRangeLowLimit),
-		DeviceInstanceRangeHighLimit:    CastBACnetComplexTagUnsignedInteger(deviceInstanceRangeHighLimit),
+		DeviceInstanceRangeLowLimit:     CastBACnetContextTagUnsignedInteger(deviceInstanceRangeLowLimit),
+		DeviceInstanceRangeHighLimit:    CastBACnetContextTagUnsignedInteger(deviceInstanceRangeHighLimit),
 		BACnetUnconfirmedServiceRequest: &BACnetUnconfirmedServiceRequest{},
 	}
 	_child.BACnetUnconfirmedServiceRequest.Child = _child
@@ -175,7 +175,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoIs) Serialize(writeBuffer utils.Write
 		}
 
 		// Optional Field (deviceInstanceRangeLowLimit) (Can be skipped, if the value is null)
-		var deviceInstanceRangeLowLimit *BACnetComplexTagUnsignedInteger = nil
+		var deviceInstanceRangeLowLimit *BACnetContextTagUnsignedInteger = nil
 		if m.DeviceInstanceRangeLowLimit != nil {
 			if pushErr := writeBuffer.PushContext("deviceInstanceRangeLowLimit"); pushErr != nil {
 				return pushErr
@@ -191,7 +191,7 @@ func (m *BACnetUnconfirmedServiceRequestWhoIs) Serialize(writeBuffer utils.Write
 		}
 
 		// Optional Field (deviceInstanceRangeHighLimit) (Can be skipped, if the value is null)
-		var deviceInstanceRangeHighLimit *BACnetComplexTagUnsignedInteger = nil
+		var deviceInstanceRangeHighLimit *BACnetContextTagUnsignedInteger = nil
 		if m.DeviceInstanceRangeHighLimit != nil {
 			if pushErr := writeBuffer.PushContext("deviceInstanceRangeHighLimit"); pushErr != nil {
 				return pushErr
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index b643f27..fc1252f 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -152,7 +152,7 @@ func BVLCParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
 	case bvlcFunction == 0x08: // BVLCDeleteForeignDeviceTableEntry
 		_parent, typeSwitchError = BVLCDeleteForeignDeviceTableEntryParse(readBuffer)
 	case bvlcFunction == 0x09: // BVLCDistributeBroadcastToNetwork
-		_parent, typeSwitchError = BVLCDistributeBroadcastToNetworkParse(readBuffer)
+		_parent, typeSwitchError = BVLCDistributeBroadcastToNetworkParse(readBuffer, bvlcLength)
 	case bvlcFunction == 0x0A: // BVLCOriginalUnicastNPDU
 		_parent, typeSwitchError = BVLCOriginalUnicastNPDUParse(readBuffer, bvlcLength)
 	case bvlcFunction == 0x0B: // BVLCOriginalBroadcastNPDU
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
index e50c040..4bcd58e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
 // The data-structure of this message
 type BVLCDistributeBroadcastToNetwork struct {
 	*BVLC
+	Npdu *NPDU
 }
 
 // The corresponding interface
@@ -47,8 +49,9 @@ func (m *BVLCDistributeBroadcastToNetwork) BvlcFunction() uint8 {
 func (m *BVLCDistributeBroadcastToNetwork) InitializeParent(parent *BVLC) {
 }
 
-func NewBVLCDistributeBroadcastToNetwork() *BVLC {
+func NewBVLCDistributeBroadcastToNetwork(npdu *NPDU) *BVLC {
 	child := &BVLCDistributeBroadcastToNetwork{
+		Npdu: npdu,
 		BVLC: NewBVLC(),
 	}
 	child.Child = child
@@ -85,6 +88,9 @@ func (m *BVLCDistributeBroadcastToNetwork) LengthInBits() uint16 {
 func (m *BVLCDistributeBroadcastToNetwork) LengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.ParentLengthInBits())
 
+	// Simple field (npdu)
+	lengthInBits += m.Npdu.LengthInBits()
+
 	return lengthInBits
 }
 
@@ -92,17 +98,31 @@ func (m *BVLCDistributeBroadcastToNetwork) LengthInBytes() uint16 {
 	return m.LengthInBits() / 8
 }
 
-func BVLCDistributeBroadcastToNetworkParse(readBuffer utils.ReadBuffer) (*BVLC, error) {
+func BVLCDistributeBroadcastToNetworkParse(readBuffer utils.ReadBuffer, bvlcLength uint16) (*BVLC, error) {
 	if pullErr := readBuffer.PullContext("BVLCDistributeBroadcastToNetwork"); pullErr != nil {
 		return nil, pullErr
 	}
 
+	// Simple Field (npdu)
+	if pullErr := readBuffer.PullContext("npdu"); pullErr != nil {
+		return nil, pullErr
+	}
+	_npdu, _npduErr := NPDUParse(readBuffer, uint16(bvlcLength)-uint16(uint16(4)))
+	if _npduErr != nil {
+		return nil, errors.Wrap(_npduErr, "Error parsing 'npdu' field")
+	}
+	npdu := CastNPDU(_npdu)
+	if closeErr := readBuffer.CloseContext("npdu"); closeErr != nil {
+		return nil, closeErr
+	}
+
 	if closeErr := readBuffer.CloseContext("BVLCDistributeBroadcastToNetwork"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create a partially initialized instance
 	_child := &BVLCDistributeBroadcastToNetwork{
+		Npdu: CastNPDU(npdu),
 		BVLC: &BVLC{},
 	}
 	_child.BVLC.Child = _child
@@ -115,6 +135,18 @@ func (m *BVLCDistributeBroadcastToNetwork) Serialize(writeBuffer utils.WriteBuff
 			return pushErr
 		}
 
+		// Simple Field (npdu)
+		if pushErr := writeBuffer.PushContext("npdu"); pushErr != nil {
+			return pushErr
+		}
+		_npduErr := m.Npdu.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("npdu"); popErr != nil {
+			return popErr
+		}
+		if _npduErr != nil {
+			return errors.Wrap(_npduErr, "Error serializing 'npdu' field")
+		}
+
 		if popErr := writeBuffer.PopContext("BVLCDistributeBroadcastToNetwork"); popErr != nil {
 			return popErr
 		}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 9cf2692..65ff1a4 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -43,7 +43,8 @@
         ]
         ['0x08' BVLCDeleteForeignDeviceTableEntry
         ]
-        ['0x09' BVLCDistributeBroadcastToNetwork
+        ['0x09' BVLCDistributeBroadcastToNetwork(uint 16 bvlcLength)
+            [simple NPDU('bvlcLength - 4') npdu]
         ]
         ['0x0A' BVLCOriginalUnicastNPDU(uint 16 bvlcLength)
             [simple NPDU('bvlcLength - 4') npdu]
@@ -193,10 +194,10 @@
         ]
         ['0x07' BACnetConfirmedServiceRequestAtomicWriteFile
             [simple BACnetTagApplicationObjectIdentifier                deviceIdentifier    ]
-            [optional BACnetComplexTagNull('0', 'BACnetDataType.NULL')  openingTag          ]
+            [optional BACnetContextTagNull('0', 'BACnetDataType.NULL')  openingTag          ]
             [simple BACnetTagApplicationSignedInteger                   fileStartPosition   ]
             [simple BACnetTagApplicationOctetString                     fileData            ]
-            [optional BACnetComplexTagNull('0', 'BACnetDataType.NULL')  closingTag          ]
+            [optional BACnetContextTagNull('0', 'BACnetDataType.NULL')  closingTag          ]
         ]
 
         ['0x08' BACnetConfirmedServiceRequestAddListElement
@@ -208,8 +209,8 @@
         ['0x0B' BACnetConfirmedServiceRequestDeleteObject
         ]
         ['0x0C' BACnetConfirmedServiceRequestReadProperty
-            [simple BACnetComplexTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')     objectIdentifier   ]
-            [simple BACnetComplexTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
+            [simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')     objectIdentifier   ]
+            [simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
             // TODO: check if this is the right identifier type and size
             [optional uint 32 arrayIndex 'propertyIdentifier.value == BACnetPropertyIdentifier.VALUE_SOURCE_ARRAY']
             // TODO: check if values are missing here?
@@ -217,8 +218,8 @@
         ['0x0E' BACnetConfirmedServiceRequestReadPropertyMultiple
         ]
         ['0x0F' BACnetConfirmedServiceRequestWriteProperty
-            [simple BACnetComplexTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')     objectIdentifier   ]
-            [simple BACnetComplexTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
+            [simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')     objectIdentifier   ]
+            [simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
             // TODO: check if this is the right identifier type and size
             [optional uint 32 arrayIndex 'propertyIdentifier.value == BACnetPropertyIdentifier.VALUE_SOURCE_ARRAY']
             [const    uint 8    openingTag                0x3E                          ]
@@ -236,8 +237,8 @@
         ['0x13' BACnetConfirmedServiceRequestConfirmedTextMessage
         ]
         ['0x14' BACnetConfirmedServiceRequestReinitializeDevice
-          [simple BACnetComplexTagDeviceState('0', 'BACnetDataType.BACNET_DEVICE_STATE')     reinitializedStateOfDevice  ]
-          [optional BACnetComplexTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING')  password                    ]
+          [simple BACnetContextTagDeviceState('0', 'BACnetDataType.BACNET_DEVICE_STATE')     reinitializedStateOfDevice  ]
+          [optional BACnetContextTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING')  password                    ]
         ]
 
         ['0x15' BACnetConfirmedServiceRequestVTOpen
@@ -305,14 +306,14 @@
             [simple BACnetTagApplicationTime synchronizedTime]
         ]
         ['0x07' BACnetUnconfirmedServiceRequestWhoHas
-            [optional BACnetComplexTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')           deviceInstanceRangeLowLimit                                         ]
-            [optional BACnetComplexTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')           deviceInstanceRangeHighLimit  'deviceInstanceRangeLowLimit != null' ]
-            [optional BACnetComplexTagObjectIdentifier('2', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')  objectIdentifier                                                    ]
-            [optional BACnetComplexTagOctetString('3', 'BACnetDataType.OCTET_STRING')                   objectName                    'objectIdentifier == null'            ]
+            [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')           deviceInstanceRangeLowLimit                                         ]
+            [optional BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')           deviceInstanceRangeHighLimit  'deviceInstanceRangeLowLimit != null' ]
+            [optional BACnetContextTagObjectIdentifier('2', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')  objectIdentifier                                                    ]
+            [optional BACnetContextTagOctetString('3', 'BACnetDataType.OCTET_STRING')                   objectName                    'objectIdentifier == null'            ]
         ]
         ['0x08' BACnetUnconfirmedServiceRequestWhoIs
-            [optional BACnetComplexTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')   deviceInstanceRangeLowLimit                                         ]
-            [optional BACnetComplexTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')   deviceInstanceRangeHighLimit  'deviceInstanceRangeLowLimit != null' ]
+            [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')   deviceInstanceRangeLowLimit                                         ]
+            [optional BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')   deviceInstanceRangeHighLimit  'deviceInstanceRangeLowLimit != null' ]
         ]
         ['0x09' BACnetUnconfirmedServiceRequestUTCTimeSynchronization
         ]
@@ -340,15 +341,15 @@
 
         ]
         ['0x07' BACnetServiceAckAtomicWriteFile
-            [simple BACnetComplexTagSignedInteger('0', 'BACnetDataType.SIGNED_INTEGER') fileStartPosition]
+            [simple BACnetContextTagSignedInteger('0', 'BACnetDataType.SIGNED_INTEGER') fileStartPosition]
         ]
 
         ['0x0A' BACnetServiceAckCreateObject
 
         ]
         ['0x0C' BACnetServiceAckReadProperty
-            [simple BACnetComplexTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')     objectIdentifier   ]
-            [simple BACnetComplexTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
+            [simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')     objectIdentifier   ]
+            [simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
             // TODO: check if this is the right identifier type and size
             [optional uint 32 arrayIndex 'propertyIdentifier.value == BACnetPropertyIdentifier.VALUE_SOURCE_ARRAY']
         ]
@@ -589,7 +590,7 @@
     ]
 ]
 
-[discriminatedType BACnetComplexTag(uint 4 tagNumberArgument, BACnetDataType dataType)
+[discriminatedType BACnetContextTag(uint 4 tagNumberArgument, BACnetDataType dataType)
     [assert        uint 4           tagNumber           'tagNumberArgument'                                           ]
     [assert        TagClass         tagClass            'TagClass.CONTEXT_SPECIFIC_TAGS'                              ]
     [simple        uint 3           lengthValueType                                                                   ]
@@ -600,11 +601,11 @@
     [optional      uint 32          extExtExtLength     'lengthValueType == 5 && extLength == 255'                    ]
     [virtual       uint 32          actualLength        'lengthValueType == 5 && extLength == 255 ? extExtExtLength : (lengthValueType == 5 && extLength == 254 ? extExtLength : (lengthValueType == 5 ? extLength : lengthValueType))']
     [typeSwitch dataType
-        ['NULL' BACnetComplexTagNull
+        ['NULL' BACnetContextTagNull
         ]
-        ['BOOLEAN' BACnetComplexTagBoolean
+        ['BOOLEAN' BACnetContextTagBoolean
         ]
-        ['UNSIGNED_INTEGER' BACnetComplexTagUnsignedInteger(uint 32 actualLength)
+        ['UNSIGNED_INTEGER' BACnetContextTagUnsignedInteger(uint 32 actualLength)
             [virtual    bit     isUint8     'actualLength == 1' ]
             [optional   uint  8 valueUint8  'isUint8'           ]
             [virtual    bit     isUint16    'actualLength == 2' ]
@@ -619,7 +620,7 @@
             [virtual    uint 64 actualValue 'isUint8?valueUint8:(isUint16?valueUint16:(isUint32?valueUint32:(isUint64?valueUint64:0)))']
             */
         ]
-        ['SIGNED_INTEGER' BACnetComplexTagSignedInteger(uint 32 actualLength)
+        ['SIGNED_INTEGER' BACnetContextTagSignedInteger(uint 32 actualLength)
             [virtual    bit     isInt8     'actualLength == 1'  ]
             [optional   int 8   valueInt8  'isInt8'             ]
             [virtual    bit     isInt16    'actualLength == 2'  ]
@@ -630,36 +631,36 @@
             [optional   int 64  valueInt64 'isInt64'            ]
             [virtual    uint 64 actualValue 'isInt8?valueInt8:(isInt16?valueInt16:(isInt64?valueInt64:0))']
         ]
-        ['REAL' BACnetComplexTagReal(uint 32 actualLength)
+        ['REAL' BACnetContextTagReal(uint 32 actualLength)
             [simple     float 32 value]
         ]
-        ['DOUBLE' BACnetComplexTagDouble(uint 32 actualLength)
+        ['DOUBLE' BACnetContextTagDouble(uint 32 actualLength)
             [simple     float 64 value]
         ]
-        ['OCTET_STRING' BACnetComplexTagOctetString(uint 32 actualLength)
+        ['OCTET_STRING' BACnetContextTagOctetString(uint 32 actualLength)
             // TODO: The reader expects int but uint32 gets mapped to long so even uint32 would easily overflow...
             [virtual    uint     16                   actualLengthInBit 'actualLength * 8']
             [simple     vstring 'actualLengthInBit'  value encoding='"ASCII"']
         ]
-        ['CHARACTER_STRING' BACnetComplexTagCharacterString(uint 32 actualLength)
+        ['CHARACTER_STRING' BACnetContextTagCharacterString(uint 32 actualLength)
             [simple     BACnetCharacterEncoding      encoding]
             // TODO: The reader expects int but uint32 gets mapped to long so even uint32 would easily overflow...
             [virtual    uint     16                  actualLengthInBit 'actualLength * 8 - 8']
             // TODO: call to string on encoding or add type conversion so we can use the enum above
             [simple     vstring 'actualLengthInBit'  value encoding='"UTF-8"']
         ]
-        ['BIT_STRING' BACnetComplexTagBitString(uint 32 actualLength)
+        ['BIT_STRING' BACnetContextTagBitString(uint 32 actualLength)
             // TODO: The reader expects int but uint32 gets mapped to long so even uint32 would easily overflow...
             [virtual    uint 16                   actualLengthInBit 'actualLength * 8']
             [simple     uint  8 unusedBits]
             [array      int   8 data length 'actualLengthInBit']
         ]
-        ['ENUMERATED' BACnetComplexTagEnumerated(uint 32 actualLength)
+        ['ENUMERATED' BACnetContextTagEnumerated(uint 32 actualLength)
             // TODO: The reader expects int but uint32 gets mapped to long so even uint32 would easily overflow...
             [virtual    uint     16                   actualLengthInBit 'actualLength * 8']
             [array int 8 data length 'actualLengthInBit']
         ]
-        ['DATE' BACnetComplexTagDate
+        ['DATE' BACnetContextTagDate
             [virtual int  8 wildcard '0xFF']
             [simple  int  8 yearMinus1900]
             [virtual bit    yearIsWildcard 'yearMinus1900 == wildcard']
@@ -675,7 +676,7 @@
             [simple  int  8 dayOfWeek]
             [virtual bit    dayOfWeekIsWildcard 'dayOfWeek == wildcard']
         ]
-        ['TIME' BACnetComplexTagTime
+        ['TIME' BACnetContextTagTime
             [virtual int  8 wildcard '0xFF']
             [simple  int  8 hour]
             [virtual bit    hourIsWildcard 'hour == wildcard']
@@ -686,14 +687,14 @@
             [simple  int  8 fractional]
             [virtual bit    fractionalIsWildcard 'fractional == wildcard']
         ]
-        ['BACNET_OBJECT_IDENTIFIER' BACnetComplexTagObjectIdentifier
+        ['BACNET_OBJECT_IDENTIFIER' BACnetContextTagObjectIdentifier
             [simple BACnetObjectType    objectType      ]
             [simple uint 22             instanceNumber  ]
         ]
-        ['BACNET_PROPERTY_IDENTIFIER' BACnetComplexTagPropertyIdentifier(uint 32 actualLength)
+        ['BACNET_PROPERTY_IDENTIFIER' BACnetContextTagPropertyIdentifier(uint 32 actualLength)
             [manual  BACnetPropertyIdentifier   value   'STATIC_CALL("readPropertyIdentifier", readBuffer, actualLength)' 'STATIC_CALL("writePropertyIdentifier", writeBuffer, value)' '_value.actualLength']
         ]
-        ['BACNET_DEVICE_STATE' BACnetComplexTagDeviceState
+        ['BACNET_DEVICE_STATE' BACnetContextTagDeviceState
             [simple BACnetDeviceState   state]
         ]
     ]
diff --git a/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java b/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
index e7b7aea..fb1913c 100644
--- a/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
+++ b/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
@@ -64,7 +64,7 @@ public class RandomPackagesTest {
                 System.out.println("Pcap version: " + version);
                 String libpcap_version_string = StringUtils.removeStart(version, "libpcap version ");
                 // Remove any trailing extra info
-                libpcap_version_string = StringUtils.split(libpcap_version_string," ")[0];
+                libpcap_version_string = StringUtils.split(libpcap_version_string, " ")[0];
                 Semver libpcap_version = new Semver(libpcap_version_string);
                 if (SystemUtils.IS_OS_MAC) {
                     Semver minimumVersion = new Semver("1.10.1");
@@ -361,21 +361,112 @@ public class RandomPackagesTest {
     Collection<DynamicTest> BBMD_readProperty() throws Exception {
         PCAPEvaluator pcapEvaluator = pcapEvaluator("BBMD_readproperty.pcap");
         return Arrays.asList(
-            DynamicTest.dynamicTest("TODO",
+            DynamicTest.dynamicTest("Unconfirmed-REQ who-Is 12345 12345",
                 () -> {
-                    BVLC bvlc;
-                    bvlc = pcapEvaluator.nextBVLC();
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
                     dump(bvlc);
-                    // TODO:
-                    assumeTrue(false, "not properly implemented. Check manually and add asserts");
+                    BVLCDistributeBroadcastToNetwork bvlcDistributeBroadcastToNetwork = (BVLCDistributeBroadcastToNetwork) bvlc;
+                    APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) bvlcDistributeBroadcastToNetwork.getNpdu().getApdu();
+                    BACnetUnconfirmedServiceRequest serviceRequest = apduUnconfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetUnconfirmedServiceRequestWhoIs baCnetUnconfirmedServiceRequestWhoIs = (BACnetUnconfirmedServiceRequestWhoIs) serviceRequest;
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeLowLimit().getActualValue());
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeHighLimit().getActualValue());
                 }),
-            DynamicTest.dynamicTest("TODO",
+            DynamicTest.dynamicTest("Unconfirmed-REQ who-Is 12345 12345",
                 () -> {
-                    BVLC bvlc;
-                    bvlc = pcapEvaluator.nextBVLC();
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
                     dump(bvlc);
-                    // TODO:
-                    assumeTrue(false, "not properly implemented. Check manually and add asserts");
+                    BVLCOriginalBroadcastNPDU bvlcOriginalBroadcastNPDU = (BVLCOriginalBroadcastNPDU) bvlc;
+                    APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) bvlcOriginalBroadcastNPDU.getNpdu().getApdu();
+                    BACnetUnconfirmedServiceRequest serviceRequest = apduUnconfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetUnconfirmedServiceRequestWhoIs baCnetUnconfirmedServiceRequestWhoIs = (BACnetUnconfirmedServiceRequestWhoIs) serviceRequest;
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeLowLimit().getActualValue());
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeHighLimit().getActualValue());
+                }),
+            DynamicTest.dynamicTest("Unconfirmed-REQ i-Am device,12345",
+                () -> {
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
+                    dump(bvlc);
+                    BVLCOriginalBroadcastNPDU bvlcOriginalBroadcastNPDU = (BVLCOriginalBroadcastNPDU) bvlc;
+                    APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) bvlcOriginalBroadcastNPDU.getNpdu().getApdu();
+                    BACnetUnconfirmedServiceRequest serviceRequest = apduUnconfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetUnconfirmedServiceRequestIAm baCnetUnconfirmedServiceRequestIAm = (BACnetUnconfirmedServiceRequestIAm) serviceRequest;
+                    assertEquals(BACnetObjectType.DEVICE, baCnetUnconfirmedServiceRequestIAm.getDeviceIdentifier().getObjectType());
+                    assertEquals(12345, baCnetUnconfirmedServiceRequestIAm.getDeviceIdentifier().getInstanceNumber());
+                    assertEquals(480, baCnetUnconfirmedServiceRequestIAm.getMaximumApduLengthAcceptedLength().getActualValue());
+                    // TODO: change to enum
+                    assertEquals(Arrays.asList((byte) 0x03), baCnetUnconfirmedServiceRequestIAm.getSegmentationSupported().getData());
+                    assertEquals(260L, baCnetUnconfirmedServiceRequestIAm.getVendorId().getActualValue());
+                }),
+            DynamicTest.dynamicTest("Unconfirmed-REQ who-Is 12345 12345",
+                () -> {
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
+                    dump(bvlc);
+                    BVLCForwardedNPDU bvlcForwardedNPDU = (BVLCForwardedNPDU) bvlc;
+                    APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) bvlcForwardedNPDU.getNpdu().getApdu();
+                    BACnetUnconfirmedServiceRequest serviceRequest = apduUnconfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetUnconfirmedServiceRequestWhoIs baCnetUnconfirmedServiceRequestWhoIs = (BACnetUnconfirmedServiceRequestWhoIs) serviceRequest;
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeLowLimit().getActualValue());
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeHighLimit().getActualValue());
+                }),
+            DynamicTest.dynamicTest("Unconfirmed-REQ who-Is 12345 12345",
+                () -> {
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
+                    dump(bvlc);
+                    BVLCForwardedNPDU bvlcForwardedNPDU = (BVLCForwardedNPDU) bvlc;
+                    APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) bvlcForwardedNPDU.getNpdu().getApdu();
+                    BACnetUnconfirmedServiceRequest serviceRequest = apduUnconfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetUnconfirmedServiceRequestWhoIs baCnetUnconfirmedServiceRequestWhoIs = (BACnetUnconfirmedServiceRequestWhoIs) serviceRequest;
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeLowLimit().getActualValue());
+                    assertEquals(12345L, baCnetUnconfirmedServiceRequestWhoIs.getDeviceInstanceRangeHighLimit().getActualValue());
+                }),
+            DynamicTest.dynamicTest("Unconfirmed-REQ i-Am device,12345",
+                () -> {
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
+                    dump(bvlc);
+                    BVLCForwardedNPDU bvlcForwardedNPDU = (BVLCForwardedNPDU) bvlc;
+                    APDUUnconfirmedRequest apduUnconfirmedRequest = (APDUUnconfirmedRequest) bvlcForwardedNPDU.getNpdu().getApdu();
+                    BACnetUnconfirmedServiceRequest serviceRequest = apduUnconfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetUnconfirmedServiceRequestIAm baCnetUnconfirmedServiceRequestIAm = (BACnetUnconfirmedServiceRequestIAm) serviceRequest;
+                    assertEquals(BACnetObjectType.DEVICE, baCnetUnconfirmedServiceRequestIAm.getDeviceIdentifier().getObjectType());
+                    assertEquals(12345, baCnetUnconfirmedServiceRequestIAm.getDeviceIdentifier().getInstanceNumber());
+                    assertEquals(480, baCnetUnconfirmedServiceRequestIAm.getMaximumApduLengthAcceptedLength().getActualValue());
+                    // TODO: change to enum
+                    assertEquals(Arrays.asList((byte) 0x03), baCnetUnconfirmedServiceRequestIAm.getSegmentationSupported().getData());
+                    assertEquals(260L, baCnetUnconfirmedServiceRequestIAm.getVendorId().getActualValue());
+                }),
+            DynamicTest.dynamicTest("Confirmed-REQ readProperty[ 1] analog-output,0 priority-array",
+                () -> {
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
+                    dump(bvlc);
+                    BVLCOriginalUnicastNPDU bvlcOriginalUnicastNPDU = (BVLCOriginalUnicastNPDU) bvlc;
+                    APDUConfirmedRequest apduConfirmedRequest = (APDUConfirmedRequest) bvlcOriginalUnicastNPDU.getNpdu().getApdu();
+                    BACnetConfirmedServiceRequest serviceRequest = apduConfirmedRequest.getServiceRequest();
+                    assertNotNull(serviceRequest);
+                    BACnetConfirmedServiceRequestReadProperty baCnetConfirmedServiceRequestReadProperty = (BACnetConfirmedServiceRequestReadProperty) serviceRequest;
+                    assertEquals(BACnetObjectType.ANALOG_OUTPUT, baCnetConfirmedServiceRequestReadProperty.getObjectIdentifier().getObjectType());
+                    assertEquals(0, baCnetConfirmedServiceRequestReadProperty.getObjectIdentifier().getInstanceNumber());
+                    assertEquals(BACnetPropertyIdentifier.PRIORITY_ARRAY, baCnetConfirmedServiceRequestReadProperty.getPropertyIdentifier().getValue());
+                }),
+            DynamicTest.dynamicTest("Complex-ACK readProperty[ 1] analog-output,0 priority-array",
+                () -> {
+                    BVLC bvlc = pcapEvaluator.nextBVLC();
+                    dump(bvlc);
+                    BVLCOriginalUnicastNPDU bvlcOriginalUnicastNPDU = (BVLCOriginalUnicastNPDU) bvlc;
+                    APDUComplexAck apduComplexAck = (APDUComplexAck) bvlcOriginalUnicastNPDU.getNpdu().getApdu();
+                    BACnetServiceAck baCnetServiceAck = apduComplexAck.getServiceAck();
+                    assertNotNull(baCnetServiceAck);
+                    BACnetServiceAckReadProperty baCnetServiceAckReadProperty = (BACnetServiceAckReadProperty) baCnetServiceAck;
+                    assertEquals(BACnetObjectType.ANALOG_OUTPUT, baCnetServiceAckReadProperty.getObjectIdentifier().getObjectType());
+                    assertEquals(0, baCnetServiceAckReadProperty.getObjectIdentifier().getInstanceNumber());
+                    assertEquals(BACnetPropertyIdentifier.PRIORITY_ARRAY, baCnetServiceAckReadProperty.getPropertyIdentifier().getValue());
+                    // TODO: here the array is missing
                 })
         );
     }
@@ -5273,9 +5364,11 @@ public class RandomPackagesTest {
     }
 
     private static class PCAPEvaluator implements Closeable {
+        private final String pcapFile;
         private final PcapHandle pcapHandle;
 
         public PCAPEvaluator(String pcapFile) throws IOException, PcapNativeException {
+            this.pcapFile = pcapFile;
             String toParse = DownloadAndCache(pcapFile);
             System.out.println("Reading " + toParse);
             pcapHandle = getHandle(toParse);
@@ -5294,8 +5387,12 @@ public class RandomPackagesTest {
 
         private BVLC nextBVLC() throws NotOpenException, ParseException {
             Packet packet = pcapHandle.getNextPacket();
+            System.err.println("Next packet:");
+            System.err.println(packet);
             UdpPacket udpPacket = packet.get(UdpPacket.class);
             assumeTrue(udpPacket != null, "nextBVLC assumes a UDP Packet. If non is there it might by LLC");
+            System.err.println("Handling UDP");
+            System.err.println(udpPacket);
             byte[] rawData = udpPacket.getPayload().getRawData();
             System.err.println("Reading BVLC from:");
             System.err.println(Hex.dump(rawData));
@@ -5322,5 +5419,13 @@ public class RandomPackagesTest {
         public void close() throws IOException {
             pcapHandle.close();
         }
+
+        @Override
+        public String toString() {
+            return "PCAPEvaluator{" +
+                "pcapFile='" + pcapFile + '\'' +
+                ", pcapHandle=" + pcapHandle +
+                '}';
+        }
     }
 }