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 2023/05/04 10:30:31 UTC

[plc4x] branch develop updated: refactor(plc4j): fixed some Q/A issues

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 0feee55a24 refactor(plc4j): fixed some Q/A issues
0feee55a24 is described below

commit 0feee55a24e5bd9a09723823cbe064bddb453d43
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu May 4 12:30:13 2023 +0200

    refactor(plc4j): fixed some Q/A issues
---
 .../templates/java/enum-template.java.ftlh         |    2 +-
 .../expression/ExpressionStringParserTest.java     |   66 +-
 .../mspec/parser/MessageFormatParserTest.java      | 1184 ++++++++++----------
 .../plc4x/java/ads/readwrite/AdsDataType.java      |    4 +-
 .../org/apache/plc4x/java/ads/AdsPlcDriver.java    |    7 +-
 .../java/bacnetip/readwrite/BACnetVendorId.java    |    4 +-
 .../bacnetip/readwrite/MaxApduLengthAccepted.java  |    2 +-
 .../bacnetip/readwrite/MaxSegmentsAccepted.java    |    2 +-
 .../apache/plc4x/java/bacnetip/ede/EdeParser.java  |    4 +-
 .../cbus/readwrite/AccessControlCommandType.java   |    2 +-
 .../AccessControlCommandTypeContainer.java         |    6 +-
 .../cbus/readwrite/AirConditioningCommandType.java |    2 +-
 .../AirConditioningCommandTypeContainer.java       |    4 +-
 .../cbus/readwrite/ApplicationIdContainer.java     |    4 +-
 .../plc4x/java/cbus/readwrite/Attribute.java       |    2 +-
 .../cbus/readwrite/CALCommandTypeContainer.java    |    4 +-
 .../readwrite/ClockAndTimekeepingCommandType.java  |    2 +-
 .../ClockAndTimekeepingCommandTypeContainer.java   |    4 +-
 .../cbus/readwrite/EnableControlCommandType.java   |    2 +-
 .../EnableControlCommandTypeContainer.java         |    4 +-
 .../cbus/readwrite/ErrorReportingCommandType.java  |    2 +-
 .../ErrorReportingCommandTypeContainer.java        |    4 +-
 .../cbus/readwrite/LevelInformationNibblePair.java |    2 +-
 .../java/cbus/readwrite/LightingCommandType.java   |    2 +-
 .../readwrite/LightingCommandTypeContainer.java    |    4 +-
 .../cbus/readwrite/MeasurementCommandType.java     |    2 +-
 .../readwrite/MeasurementCommandTypeContainer.java |    4 +-
 .../MediaTransportControlCommandType.java          |    2 +-
 .../MediaTransportControlCommandTypeContainer.java |    4 +-
 .../java/cbus/readwrite/MeteringCommandType.java   |    2 +-
 .../readwrite/MeteringCommandTypeContainer.java    |    4 +-
 .../plc4x/java/cbus/readwrite/Parameter.java       |   12 +-
 .../plc4x/java/cbus/readwrite/ProtectionLevel.java |    2 +-
 .../plc4x/java/cbus/readwrite/RequestType.java     |    2 +-
 .../java/cbus/readwrite/SecurityCommandType.java   |    2 +-
 .../readwrite/SecurityCommandTypeContainer.java    |    4 +-
 .../java/cbus/readwrite/TelephonyCommandType.java  |    2 +-
 .../readwrite/TelephonyCommandTypeContainer.java   |    4 +-
 .../readwrite/TemperatureBroadcastCommandType.java |    2 +-
 .../TemperatureBroadcastCommandTypeContainer.java  |    4 +-
 .../cbus/readwrite/TriggerControlCommandType.java  |    2 +-
 .../TriggerControlCommandTypeContainer.java        |    4 +-
 .../genericcan/readwrite/GenericCANDataType.java   |    4 +-
 .../java/can/generic/GenericCANDriverTest.java     |    9 +-
 .../java/canopen/readwrite/CANOpenDataType.java    |    4 +-
 .../java/canopen/readwrite/CANOpenService.java     |    6 +-
 .../java/org/apache/plc4x/java/canopen/Main.java   |    7 +-
 .../plc4x/java/eip/readwrite/CIPDataTypeCode.java  |    2 +-
 .../plc4x/java/knxnetip/readwrite/AccessLevel.java |    4 +-
 .../readwrite/ComObjectTableAddresses.java         |    2 +-
 .../knxnetip/readwrite/ComObjectValueType.java     |    2 +-
 .../java/knxnetip/readwrite/DeviceDescriptor.java  |    4 +-
 .../knxnetip/readwrite/KnxDatapointMainType.java   |    6 +-
 .../java/knxnetip/readwrite/KnxDatapointType.java  |    6 +-
 .../readwrite/KnxInterfaceObjectProperty.java      |    8 +-
 .../knxnetip/readwrite/KnxInterfaceObjectType.java |    4 +-
 .../java/knxnetip/readwrite/KnxManufacturer.java   |    4 +-
 .../knxnetip/readwrite/KnxPropertyDataType.java    |    6 +-
 .../knxnetip/readwrite/SupportedPhysicalMedia.java |    4 +-
 .../apache/plc4x/java/knxnetip/ManualKnxNetIp.java |    6 +-
 .../org/apache/plc4x/java/mock/util/Assert.java    |    2 +-
 .../java/modbus/readwrite/ModbusDataType.java      |    2 +-
 .../plc4x/java/modbus/tcp/ModbusTcpDriver.java     |    7 +-
 .../modbus/tcp/discovery/ModbusPlcDiscoverer.java  |    4 +-
 .../plc4x/java/modbus/ModbusTagDataTypeTest.java   |   42 +-
 .../plc4x/java/opcua/readwrite/OpcuaDataType.java  |    2 +-
 .../plc4x/java/opcua/context/SecureChannel.java    |   22 +-
 .../java/opcua/protocol/OpcuaProtocolLogic.java    |    6 +-
 .../opcua/protocol/OpcuaSubscriptionHandle.java    |   24 +-
 .../plc4x/java/opcua/OpcuaPlcDriverTest.java       |   38 +-
 .../java/openprotocol/OpenProtocolDriver.java      |    7 +-
 .../java/profinet/readwrite/ProfinetDataType.java  |    4 +-
 .../profinet/readwrite/VirtualLanPriority.java     |    2 +-
 .../apache/plc4x/java/profinet/ProfinetDriver.java |    7 +-
 .../plc4x/java/profinet/device/ProfinetDevice.java |    2 +-
 .../plc4x/java/profinet/ProfinetCheckSumTests.java |    2 +-
 .../plc4x/java/s7/readwrite/COTPTpduSize.java      |    2 +-
 .../plc4x/java/s7/readwrite/DataTransportSize.java |    2 +-
 .../apache/plc4x/java/s7/readwrite/MemoryArea.java |    2 +-
 .../plc4x/java/s7/readwrite/TransportSize.java     |   22 +-
 .../readwrite/SimulatedDataTypeSizes.java          |    2 +-
 .../examples/plc4j/s7event/EventSubscription.java  |    4 +-
 .../plc4x/java/examples/pollloop/PollLoop.java     |    4 +-
 .../main/java/org/apache/plc4x/Plc4xBaseTable.java |    4 +-
 .../main/java/org/apache/plc4x/Plc4xSchema.java    |    2 +-
 .../apache/plc4x/kafka/config/SinkConfigTest.java  |   10 +-
 .../apache/plc4x/kafka/config/SinkTaskTest.java    |    2 +-
 .../plc4x/kafka/config/SourceConfigTest.java       |   10 +-
 .../apache/plc4x/kafka/config/SourceTaskTest.java  |    2 +-
 .../nifi/record/Plc4xReadResponseRecordSet.java    |    2 +-
 .../apache/plc4x/nifi/util/Plc4xCommonTest.java    |   45 +-
 .../java/opcuaserver/backend/Plc4xNamespace.java   |   72 +-
 .../plc4x/java/opcuaserver/OpcuaPlcDriverTest.java |   28 +-
 .../apache/plc4x/java/osgi/TransportActivator.java |    2 +-
 .../apache/plc4x/java/spi/Plc4xNettyWrapper.java   |    5 +-
 .../spi/connection/DefaultNettyPlcConnection.java  |    6 +-
 .../java/spi/messages/DefaultPlcBrowseRequest.java |    4 +-
 .../java/spi/messages/DefaultPlcReadRequest.java   |    4 +-
 .../plc4x/java/spi/Plc4xNettyWrapperTest.java      |   24 +-
 .../optimizer/RequestTransactionManagerTest.java   |   18 +-
 .../java/utils/cache/ConnectionContainer.java      |    4 +-
 .../triggeredscraper/TriggeredScraperImpl.java     |    6 +-
 .../apache/plc4x/java/s7/ManualS7PlcDriverMT.java  |   41 +-
 .../org/apache/plc4x/java/ui/FxmlController.java   |    6 +-
 .../plc4x/java/transport/serial/SerialChannel.java |    7 +-
 .../transport/socketcan/SocketCANTransport.java    |   49 +-
 .../channel/embedded/Plc4xEmbeddedChannel.java     |   19 +-
 .../channel/embedded/Plc4xEmbeddedEventLoop.java   |    2 +-
 .../transport/virtualcan/VirtualCANTransport.java  |   58 +-
 .../bacnetip/BACnetObjectsDefinitions.java         |   14 +-
 .../bacnetip/ObjectPropertyDeDuplicationTest.java  |  196 ++--
 111 files changed, 1097 insertions(+), 1227 deletions(-)

diff --git a/code-generation/language-java/src/main/resources/templates/java/enum-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/enum-template.java.ftlh
index a5e2f3f80e..342c950333 100644
--- a/code-generation/language-java/src/main/resources/templates/java/enum-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/enum-template.java.ftlh
@@ -143,7 +143,7 @@ public enum ${type.name} {
     }
 
     public static List<${type.name}> enumsForField${constantName?cap_first}(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)} fieldValue) {
-        List<${type.name}> _values = new ArrayList();
+        List<${type.name}> _values = new ArrayList<>();
         for (${type.name} _val : ${type.name}.values()) {
         <#if type.name == "String" || helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true) == "String">
             if(_val.get${constantName?cap_first}().equals(fieldValue)) {
diff --git a/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParserTest.java b/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParserTest.java
index 69638a6e8a..a7339f58c9 100644
--- a/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParserTest.java
+++ b/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/expression/ExpressionStringParserTest.java
@@ -76,32 +76,28 @@ class ExpressionStringParserTest {
                             "S7ParameterUserData"
                         );
                     },
-                    items -> {
-                        assertVariableLiteral(
-                            items,
-                            "items",
-                            hurzes -> {
-                                assertThat(hurzes, hasSize(1));
-                                assertVariableLiteral(
-                                    hurzes.get(0),
-                                    "hurz"
-                                );
-                            },
-                            null,
-                            0
-                        );
-                    });
+                    items -> assertVariableLiteral(
+                        items,
+                        "items",
+                        hurzes -> {
+                            assertThat(hurzes, hasSize(1));
+                            assertVariableLiteral(
+                                hurzes.get(0),
+                                "hurz"
+                            );
+                        },
+                        null,
+                        0
+                    ));
                 assertVariableLiteral(
                     outerCast.get(1),
                     "S7ParameterUserDataItemCPUFunctions"
                 );
             },
-            variableLiteral -> {
-                assertVariableLiteral(
-                    variableLiteral,
-                    "cpuFunctionType"
-                );
-            }
+            variableLiteral -> assertVariableLiteral(
+                variableLiteral,
+                "cpuFunctionType"
+            )
         );
     }
 
@@ -122,21 +118,19 @@ class ExpressionStringParserTest {
                     "S7ParameterUserData"
                 );
             },
-            variableLiteral -> {
-                assertVariableLiteral(
-                    variableLiteral,
-                    "items",
-                    terms -> {
-                        assertThat(terms, hasSize(1));
-                        assertVariableLiteral(
-                            terms.get(0),
-                            "hurz"
-                        );
-                    },
-                    null,
-                    0
-                );
-            }
+            variableLiteral -> assertVariableLiteral(
+                variableLiteral,
+                "items",
+                terms -> {
+                    assertThat(terms, hasSize(1));
+                    assertVariableLiteral(
+                        terms.get(0),
+                        "hurz"
+                    );
+                },
+                null,
+                0
+            )
         );
     }
 
diff --git a/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java b/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java
index cc00cd7fae..ce19a3b354 100644
--- a/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java
+++ b/code-generation/protocol-base-mspec/src/test/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParserTest.java
@@ -73,601 +73,595 @@ class MessageFormatParserTest {
 
         assertThat(typeContext)
             .extracting(TypeContext::getTypeDefinitions)
-            .satisfies(stringTypeDefinitionMap -> {
-                assertThat(stringTypeDefinitionMap)
-                    .hasEntrySatisfying("A", typeDefinition ->
-                        assertThat(typeDefinition)
-                            .asInstanceOf(type(DefaultComplexTypeDefinition.class))
-                            .satisfies(defaultComplexTypeDefinition -> {
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultTypeDefinition::getName)
-                                    .isEqualTo("A");
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getFields)
-                                    .satisfies(fields -> {
-                                        assertThat(fields)
-                                            .element(0)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("b");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                    .extracting(DefaultComplexTypeReference::getName)
-                                                    .isEqualTo("B");
-                                            });
-                                    });
-                            }))
-                    .hasEntrySatisfying("B", typeDefinition ->
-                        assertThat(typeDefinition)
-                            .asInstanceOf(type(DefaultComplexTypeDefinition.class))
-                            .satisfies(defaultComplexTypeDefinition -> {
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultTypeDefinition::getName)
-                                    .isEqualTo("B");
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getFields)
-                                    .satisfies(fields -> {
-                                        assertThat(fields)
-                                            .element(0)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("c");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                    .extracting(DefaultComplexTypeReference::getName)
-                                                    .isEqualTo("C");
-                                            });
-                                    });
-                            })
-                    )
-                    .hasEntrySatisfying("C", typeDefinition ->
-                        assertThat(typeDefinition)
-                            .asInstanceOf(type(DefaultComplexTypeDefinition.class))
-                            .satisfies(defaultComplexTypeDefinition -> {
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultTypeDefinition::getName)
-                                    .isEqualTo("C");
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getFields)
-                                    .satisfies(fields -> {
-                                        assertThat(fields)
-                                            .element(0)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("onlyOneField");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultBooleanTypeReference.class))
-                                                    .extracting(DefaultBooleanTypeReference::getBaseType)
-                                                    .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
-                                            });
-                                        assertThat(fields)
-                                            .element(1)
-                                            .asInstanceOf(type(DefaultVirtualField.class))
-                                            .satisfies(defaultVirtualField -> {
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("secondField");
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultVirtualField::getValueExpression)
-                                                    .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                    .satisfies(defaultVariableLiteral -> {
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getName)
-                                                            .isEqualTo("onlyOneField");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                            .asInstanceOf(type(DefaultBooleanTypeReference.class))
-                                                            .extracting(AbstractSimpleTypeReference::getBaseType)
-                                                            .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
-                                                    });
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultBooleanTypeReference.class))
-                                                    .extracting(DefaultBooleanTypeReference::getBaseType)
-                                                    .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
-                                            });
-                                        assertThat(fields)
-                                            .element(2)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("d");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultEnumTypeReference.class))
-                                                    .extracting(DefaultEnumTypeReference::getName)
-                                                    .isEqualTo("D");
-                                            });
-                                        assertThat(fields)
-                                            .element(3)
-                                            .asInstanceOf(type(DefaultVirtualField.class))
-                                            .satisfies(defaultVirtualField -> {
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("thirdField");
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultVirtualField::getValueExpression)
-                                                    .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                    .satisfies(defaultVariableLiteral -> {
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getName)
-                                                            .isEqualTo("d");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                            .asInstanceOf(type(DefaultEnumTypeReference.class))
-                                                            .extracting(DefaultEnumTypeReference::getName)
-                                                            .isEqualTo("D");
-                                                    });
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultEnumTypeReference.class))
-                                                    .extracting(DefaultEnumTypeReference::getName)
-                                                    .isEqualTo("D");
-                                            });
-                                        assertThat(fields)
-                                            .element(4)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("nothingElseMatters");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultIntegerTypeReference.class))
-                                                    .extracting(DefaultIntegerTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
-                                                    .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 8);
-                                            });
-                                        assertThat(fields)
-                                            .element(5)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("e");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                    .satisfies(defaultComplexTypeReference -> {
-                                                        assertThat(defaultComplexTypeReference)
-                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                            .isEqualTo("E");
-                                                        assertThat(defaultComplexTypeReference)
-                                                            .extracting(DefaultComplexTypeReference::getParams)
-                                                            .satisfies(paramsOptional ->
-                                                                assertThat(paramsOptional)
-                                                                    .hasValueSatisfying(params->
-                                                                            assertThat(params)
-                                                                                .element(0)
-                                                                                .asInstanceOf(type(DefaultBooleanLiteral.class))
-                                                                                .extracting(DefaultBooleanLiteral::getValue)
-                                                                                .isEqualTo(true)
-                                                                        )
-                                                            );
-                                                    });
-                                            });
-                                    });
-                            })
-                    )
-                    .hasEntrySatisfying("D", typeDefinition ->
-                        assertThat(typeDefinition)
-                            .asInstanceOf(type(DefaultEnumTypeDefinition.class))
-                            .satisfies(defaultEnumTypeDefinition -> {
-                                assertThat(defaultEnumTypeDefinition)
-                                    .extracting(DefaultTypeDefinition::getName)
-                                    .isEqualTo("D");
-                                assertThat(defaultEnumTypeDefinition)
-                                    .extracting(DefaultEnumTypeDefinition::getType)
-                                    .satisfies(simpleTypeReferenceOptional ->
-                                        assertThat(simpleTypeReferenceOptional)
-                                            .hasValueSatisfying(simpleTypeReference ->
-                                                assertThat(simpleTypeReference)
-                                                    .extracting(SimpleTypeReference::getBaseType, SimpleTypeReference::getSizeInBits)
-                                                    .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 32)
-                                            )
-                                    );
-                                assertThat(defaultEnumTypeDefinition)
-                                    .extracting(DefaultEnumTypeDefinition::getEnumValues)
-                                    .satisfies(enumValues ->
-                                        assertThat(enumValues)
-                                            .element(0)
-                                            .extracting(EnumValue::getName, EnumValue::getValue)
-                                            .containsExactly("D", "0x1")
-                                    );
-                            })
-                    )
-                    .hasEntrySatisfying("E", typeDefinition ->
-                        assertThat(typeDefinition)
-                            .asInstanceOf(type(DefaultComplexTypeDefinition.class))
-                            .satisfies(defaultComplexTypeDefinition -> {
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getName)
-                                    .isEqualTo("E");
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getFields)
-                                    .satisfies(fields ->
-                                        assertThat(fields)
-                                            .element(0)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .extracting(DefaultTypedNamedField::getName)
-                                            .isEqualTo("eField")
-                                    );
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getParserArguments)
-                                    .satisfies(parserArgumentsOptional ->
-                                        assertThat(parserArgumentsOptional)
-                                            .hasValueSatisfying(arguments -> {
-                                                assertThat(arguments)
-                                                    .element(0)
-                                                    .asInstanceOf(type(DefaultArgument.class))
-                                                    .extracting(DefaultArgument::getName)
-                                                    .isEqualTo("aBit");
-                                                assertThat(arguments)
-                                                    .element(0)
-                                                    .asInstanceOf(type(DefaultArgument.class))
-                                                    .extracting(DefaultArgument::getType)
-                                                    .satisfies(typeReference ->
-                                                        assertThat(typeReference)
-                                                            .asInstanceOf(type(DefaultBooleanTypeReference.class))
-                                                            .extracting(AbstractSimpleTypeReference::getBaseType)
-                                                            .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT)
-                                                    );
-                                            })
-                                    );
-                            })
-                    )
-                    .hasEntrySatisfying("Root", typeDefinition ->
-                        assertThat(typeDefinition)
-                            .asInstanceOf(type(DefaultComplexTypeDefinition.class))
-                            .satisfies(defaultComplexTypeDefinition -> {
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getName)
-                                    .isEqualTo("Root");
-                                assertThat(defaultComplexTypeDefinition)
-                                    .extracting(DefaultComplexTypeDefinition::getFields)
-                                    .satisfies(fields -> {
-                                        assertThat(fields)
-                                            .element(0)
-                                            .asInstanceOf(type(DefaultSimpleField.class))
-                                            .satisfies(defaultSimpleField -> {
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("a");
-                                                assertThat(defaultSimpleField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                    .extracting(DefaultComplexTypeReference::getName)
-                                                    .isEqualTo("A");
-                                            });
-                                        assertThat(fields)
-                                            .element(1)
-                                            .asInstanceOf(type(DefaultVirtualField.class))
-                                            .satisfies(defaultVirtualField -> {
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("doesIt");
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultVirtualField::getValueExpression)
-                                                    .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                    .satisfies(defaultVariableLiteral -> {
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getName)
-                                                            .isEqualTo("a");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                            .isEqualTo("A");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                            .satisfies(childOptional ->
-                                                                assertThat(childOptional)
-                                                                    .hasValueSatisfying(childVariableLiteral -> {
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                            .isEqualTo("b");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                            .isEqualTo("B");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                            .satisfies(childChildOptional ->
-                                                                                assertThat(childChildOptional)
-                                                                                    .hasValueSatisfying(childChildVariableLiteral -> {
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                            .isEqualTo("c");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                                            .isEqualTo("C");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                                            .satisfies(childChildChildOptional ->
-                                                                                                assertThat(childChildChildOptional)
-                                                                                                    .hasValueSatisfying(childChildChildVariableLiteral -> {
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                                            .isEqualTo("nothingElseMatters");
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                                            .asInstanceOf(type(DefaultIntegerTypeReference.class))
-                                                                                                            .extracting(DefaultIntegerTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
-                                                                                                            .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 8);
-                                                                                                    })
-                                                                                            );
-                                                                                    })
-                                                                            );
-                                                                    })
-                                                            );
-                                                    });
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(AbstractSimpleTypeReference.class))
-                                                    .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
-                                                    .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 8);
-                                            });
-                                        assertThat(fields)
-                                            .element(2)
-                                            .asInstanceOf(type(DefaultVirtualField.class))
-                                            .satisfies(defaultVirtualField -> {
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("thisNow");
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultVirtualField::getValueExpression)
-                                                    .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                    .satisfies(defaultVariableLiteral -> {
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getName)
-                                                            .isEqualTo("a");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                            .isEqualTo("A");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                            .satisfies(childOptional ->
-                                                                assertThat(childOptional)
-                                                                    .hasValueSatisfying(childVariableLiteral -> {
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                            .isEqualTo("b");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                            .isEqualTo("B");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                            .satisfies(childChildOptional ->
-                                                                                assertThat(childChildOptional)
-                                                                                    .hasValueSatisfying(childChildVariableLiteral -> {
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                            .isEqualTo("c");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                                            .isEqualTo("C");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                                            .satisfies(childChildChildOptional ->
-                                                                                                assertThat(childChildChildOptional)
-                                                                                                    .hasValueSatisfying(childChildChildVariableLiteral -> {
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                                            .isEqualTo("secondField");
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                                            .asInstanceOf(type(DefaultBooleanTypeReference.class))
-                                                                                                            .extracting(AbstractSimpleTypeReference::getBaseType)
-                                                                                                            .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
-                                                                                                    })
-                                                                                            );
-                                                                                    })
-                                                                            );
-                                                                    })
-                                                            );
-                                                    });
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(AbstractSimpleTypeReference.class))
-                                                    .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
-                                                    .containsExactly(SimpleTypeReference.SimpleBaseType.BIT, 1);
-                                            });
-                                        assertThat(fields)
-                                            .element(3)
-                                            .asInstanceOf(type(DefaultVirtualField.class))
-                                            .satisfies(defaultVirtualField -> {
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("thisNow2");
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultVirtualField::getValueExpression)
-                                                    .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                    .satisfies(defaultVariableLiteral -> {
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getName)
-                                                            .isEqualTo("a");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                            .isEqualTo("A");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                            .satisfies(childOptional ->
-                                                                assertThat(childOptional)
-                                                                    .hasValueSatisfying(childVariableLiteral -> {
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                            .isEqualTo("b");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                            .isEqualTo("B");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                            .satisfies(childChildOptional ->
-                                                                                assertThat(childChildOptional)
-                                                                                    .hasValueSatisfying(childChildVariableLiteral -> {
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                            .isEqualTo("c");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                                            .isEqualTo("C");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                                            .satisfies(childChildChildOptional ->
-                                                                                                assertThat(childChildChildOptional)
-                                                                                                    .hasValueSatisfying(childChildChildVariableLiteral -> {
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                                            .isEqualTo("thirdField");
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                                            .asInstanceOf(type(DefaultEnumTypeReference.class))
-                                                                                                            .extracting(DefaultEnumTypeReference::getName)
-                                                                                                            .isEqualTo("D");
-                                                                                                    })
-                                                                                            );
-                                                                                    })
-                                                                            );
-                                                                    })
-                                                            );
-                                                    });
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(AbstractSimpleTypeReference.class))
-                                                    .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
-                                                    .containsExactly(SimpleTypeReference.SimpleBaseType.BIT, 1);
-                                            });
-                                        assertThat(fields)
-                                            .element(4)
-                                            .asInstanceOf(type(DefaultVirtualField.class))
-                                            .satisfies(defaultVirtualField -> {
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedNamedField::getName)
-                                                    .isEqualTo("thisNow3");
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultVirtualField::getValueExpression)
-                                                    .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                    .satisfies(defaultVariableLiteral -> {
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getName)
-                                                            .isEqualTo("a");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                            .isEqualTo("A");
-                                                        assertThat(defaultVariableLiteral)
-                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                            .satisfies(childOptional ->
-                                                                assertThat(childOptional)
-                                                                    .hasValueSatisfying(childVariableLiteral -> {
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                            .isEqualTo("b");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                            .isEqualTo("B");
-                                                                        assertThat(childVariableLiteral)
-                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                            .satisfies(childChildOptional ->
-                                                                                assertThat(childChildOptional)
-                                                                                    .hasValueSatisfying(childChildVariableLiteral -> {
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                            .isEqualTo("c");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                                            .isEqualTo("C");
-                                                                                        assertThat(childChildVariableLiteral)
-                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                            .extracting(DefaultVariableLiteral::getChild)
-                                                                                            .satisfies(childChildChildOptional ->
-                                                                                                assertThat(childChildChildOptional)
-                                                                                                    .hasValueSatisfying(childChildChildVariableLiteral -> {
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getName)
-                                                                                                            .isEqualTo("e");
-                                                                                                        assertThat(childChildChildVariableLiteral)
-                                                                                                            .asInstanceOf(type(DefaultVariableLiteral.class))
-                                                                                                            .extracting(DefaultVariableLiteral::getTypeReference)
-                                                                                                            .asInstanceOf(type(DefaultComplexTypeReference.class))
-                                                                                                            .extracting(DefaultComplexTypeReference::getName)
-                                                                                                            .isEqualTo("E");
-                                                                                                    })
-                                                                                            );
-                                                                                    })
-                                                                            );
-                                                                    })
-                                                            );
-                                                    });
-                                                assertThat(defaultVirtualField)
-                                                    .extracting(DefaultTypedField::getType)
-                                                    .asInstanceOf(type(AbstractSimpleTypeReference.class))
-                                                    .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
-                                                    .containsExactly(SimpleTypeReference.SimpleBaseType.BIT, 1);
-                                            });
-                                    });
-                            })
-                    );
-            });
+            .satisfies(stringTypeDefinitionMap -> assertThat(stringTypeDefinitionMap)
+                .hasEntrySatisfying("A", typeDefinition ->
+                    assertThat(typeDefinition)
+                        .asInstanceOf(type(DefaultComplexTypeDefinition.class))
+                        .satisfies(defaultComplexTypeDefinition -> {
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultTypeDefinition::getName)
+                                .isEqualTo("A");
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getFields)
+                                .satisfies(fields -> assertThat(fields)
+                                        .element(0)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("b");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                .extracting(DefaultComplexTypeReference::getName)
+                                                .isEqualTo("B");
+                                        }));
+                        }))
+                .hasEntrySatisfying("B", typeDefinition ->
+                    assertThat(typeDefinition)
+                        .asInstanceOf(type(DefaultComplexTypeDefinition.class))
+                        .satisfies(defaultComplexTypeDefinition -> {
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultTypeDefinition::getName)
+                                .isEqualTo("B");
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getFields)
+                                .satisfies(fields -> assertThat(fields)
+                                        .element(0)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("c");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                .extracting(DefaultComplexTypeReference::getName)
+                                                .isEqualTo("C");
+                                        }));
+                        })
+                )
+                .hasEntrySatisfying("C", typeDefinition ->
+                    assertThat(typeDefinition)
+                        .asInstanceOf(type(DefaultComplexTypeDefinition.class))
+                        .satisfies(defaultComplexTypeDefinition -> {
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultTypeDefinition::getName)
+                                .isEqualTo("C");
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getFields)
+                                .satisfies(fields -> {
+                                    assertThat(fields)
+                                        .element(0)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("onlyOneField");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultBooleanTypeReference.class))
+                                                .extracting(DefaultBooleanTypeReference::getBaseType)
+                                                .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
+                                        });
+                                    assertThat(fields)
+                                        .element(1)
+                                        .asInstanceOf(type(DefaultVirtualField.class))
+                                        .satisfies(defaultVirtualField -> {
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("secondField");
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultVirtualField::getValueExpression)
+                                                .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                .satisfies(defaultVariableLiteral -> {
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getName)
+                                                        .isEqualTo("onlyOneField");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                        .asInstanceOf(type(DefaultBooleanTypeReference.class))
+                                                        .extracting(AbstractSimpleTypeReference::getBaseType)
+                                                        .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
+                                                });
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultBooleanTypeReference.class))
+                                                .extracting(DefaultBooleanTypeReference::getBaseType)
+                                                .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
+                                        });
+                                    assertThat(fields)
+                                        .element(2)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("d");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultEnumTypeReference.class))
+                                                .extracting(DefaultEnumTypeReference::getName)
+                                                .isEqualTo("D");
+                                        });
+                                    assertThat(fields)
+                                        .element(3)
+                                        .asInstanceOf(type(DefaultVirtualField.class))
+                                        .satisfies(defaultVirtualField -> {
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("thirdField");
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultVirtualField::getValueExpression)
+                                                .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                .satisfies(defaultVariableLiteral -> {
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getName)
+                                                        .isEqualTo("d");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                        .asInstanceOf(type(DefaultEnumTypeReference.class))
+                                                        .extracting(DefaultEnumTypeReference::getName)
+                                                        .isEqualTo("D");
+                                                });
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultEnumTypeReference.class))
+                                                .extracting(DefaultEnumTypeReference::getName)
+                                                .isEqualTo("D");
+                                        });
+                                    assertThat(fields)
+                                        .element(4)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("nothingElseMatters");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultIntegerTypeReference.class))
+                                                .extracting(DefaultIntegerTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
+                                                .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 8);
+                                        });
+                                    assertThat(fields)
+                                        .element(5)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("e");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                .satisfies(defaultComplexTypeReference -> {
+                                                    assertThat(defaultComplexTypeReference)
+                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                        .isEqualTo("E");
+                                                    assertThat(defaultComplexTypeReference)
+                                                        .extracting(DefaultComplexTypeReference::getParams)
+                                                        .satisfies(paramsOptional ->
+                                                            assertThat(paramsOptional)
+                                                                .hasValueSatisfying(params->
+                                                                        assertThat(params)
+                                                                            .element(0)
+                                                                            .asInstanceOf(type(DefaultBooleanLiteral.class))
+                                                                            .extracting(DefaultBooleanLiteral::getValue)
+                                                                            .isEqualTo(true)
+                                                                    )
+                                                        );
+                                                });
+                                        });
+                                });
+                        })
+                )
+                .hasEntrySatisfying("D", typeDefinition ->
+                    assertThat(typeDefinition)
+                        .asInstanceOf(type(DefaultEnumTypeDefinition.class))
+                        .satisfies(defaultEnumTypeDefinition -> {
+                            assertThat(defaultEnumTypeDefinition)
+                                .extracting(DefaultTypeDefinition::getName)
+                                .isEqualTo("D");
+                            assertThat(defaultEnumTypeDefinition)
+                                .extracting(DefaultEnumTypeDefinition::getType)
+                                .satisfies(simpleTypeReferenceOptional ->
+                                    assertThat(simpleTypeReferenceOptional)
+                                        .hasValueSatisfying(simpleTypeReference ->
+                                            assertThat(simpleTypeReference)
+                                                .extracting(SimpleTypeReference::getBaseType, SimpleTypeReference::getSizeInBits)
+                                                .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 32)
+                                        )
+                                );
+                            assertThat(defaultEnumTypeDefinition)
+                                .extracting(DefaultEnumTypeDefinition::getEnumValues)
+                                .satisfies(enumValues ->
+                                    assertThat(enumValues)
+                                        .element(0)
+                                        .extracting(EnumValue::getName, EnumValue::getValue)
+                                        .containsExactly("D", "0x1")
+                                );
+                        })
+                )
+                .hasEntrySatisfying("E", typeDefinition ->
+                    assertThat(typeDefinition)
+                        .asInstanceOf(type(DefaultComplexTypeDefinition.class))
+                        .satisfies(defaultComplexTypeDefinition -> {
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getName)
+                                .isEqualTo("E");
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getFields)
+                                .satisfies(fields ->
+                                    assertThat(fields)
+                                        .element(0)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .extracting(DefaultTypedNamedField::getName)
+                                        .isEqualTo("eField")
+                                );
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getParserArguments)
+                                .satisfies(parserArgumentsOptional ->
+                                    assertThat(parserArgumentsOptional)
+                                        .hasValueSatisfying(arguments -> {
+                                            assertThat(arguments)
+                                                .element(0)
+                                                .asInstanceOf(type(DefaultArgument.class))
+                                                .extracting(DefaultArgument::getName)
+                                                .isEqualTo("aBit");
+                                            assertThat(arguments)
+                                                .element(0)
+                                                .asInstanceOf(type(DefaultArgument.class))
+                                                .extracting(DefaultArgument::getType)
+                                                .satisfies(typeReference ->
+                                                    assertThat(typeReference)
+                                                        .asInstanceOf(type(DefaultBooleanTypeReference.class))
+                                                        .extracting(AbstractSimpleTypeReference::getBaseType)
+                                                        .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT)
+                                                );
+                                        })
+                                );
+                        })
+                )
+                .hasEntrySatisfying("Root", typeDefinition ->
+                    assertThat(typeDefinition)
+                        .asInstanceOf(type(DefaultComplexTypeDefinition.class))
+                        .satisfies(defaultComplexTypeDefinition -> {
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getName)
+                                .isEqualTo("Root");
+                            assertThat(defaultComplexTypeDefinition)
+                                .extracting(DefaultComplexTypeDefinition::getFields)
+                                .satisfies(fields -> {
+                                    assertThat(fields)
+                                        .element(0)
+                                        .asInstanceOf(type(DefaultSimpleField.class))
+                                        .satisfies(defaultSimpleField -> {
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("a");
+                                            assertThat(defaultSimpleField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                .extracting(DefaultComplexTypeReference::getName)
+                                                .isEqualTo("A");
+                                        });
+                                    assertThat(fields)
+                                        .element(1)
+                                        .asInstanceOf(type(DefaultVirtualField.class))
+                                        .satisfies(defaultVirtualField -> {
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("doesIt");
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultVirtualField::getValueExpression)
+                                                .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                .satisfies(defaultVariableLiteral -> {
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getName)
+                                                        .isEqualTo("a");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                        .isEqualTo("A");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                        .satisfies(childOptional ->
+                                                            assertThat(childOptional)
+                                                                .hasValueSatisfying(childVariableLiteral -> {
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                        .isEqualTo("b");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                        .isEqualTo("B");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                        .satisfies(childChildOptional ->
+                                                                            assertThat(childChildOptional)
+                                                                                .hasValueSatisfying(childChildVariableLiteral -> {
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                        .isEqualTo("c");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                                        .isEqualTo("C");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                                        .satisfies(childChildChildOptional ->
+                                                                                            assertThat(childChildChildOptional)
+                                                                                                .hasValueSatisfying(childChildChildVariableLiteral -> {
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                                        .isEqualTo("nothingElseMatters");
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                                        .asInstanceOf(type(DefaultIntegerTypeReference.class))
+                                                                                                        .extracting(DefaultIntegerTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
+                                                                                                        .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 8);
+                                                                                                })
+                                                                                        );
+                                                                                })
+                                                                        );
+                                                                })
+                                                        );
+                                                });
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(AbstractSimpleTypeReference.class))
+                                                .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
+                                                .containsExactly(SimpleTypeReference.SimpleBaseType.UINT, 8);
+                                        });
+                                    assertThat(fields)
+                                        .element(2)
+                                        .asInstanceOf(type(DefaultVirtualField.class))
+                                        .satisfies(defaultVirtualField -> {
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("thisNow");
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultVirtualField::getValueExpression)
+                                                .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                .satisfies(defaultVariableLiteral -> {
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getName)
+                                                        .isEqualTo("a");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                        .isEqualTo("A");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                        .satisfies(childOptional ->
+                                                            assertThat(childOptional)
+                                                                .hasValueSatisfying(childVariableLiteral -> {
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                        .isEqualTo("b");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                        .isEqualTo("B");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                        .satisfies(childChildOptional ->
+                                                                            assertThat(childChildOptional)
+                                                                                .hasValueSatisfying(childChildVariableLiteral -> {
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                        .isEqualTo("c");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                                        .isEqualTo("C");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                                        .satisfies(childChildChildOptional ->
+                                                                                            assertThat(childChildChildOptional)
+                                                                                                .hasValueSatisfying(childChildChildVariableLiteral -> {
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                                        .isEqualTo("secondField");
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                                        .asInstanceOf(type(DefaultBooleanTypeReference.class))
+                                                                                                        .extracting(AbstractSimpleTypeReference::getBaseType)
+                                                                                                        .isEqualTo(SimpleTypeReference.SimpleBaseType.BIT);
+                                                                                                })
+                                                                                        );
+                                                                                })
+                                                                        );
+                                                                })
+                                                        );
+                                                });
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(AbstractSimpleTypeReference.class))
+                                                .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
+                                                .containsExactly(SimpleTypeReference.SimpleBaseType.BIT, 1);
+                                        });
+                                    assertThat(fields)
+                                        .element(3)
+                                        .asInstanceOf(type(DefaultVirtualField.class))
+                                        .satisfies(defaultVirtualField -> {
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("thisNow2");
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultVirtualField::getValueExpression)
+                                                .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                .satisfies(defaultVariableLiteral -> {
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getName)
+                                                        .isEqualTo("a");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                        .isEqualTo("A");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                        .satisfies(childOptional ->
+                                                            assertThat(childOptional)
+                                                                .hasValueSatisfying(childVariableLiteral -> {
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                        .isEqualTo("b");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                        .isEqualTo("B");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                        .satisfies(childChildOptional ->
+                                                                            assertThat(childChildOptional)
+                                                                                .hasValueSatisfying(childChildVariableLiteral -> {
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                        .isEqualTo("c");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                                        .isEqualTo("C");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                                        .satisfies(childChildChildOptional ->
+                                                                                            assertThat(childChildChildOptional)
+                                                                                                .hasValueSatisfying(childChildChildVariableLiteral -> {
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                                        .isEqualTo("thirdField");
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                                        .asInstanceOf(type(DefaultEnumTypeReference.class))
+                                                                                                        .extracting(DefaultEnumTypeReference::getName)
+                                                                                                        .isEqualTo("D");
+                                                                                                })
+                                                                                        );
+                                                                                })
+                                                                        );
+                                                                })
+                                                        );
+                                                });
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(AbstractSimpleTypeReference.class))
+                                                .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
+                                                .containsExactly(SimpleTypeReference.SimpleBaseType.BIT, 1);
+                                        });
+                                    assertThat(fields)
+                                        .element(4)
+                                        .asInstanceOf(type(DefaultVirtualField.class))
+                                        .satisfies(defaultVirtualField -> {
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedNamedField::getName)
+                                                .isEqualTo("thisNow3");
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultVirtualField::getValueExpression)
+                                                .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                .satisfies(defaultVariableLiteral -> {
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getName)
+                                                        .isEqualTo("a");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                        .isEqualTo("A");
+                                                    assertThat(defaultVariableLiteral)
+                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                        .satisfies(childOptional ->
+                                                            assertThat(childOptional)
+                                                                .hasValueSatisfying(childVariableLiteral -> {
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                        .isEqualTo("b");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                        .isEqualTo("B");
+                                                                    assertThat(childVariableLiteral)
+                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                        .satisfies(childChildOptional ->
+                                                                            assertThat(childChildOptional)
+                                                                                .hasValueSatisfying(childChildVariableLiteral -> {
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                        .isEqualTo("c");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                                        .isEqualTo("C");
+                                                                                    assertThat(childChildVariableLiteral)
+                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                        .extracting(DefaultVariableLiteral::getChild)
+                                                                                        .satisfies(childChildChildOptional ->
+                                                                                            assertThat(childChildChildOptional)
+                                                                                                .hasValueSatisfying(childChildChildVariableLiteral -> {
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getName)
+                                                                                                        .isEqualTo("e");
+                                                                                                    assertThat(childChildChildVariableLiteral)
+                                                                                                        .asInstanceOf(type(DefaultVariableLiteral.class))
+                                                                                                        .extracting(DefaultVariableLiteral::getTypeReference)
+                                                                                                        .asInstanceOf(type(DefaultComplexTypeReference.class))
+                                                                                                        .extracting(DefaultComplexTypeReference::getName)
+                                                                                                        .isEqualTo("E");
+                                                                                                })
+                                                                                        );
+                                                                                })
+                                                                        );
+                                                                })
+                                                        );
+                                                });
+                                            assertThat(defaultVirtualField)
+                                                .extracting(DefaultTypedField::getType)
+                                                .asInstanceOf(type(AbstractSimpleTypeReference.class))
+                                                .extracting(AbstractSimpleTypeReference::getBaseType, AbstractSimpleTypeReference::getSizeInBits)
+                                                .containsExactly(SimpleTypeReference.SimpleBaseType.BIT, 1);
+                                        });
+                                });
+                        })
+                ));
     }
 
 }
\ No newline at end of file
diff --git a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataType.java b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataType.java
index a7525f9ce8..d573b18a01 100644
--- a/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataType.java
+++ b/plc4j/drivers/ads/src/main/generated/org/apache/plc4x/java/ads/readwrite/AdsDataType.java
@@ -103,7 +103,7 @@ public enum AdsDataType {
   }
 
   public static List<AdsDataType> enumsForFieldNumBytes(int fieldValue) {
-    List<AdsDataType> _values = new ArrayList();
+    List<AdsDataType> _values = new ArrayList<>();
     for (AdsDataType _val : AdsDataType.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -126,7 +126,7 @@ public enum AdsDataType {
   }
 
   public static List<AdsDataType> enumsForFieldPlcValueType(PlcValueType fieldValue) {
-    List<AdsDataType> _values = new ArrayList();
+    List<AdsDataType> _values = new ArrayList<>();
     for (AdsDataType _val : AdsDataType.values()) {
       if (_val.getPlcValueType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java
index 20f437b7b5..ab9564834e 100644
--- a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java
+++ b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/AdsPlcDriver.java
@@ -100,12 +100,7 @@ public class AdsPlcDriver extends GeneratedDriverBase<AmsTCPPacket> {
 
     @Override
     public PlcDriverMetadata getMetadata() {
-        return new PlcDriverMetadata() {
-            @Override
-            public boolean canDiscover() {
-                return true;
-            }
-        };
+        return () -> true;
     }
 
     /**
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
index 91a6871a84..4a7f6f2754 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
@@ -1669,7 +1669,7 @@ public enum BACnetVendorId {
   }
 
   public static List<BACnetVendorId> enumsForFieldVendorId(int fieldValue) {
-    List<BACnetVendorId> _values = new ArrayList();
+    List<BACnetVendorId> _values = new ArrayList<>();
     for (BACnetVendorId _val : BACnetVendorId.values()) {
       if (_val.getVendorId() == fieldValue) {
         _values.add(_val);
@@ -1692,7 +1692,7 @@ public enum BACnetVendorId {
   }
 
   public static List<BACnetVendorId> enumsForFieldVendorName(String fieldValue) {
-    List<BACnetVendorId> _values = new ArrayList();
+    List<BACnetVendorId> _values = new ArrayList<>();
     for (BACnetVendorId _val : BACnetVendorId.values()) {
       if (_val.getVendorName().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxApduLengthAccepted.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxApduLengthAccepted.java
index 53041dec75..e927363908 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxApduLengthAccepted.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxApduLengthAccepted.java
@@ -77,7 +77,7 @@ public enum MaxApduLengthAccepted {
   }
 
   public static List<MaxApduLengthAccepted> enumsForFieldNumberOfOctets(int fieldValue) {
-    List<MaxApduLengthAccepted> _values = new ArrayList();
+    List<MaxApduLengthAccepted> _values = new ArrayList<>();
     for (MaxApduLengthAccepted _val : MaxApduLengthAccepted.values()) {
       if (_val.getNumberOfOctets() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxSegmentsAccepted.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxSegmentsAccepted.java
index 944d5d3964..3a278aeaf9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxSegmentsAccepted.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/MaxSegmentsAccepted.java
@@ -69,7 +69,7 @@ public enum MaxSegmentsAccepted {
   }
 
   public static List<MaxSegmentsAccepted> enumsForFieldMaxSegments(short fieldValue) {
-    List<MaxSegmentsAccepted> _values = new ArrayList();
+    List<MaxSegmentsAccepted> _values = new ArrayList<>();
     for (MaxSegmentsAccepted _val : MaxSegmentsAccepted.values()) {
       if (_val.getMaxSegments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/ede/EdeParser.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/ede/EdeParser.java
index 914e2cfbf0..9df9f62336 100644
--- a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/ede/EdeParser.java
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/ede/EdeParser.java
@@ -61,11 +61,11 @@ public class EdeParser {
     private List<File> findAllEdeFiles(File curDir) {
         List<File> edeFiles = new LinkedList<>();
         try {
-            Files.walkFileTree(curDir.toPath(), new SimpleFileVisitor<Path>() {
+            Files.walkFileTree(curDir.toPath(), new SimpleFileVisitor<>() {
                 @Override
                 public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) {
                     final File file = path.toFile();
-                    if(file.isFile()) {
+                    if (file.isFile()) {
                         // If the name starts with "edeDataText" this is probably an EDE file.
                         if (file.getName().startsWith("edeDataText")) {
                             String suffix = file.getName().substring("edeDataText".length());
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandType.java
index c9b340c315..d94ebcbcd8 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandType.java
@@ -69,7 +69,7 @@ public enum AccessControlCommandType {
   }
 
   public static List<AccessControlCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<AccessControlCommandType> _values = new ArrayList();
+    List<AccessControlCommandType> _values = new ArrayList<>();
     for (AccessControlCommandType _val : AccessControlCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandTypeContainer.java
index b151f1e36f..b8bb2d435a 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AccessControlCommandTypeContainer.java
@@ -419,7 +419,7 @@ public enum AccessControlCommandTypeContainer {
   }
 
   public static List<AccessControlCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<AccessControlCommandTypeContainer> _values = new ArrayList();
+    List<AccessControlCommandTypeContainer> _values = new ArrayList<>();
     for (AccessControlCommandTypeContainer _val : AccessControlCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -444,7 +444,7 @@ public enum AccessControlCommandTypeContainer {
 
   public static List<AccessControlCommandTypeContainer> enumsForFieldCommandType(
       AccessControlCommandType fieldValue) {
-    List<AccessControlCommandTypeContainer> _values = new ArrayList();
+    List<AccessControlCommandTypeContainer> _values = new ArrayList<>();
     for (AccessControlCommandTypeContainer _val : AccessControlCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
@@ -469,7 +469,7 @@ public enum AccessControlCommandTypeContainer {
 
   public static List<AccessControlCommandTypeContainer> enumsForFieldCategory(
       AccessControlCategory fieldValue) {
-    List<AccessControlCommandTypeContainer> _values = new ArrayList();
+    List<AccessControlCommandTypeContainer> _values = new ArrayList<>();
     for (AccessControlCommandTypeContainer _val : AccessControlCommandTypeContainer.values()) {
       if (_val.getCategory() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandType.java
index 069c34a7f8..d51f321b14 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandType.java
@@ -80,7 +80,7 @@ public enum AirConditioningCommandType {
   }
 
   public static List<AirConditioningCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<AirConditioningCommandType> _values = new ArrayList();
+    List<AirConditioningCommandType> _values = new ArrayList<>();
     for (AirConditioningCommandType _val : AirConditioningCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandTypeContainer.java
index dba4a64708..83b0ec9f2c 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/AirConditioningCommandTypeContainer.java
@@ -101,7 +101,7 @@ public enum AirConditioningCommandTypeContainer {
   }
 
   public static List<AirConditioningCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<AirConditioningCommandTypeContainer> _values = new ArrayList();
+    List<AirConditioningCommandTypeContainer> _values = new ArrayList<>();
     for (AirConditioningCommandTypeContainer _val : AirConditioningCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -126,7 +126,7 @@ public enum AirConditioningCommandTypeContainer {
 
   public static List<AirConditioningCommandTypeContainer> enumsForFieldCommandType(
       AirConditioningCommandType fieldValue) {
-    List<AirConditioningCommandTypeContainer> _values = new ArrayList();
+    List<AirConditioningCommandTypeContainer> _values = new ArrayList<>();
     for (AirConditioningCommandTypeContainer _val : AirConditioningCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ApplicationIdContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ApplicationIdContainer.java
index 0a9f1505c9..e018e5d9a7 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ApplicationIdContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ApplicationIdContainer.java
@@ -330,7 +330,7 @@ public enum ApplicationIdContainer {
 
   public static List<ApplicationIdContainer> enumsForFieldLightingCompatible(
       LightingCompatible fieldValue) {
-    List<ApplicationIdContainer> _values = new ArrayList();
+    List<ApplicationIdContainer> _values = new ArrayList<>();
     for (ApplicationIdContainer _val : ApplicationIdContainer.values()) {
       if (_val.getLightingCompatible() == fieldValue) {
         _values.add(_val);
@@ -353,7 +353,7 @@ public enum ApplicationIdContainer {
   }
 
   public static List<ApplicationIdContainer> enumsForFieldApplicationId(ApplicationId fieldValue) {
-    List<ApplicationIdContainer> _values = new ArrayList();
+    List<ApplicationIdContainer> _values = new ArrayList<>();
     for (ApplicationIdContainer _val : ApplicationIdContainer.values()) {
       if (_val.getApplicationId() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Attribute.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Attribute.java
index 4881937f1e..72baef1b8d 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Attribute.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Attribute.java
@@ -79,7 +79,7 @@ public enum Attribute {
   }
 
   public static List<Attribute> enumsForFieldBytesReturned(short fieldValue) {
-    List<Attribute> _values = new ArrayList();
+    List<Attribute> _values = new ArrayList<>();
     for (Attribute _val : Attribute.values()) {
       if (_val.getBytesReturned() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/CALCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/CALCommandTypeContainer.java
index 8fd3abe1e0..211accaa52 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/CALCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/CALCommandTypeContainer.java
@@ -180,7 +180,7 @@ public enum CALCommandTypeContainer {
   }
 
   public static List<CALCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<CALCommandTypeContainer> _values = new ArrayList();
+    List<CALCommandTypeContainer> _values = new ArrayList<>();
     for (CALCommandTypeContainer _val : CALCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -203,7 +203,7 @@ public enum CALCommandTypeContainer {
   }
 
   public static List<CALCommandTypeContainer> enumsForFieldCommandType(CALCommandType fieldValue) {
-    List<CALCommandTypeContainer> _values = new ArrayList();
+    List<CALCommandTypeContainer> _values = new ArrayList<>();
     for (CALCommandTypeContainer _val : CALCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandType.java
index bda8e29bd8..c1ed6d78c3 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandType.java
@@ -65,7 +65,7 @@ public enum ClockAndTimekeepingCommandType {
 
   public static List<ClockAndTimekeepingCommandType> enumsForFieldNumberOfArguments(
       short fieldValue) {
-    List<ClockAndTimekeepingCommandType> _values = new ArrayList();
+    List<ClockAndTimekeepingCommandType> _values = new ArrayList<>();
     for (ClockAndTimekeepingCommandType _val : ClockAndTimekeepingCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandTypeContainer.java
index 95729d409e..a4dcc6c034 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ClockAndTimekeepingCommandTypeContainer.java
@@ -86,7 +86,7 @@ public enum ClockAndTimekeepingCommandTypeContainer {
 
   public static List<ClockAndTimekeepingCommandTypeContainer> enumsForFieldNumBytes(
       short fieldValue) {
-    List<ClockAndTimekeepingCommandTypeContainer> _values = new ArrayList();
+    List<ClockAndTimekeepingCommandTypeContainer> _values = new ArrayList<>();
     for (ClockAndTimekeepingCommandTypeContainer _val :
         ClockAndTimekeepingCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
@@ -113,7 +113,7 @@ public enum ClockAndTimekeepingCommandTypeContainer {
 
   public static List<ClockAndTimekeepingCommandTypeContainer> enumsForFieldCommandType(
       ClockAndTimekeepingCommandType fieldValue) {
-    List<ClockAndTimekeepingCommandTypeContainer> _values = new ArrayList();
+    List<ClockAndTimekeepingCommandTypeContainer> _values = new ArrayList<>();
     for (ClockAndTimekeepingCommandTypeContainer _val :
         ClockAndTimekeepingCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandType.java
index 17f6db622d..f06d36a675 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandType.java
@@ -62,7 +62,7 @@ public enum EnableControlCommandType {
   }
 
   public static List<EnableControlCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<EnableControlCommandType> _values = new ArrayList();
+    List<EnableControlCommandType> _values = new ArrayList<>();
     for (EnableControlCommandType _val : EnableControlCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandTypeContainer.java
index 95f4790dc2..ef73421e87 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/EnableControlCommandTypeContainer.java
@@ -96,7 +96,7 @@ public enum EnableControlCommandTypeContainer {
   }
 
   public static List<EnableControlCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<EnableControlCommandTypeContainer> _values = new ArrayList();
+    List<EnableControlCommandTypeContainer> _values = new ArrayList<>();
     for (EnableControlCommandTypeContainer _val : EnableControlCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -121,7 +121,7 @@ public enum EnableControlCommandTypeContainer {
 
   public static List<EnableControlCommandTypeContainer> enumsForFieldCommandType(
       EnableControlCommandType fieldValue) {
-    List<EnableControlCommandTypeContainer> _values = new ArrayList();
+    List<EnableControlCommandTypeContainer> _values = new ArrayList<>();
     for (EnableControlCommandTypeContainer _val : EnableControlCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandType.java
index 6e915083d0..986cc8278b 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandType.java
@@ -65,7 +65,7 @@ public enum ErrorReportingCommandType {
   }
 
   public static List<ErrorReportingCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<ErrorReportingCommandType> _values = new ArrayList();
+    List<ErrorReportingCommandType> _values = new ArrayList<>();
     for (ErrorReportingCommandType _val : ErrorReportingCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandTypeContainer.java
index 90c64c9d83..b1a20dedaa 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ErrorReportingCommandTypeContainer.java
@@ -69,7 +69,7 @@ public enum ErrorReportingCommandTypeContainer {
   }
 
   public static List<ErrorReportingCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<ErrorReportingCommandTypeContainer> _values = new ArrayList();
+    List<ErrorReportingCommandTypeContainer> _values = new ArrayList<>();
     for (ErrorReportingCommandTypeContainer _val : ErrorReportingCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -94,7 +94,7 @@ public enum ErrorReportingCommandTypeContainer {
 
   public static List<ErrorReportingCommandTypeContainer> enumsForFieldCommandType(
       ErrorReportingCommandType fieldValue) {
-    List<ErrorReportingCommandTypeContainer> _values = new ArrayList();
+    List<ErrorReportingCommandTypeContainer> _values = new ArrayList<>();
     for (ErrorReportingCommandTypeContainer _val : ErrorReportingCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LevelInformationNibblePair.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LevelInformationNibblePair.java
index 208a33d871..7226eea447 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LevelInformationNibblePair.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LevelInformationNibblePair.java
@@ -77,7 +77,7 @@ public enum LevelInformationNibblePair {
   }
 
   public static List<LevelInformationNibblePair> enumsForFieldNibbleValue(byte fieldValue) {
-    List<LevelInformationNibblePair> _values = new ArrayList();
+    List<LevelInformationNibblePair> _values = new ArrayList<>();
     for (LevelInformationNibblePair _val : LevelInformationNibblePair.values()) {
       if (_val.getNibbleValue() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandType.java
index 827e4d10da..02e9f70e61 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandType.java
@@ -66,7 +66,7 @@ public enum LightingCommandType {
   }
 
   public static List<LightingCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<LightingCommandType> _values = new ArrayList();
+    List<LightingCommandType> _values = new ArrayList<>();
     for (LightingCommandType _val : LightingCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandTypeContainer.java
index 38b04a6984..42ff2419e3 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/LightingCommandTypeContainer.java
@@ -115,7 +115,7 @@ public enum LightingCommandTypeContainer {
   }
 
   public static List<LightingCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<LightingCommandTypeContainer> _values = new ArrayList();
+    List<LightingCommandTypeContainer> _values = new ArrayList<>();
     for (LightingCommandTypeContainer _val : LightingCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -140,7 +140,7 @@ public enum LightingCommandTypeContainer {
 
   public static List<LightingCommandTypeContainer> enumsForFieldCommandType(
       LightingCommandType fieldValue) {
-    List<LightingCommandTypeContainer> _values = new ArrayList();
+    List<LightingCommandTypeContainer> _values = new ArrayList<>();
     for (LightingCommandTypeContainer _val : LightingCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandType.java
index 76c728dd17..2e3830289a 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandType.java
@@ -62,7 +62,7 @@ public enum MeasurementCommandType {
   }
 
   public static List<MeasurementCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<MeasurementCommandType> _values = new ArrayList();
+    List<MeasurementCommandType> _values = new ArrayList<>();
     for (MeasurementCommandType _val : MeasurementCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandTypeContainer.java
index 76bd5470b3..d616c6fdd2 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeasurementCommandTypeContainer.java
@@ -65,7 +65,7 @@ public enum MeasurementCommandTypeContainer {
   }
 
   public static List<MeasurementCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<MeasurementCommandTypeContainer> _values = new ArrayList();
+    List<MeasurementCommandTypeContainer> _values = new ArrayList<>();
     for (MeasurementCommandTypeContainer _val : MeasurementCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -90,7 +90,7 @@ public enum MeasurementCommandTypeContainer {
 
   public static List<MeasurementCommandTypeContainer> enumsForFieldCommandType(
       MeasurementCommandType fieldValue) {
-    List<MeasurementCommandTypeContainer> _values = new ArrayList();
+    List<MeasurementCommandTypeContainer> _values = new ArrayList<>();
     for (MeasurementCommandTypeContainer _val : MeasurementCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandType.java
index 6b0c80b524..74ce13edd7 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandType.java
@@ -84,7 +84,7 @@ public enum MediaTransportControlCommandType {
 
   public static List<MediaTransportControlCommandType> enumsForFieldNumberOfArguments(
       short fieldValue) {
-    List<MediaTransportControlCommandType> _values = new ArrayList();
+    List<MediaTransportControlCommandType> _values = new ArrayList<>();
     for (MediaTransportControlCommandType _val : MediaTransportControlCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandTypeContainer.java
index e80e761052..547cbb0df4 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MediaTransportControlCommandTypeContainer.java
@@ -296,7 +296,7 @@ public enum MediaTransportControlCommandTypeContainer {
 
   public static List<MediaTransportControlCommandTypeContainer> enumsForFieldNumBytes(
       short fieldValue) {
-    List<MediaTransportControlCommandTypeContainer> _values = new ArrayList();
+    List<MediaTransportControlCommandTypeContainer> _values = new ArrayList<>();
     for (MediaTransportControlCommandTypeContainer _val :
         MediaTransportControlCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
@@ -323,7 +323,7 @@ public enum MediaTransportControlCommandTypeContainer {
 
   public static List<MediaTransportControlCommandTypeContainer> enumsForFieldCommandType(
       MediaTransportControlCommandType fieldValue) {
-    List<MediaTransportControlCommandTypeContainer> _values = new ArrayList();
+    List<MediaTransportControlCommandTypeContainer> _values = new ArrayList<>();
     for (MediaTransportControlCommandTypeContainer _val :
         MediaTransportControlCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandType.java
index 3406c89ade..5352cf2408 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandType.java
@@ -62,7 +62,7 @@ public enum MeteringCommandType {
   }
 
   public static List<MeteringCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<MeteringCommandType> _values = new ArrayList();
+    List<MeteringCommandType> _values = new ArrayList<>();
     for (MeteringCommandType _val : MeteringCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandTypeContainer.java
index e1fd168d43..0d91997d4b 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/MeteringCommandTypeContainer.java
@@ -71,7 +71,7 @@ public enum MeteringCommandTypeContainer {
   }
 
   public static List<MeteringCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<MeteringCommandTypeContainer> _values = new ArrayList();
+    List<MeteringCommandTypeContainer> _values = new ArrayList<>();
     for (MeteringCommandTypeContainer _val : MeteringCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -96,7 +96,7 @@ public enum MeteringCommandTypeContainer {
 
   public static List<MeteringCommandTypeContainer> enumsForFieldCommandType(
       MeteringCommandType fieldValue) {
-    List<MeteringCommandTypeContainer> _values = new ArrayList();
+    List<MeteringCommandTypeContainer> _values = new ArrayList<>();
     for (MeteringCommandTypeContainer _val : MeteringCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Parameter.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Parameter.java
index 82edd29672..91a30211a1 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Parameter.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/Parameter.java
@@ -2126,7 +2126,7 @@ public enum Parameter {
   }
 
   public static List<Parameter> enumsForFieldParameterType(ParameterType fieldValue) {
-    List<Parameter> _values = new ArrayList();
+    List<Parameter> _values = new ArrayList<>();
     for (Parameter _val : Parameter.values()) {
       if (_val.getParameterType() == fieldValue) {
         _values.add(_val);
@@ -2149,7 +2149,7 @@ public enum Parameter {
   }
 
   public static List<Parameter> enumsForFieldForm(String fieldValue) {
-    List<Parameter> _values = new ArrayList();
+    List<Parameter> _values = new ArrayList<>();
     for (Parameter _val : Parameter.values()) {
       if (_val.getForm().equals(fieldValue)) {
         _values.add(_val);
@@ -2172,7 +2172,7 @@ public enum Parameter {
   }
 
   public static List<Parameter> enumsForFieldIsVolatile(boolean fieldValue) {
-    List<Parameter> _values = new ArrayList();
+    List<Parameter> _values = new ArrayList<>();
     for (Parameter _val : Parameter.values()) {
       if (_val.getIsVolatile() == fieldValue) {
         _values.add(_val);
@@ -2195,7 +2195,7 @@ public enum Parameter {
   }
 
   public static List<Parameter> enumsForFieldParameterDescription(String fieldValue) {
-    List<Parameter> _values = new ArrayList();
+    List<Parameter> _values = new ArrayList<>();
     for (Parameter _val : Parameter.values()) {
       if (_val.getParameterDescription().equals(fieldValue)) {
         _values.add(_val);
@@ -2218,7 +2218,7 @@ public enum Parameter {
   }
 
   public static List<Parameter> enumsForFieldProtectionLevel(ProtectionLevel fieldValue) {
-    List<Parameter> _values = new ArrayList();
+    List<Parameter> _values = new ArrayList<>();
     for (Parameter _val : Parameter.values()) {
       if (_val.getProtectionLevel() == fieldValue) {
         _values.add(_val);
@@ -2241,7 +2241,7 @@ public enum Parameter {
   }
 
   public static List<Parameter> enumsForFieldGroup(String fieldValue) {
-    List<Parameter> _values = new ArrayList();
+    List<Parameter> _values = new ArrayList<>();
     for (Parameter _val : Parameter.values()) {
       if (_val.getGroup().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ProtectionLevel.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ProtectionLevel.java
index 301800abd5..da9b3633b4 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ProtectionLevel.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/ProtectionLevel.java
@@ -65,7 +65,7 @@ public enum ProtectionLevel {
   }
 
   public static List<ProtectionLevel> enumsForFieldDescription(String fieldValue) {
-    List<ProtectionLevel> _values = new ArrayList();
+    List<ProtectionLevel> _values = new ArrayList<>();
     for (ProtectionLevel _val : ProtectionLevel.values()) {
       if (_val.getDescription().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/RequestType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/RequestType.java
index 18773e6d19..969c44acd8 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/RequestType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/RequestType.java
@@ -68,7 +68,7 @@ public enum RequestType {
   }
 
   public static List<RequestType> enumsForFieldControlChar(short fieldValue) {
-    List<RequestType> _values = new ArrayList();
+    List<RequestType> _values = new ArrayList<>();
     for (RequestType _val : RequestType.values()) {
       if (_val.getControlChar() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandType.java
index e4ec0583fd..cdcfac88bd 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandType.java
@@ -64,7 +64,7 @@ public enum SecurityCommandType {
   }
 
   public static List<SecurityCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<SecurityCommandType> _values = new ArrayList();
+    List<SecurityCommandType> _values = new ArrayList<>();
     for (SecurityCommandType _val : SecurityCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandTypeContainer.java
index 036cf6cfc0..3017bea5ec 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/SecurityCommandTypeContainer.java
@@ -183,7 +183,7 @@ public enum SecurityCommandTypeContainer {
   }
 
   public static List<SecurityCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<SecurityCommandTypeContainer> _values = new ArrayList();
+    List<SecurityCommandTypeContainer> _values = new ArrayList<>();
     for (SecurityCommandTypeContainer _val : SecurityCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -208,7 +208,7 @@ public enum SecurityCommandTypeContainer {
 
   public static List<SecurityCommandTypeContainer> enumsForFieldCommandType(
       SecurityCommandType fieldValue) {
-    List<SecurityCommandTypeContainer> _values = new ArrayList();
+    List<SecurityCommandTypeContainer> _values = new ArrayList<>();
     for (SecurityCommandTypeContainer _val : SecurityCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandType.java
index c9d8569b1d..4e0b63bebf 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandType.java
@@ -62,7 +62,7 @@ public enum TelephonyCommandType {
   }
 
   public static List<TelephonyCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<TelephonyCommandType> _values = new ArrayList();
+    List<TelephonyCommandType> _values = new ArrayList<>();
     for (TelephonyCommandType _val : TelephonyCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandTypeContainer.java
index 69332f9961..4696b947fb 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TelephonyCommandTypeContainer.java
@@ -96,7 +96,7 @@ public enum TelephonyCommandTypeContainer {
   }
 
   public static List<TelephonyCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<TelephonyCommandTypeContainer> _values = new ArrayList();
+    List<TelephonyCommandTypeContainer> _values = new ArrayList<>();
     for (TelephonyCommandTypeContainer _val : TelephonyCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -121,7 +121,7 @@ public enum TelephonyCommandTypeContainer {
 
   public static List<TelephonyCommandTypeContainer> enumsForFieldCommandType(
       TelephonyCommandType fieldValue) {
-    List<TelephonyCommandTypeContainer> _values = new ArrayList();
+    List<TelephonyCommandTypeContainer> _values = new ArrayList<>();
     for (TelephonyCommandTypeContainer _val : TelephonyCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandType.java
index 768daec7d4..0dfdf7568d 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandType.java
@@ -64,7 +64,7 @@ public enum TemperatureBroadcastCommandType {
 
   public static List<TemperatureBroadcastCommandType> enumsForFieldNumberOfArguments(
       short fieldValue) {
-    List<TemperatureBroadcastCommandType> _values = new ArrayList();
+    List<TemperatureBroadcastCommandType> _values = new ArrayList<>();
     for (TemperatureBroadcastCommandType _val : TemperatureBroadcastCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandTypeContainer.java
index 821900f4ed..13e5fb2ed7 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TemperatureBroadcastCommandTypeContainer.java
@@ -100,7 +100,7 @@ public enum TemperatureBroadcastCommandTypeContainer {
 
   public static List<TemperatureBroadcastCommandTypeContainer> enumsForFieldNumBytes(
       short fieldValue) {
-    List<TemperatureBroadcastCommandTypeContainer> _values = new ArrayList();
+    List<TemperatureBroadcastCommandTypeContainer> _values = new ArrayList<>();
     for (TemperatureBroadcastCommandTypeContainer _val :
         TemperatureBroadcastCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
@@ -127,7 +127,7 @@ public enum TemperatureBroadcastCommandTypeContainer {
 
   public static List<TemperatureBroadcastCommandTypeContainer> enumsForFieldCommandType(
       TemperatureBroadcastCommandType fieldValue) {
-    List<TemperatureBroadcastCommandTypeContainer> _values = new ArrayList();
+    List<TemperatureBroadcastCommandTypeContainer> _values = new ArrayList<>();
     for (TemperatureBroadcastCommandTypeContainer _val :
         TemperatureBroadcastCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandType.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandType.java
index 15bebd8dcc..902984b4bc 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandType.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandType.java
@@ -66,7 +66,7 @@ public enum TriggerControlCommandType {
   }
 
   public static List<TriggerControlCommandType> enumsForFieldNumberOfArguments(short fieldValue) {
-    List<TriggerControlCommandType> _values = new ArrayList();
+    List<TriggerControlCommandType> _values = new ArrayList<>();
     for (TriggerControlCommandType _val : TriggerControlCommandType.values()) {
       if (_val.getNumberOfArguments() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandTypeContainer.java b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandTypeContainer.java
index d50a48cbc8..b178212aec 100644
--- a/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandTypeContainer.java
+++ b/plc4j/drivers/c-bus/src/main/generated/org/apache/plc4x/java/cbus/readwrite/TriggerControlCommandTypeContainer.java
@@ -134,7 +134,7 @@ public enum TriggerControlCommandTypeContainer {
   }
 
   public static List<TriggerControlCommandTypeContainer> enumsForFieldNumBytes(short fieldValue) {
-    List<TriggerControlCommandTypeContainer> _values = new ArrayList();
+    List<TriggerControlCommandTypeContainer> _values = new ArrayList<>();
     for (TriggerControlCommandTypeContainer _val : TriggerControlCommandTypeContainer.values()) {
       if (_val.getNumBytes() == fieldValue) {
         _values.add(_val);
@@ -159,7 +159,7 @@ public enum TriggerControlCommandTypeContainer {
 
   public static List<TriggerControlCommandTypeContainer> enumsForFieldCommandType(
       TriggerControlCommandType fieldValue) {
-    List<TriggerControlCommandTypeContainer> _values = new ArrayList();
+    List<TriggerControlCommandTypeContainer> _values = new ArrayList<>();
     for (TriggerControlCommandTypeContainer _val : TriggerControlCommandTypeContainer.values()) {
       if (_val.getCommandType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/can/src/main/generated/org/apache/plc4x/java/genericcan/readwrite/GenericCANDataType.java b/plc4j/drivers/can/src/main/generated/org/apache/plc4x/java/genericcan/readwrite/GenericCANDataType.java
index f29a75bb29..0c1680fb96 100644
--- a/plc4j/drivers/can/src/main/generated/org/apache/plc4x/java/genericcan/readwrite/GenericCANDataType.java
+++ b/plc4j/drivers/can/src/main/generated/org/apache/plc4x/java/genericcan/readwrite/GenericCANDataType.java
@@ -83,7 +83,7 @@ public enum GenericCANDataType {
   }
 
   public static List<GenericCANDataType> enumsForFieldPlcValueName(String fieldValue) {
-    List<GenericCANDataType> _values = new ArrayList();
+    List<GenericCANDataType> _values = new ArrayList<>();
     for (GenericCANDataType _val : GenericCANDataType.values()) {
       if (_val.getPlcValueName().equals(fieldValue)) {
         _values.add(_val);
@@ -106,7 +106,7 @@ public enum GenericCANDataType {
   }
 
   public static List<GenericCANDataType> enumsForFieldNumBits(short fieldValue) {
-    List<GenericCANDataType> _values = new ArrayList();
+    List<GenericCANDataType> _values = new ArrayList<>();
     for (GenericCANDataType _val : GenericCANDataType.values()) {
       if (_val.getNumBits() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/can/src/test/java/org/apache/plc4x/java/can/generic/GenericCANDriverTest.java b/plc4j/drivers/can/src/test/java/org/apache/plc4x/java/can/generic/GenericCANDriverTest.java
index cbd1e09d30..d229a9af6d 100644
--- a/plc4j/drivers/can/src/test/java/org/apache/plc4x/java/can/generic/GenericCANDriverTest.java
+++ b/plc4j/drivers/can/src/test/java/org/apache/plc4x/java/can/generic/GenericCANDriverTest.java
@@ -68,12 +68,9 @@ public class GenericCANDriverTest {
                     return;
                 }
 
-                reply.getSubscriptionHandle("tag1").register(new Consumer<PlcSubscriptionEvent>() {
-                    @Override
-                    public void accept(PlcSubscriptionEvent event) {
-                        plcEvent.set(event);
-                        latch.countDown();
-                    }
+                reply.getSubscriptionHandle("tag1").register(event -> {
+                    plcEvent.set(event);
+                    latch.countDown();
                 });
             });
 
diff --git a/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenDataType.java b/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenDataType.java
index c319a60c7e..8071a95270 100644
--- a/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenDataType.java
+++ b/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenDataType.java
@@ -88,7 +88,7 @@ public enum CANOpenDataType {
   }
 
   public static List<CANOpenDataType> enumsForFieldPlcValueName(String fieldValue) {
-    List<CANOpenDataType> _values = new ArrayList();
+    List<CANOpenDataType> _values = new ArrayList<>();
     for (CANOpenDataType _val : CANOpenDataType.values()) {
       if (_val.getPlcValueName().equals(fieldValue)) {
         _values.add(_val);
@@ -111,7 +111,7 @@ public enum CANOpenDataType {
   }
 
   public static List<CANOpenDataType> enumsForFieldNumBits(short fieldValue) {
-    List<CANOpenDataType> _values = new ArrayList();
+    List<CANOpenDataType> _values = new ArrayList<>();
     for (CANOpenDataType _val : CANOpenDataType.values()) {
       if (_val.getNumBits() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenService.java b/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenService.java
index 74a5a52dfa..21d0cbb047 100644
--- a/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenService.java
+++ b/plc4j/drivers/canopen/src/main/generated/org/apache/plc4x/java/canopen/readwrite/CANOpenService.java
@@ -80,7 +80,7 @@ public enum CANOpenService {
   }
 
   public static List<CANOpenService> enumsForFieldMin(short fieldValue) {
-    List<CANOpenService> _values = new ArrayList();
+    List<CANOpenService> _values = new ArrayList<>();
     for (CANOpenService _val : CANOpenService.values()) {
       if (_val.getMin() == fieldValue) {
         _values.add(_val);
@@ -103,7 +103,7 @@ public enum CANOpenService {
   }
 
   public static List<CANOpenService> enumsForFieldMax(short fieldValue) {
-    List<CANOpenService> _values = new ArrayList();
+    List<CANOpenService> _values = new ArrayList<>();
     for (CANOpenService _val : CANOpenService.values()) {
       if (_val.getMax() == fieldValue) {
         _values.add(_val);
@@ -126,7 +126,7 @@ public enum CANOpenService {
   }
 
   public static List<CANOpenService> enumsForFieldPdo(boolean fieldValue) {
-    List<CANOpenService> _values = new ArrayList();
+    List<CANOpenService> _values = new ArrayList<>();
     for (CANOpenService _val : CANOpenService.values()) {
       if (_val.getPdo() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/canopen/src/test/java/org/apache/plc4x/java/canopen/Main.java b/plc4j/drivers/canopen/src/test/java/org/apache/plc4x/java/canopen/Main.java
index 6b29b396cc..7716df2a59 100644
--- a/plc4j/drivers/canopen/src/test/java/org/apache/plc4x/java/canopen/Main.java
+++ b/plc4j/drivers/canopen/src/test/java/org/apache/plc4x/java/canopen/Main.java
@@ -37,11 +37,8 @@ public class Main {
     public static void main(String[] args) throws Exception {
         DefaultPlcDriverManager driverManager = new DefaultPlcDriverManager();
 
-        CANOpenDriverContext.CALLBACK.addCallback(new Callback() {
-            @Override
-            public void receive(CANOpenFrame frame) {
-                //System.err.println("Received frame " + frame);
-            }
+        CANOpenDriverContext.CALLBACK.addCallback(frame -> {
+            //System.err.println("Received frame " + frame);
         });
 
         PlcConnection connection = driverManager.getConnection("canopen:javacan://vcan0?nodeId=11");
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java
index 129560e52e..a59575cca9 100644
--- a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPDataTypeCode.java
@@ -92,7 +92,7 @@ public enum CIPDataTypeCode {
   }
 
   public static List<CIPDataTypeCode> enumsForFieldSize(short fieldValue) {
-    List<CIPDataTypeCode> _values = new ArrayList();
+    List<CIPDataTypeCode> _values = new ArrayList<>();
     for (CIPDataTypeCode _val : CIPDataTypeCode.values()) {
       if (_val.getSize() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/AccessLevel.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/AccessLevel.java
index 2b2b6bfb2d..2283bf242e 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/AccessLevel.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/AccessLevel.java
@@ -68,7 +68,7 @@ public enum AccessLevel {
   }
 
   public static List<AccessLevel> enumsForFieldPurpose(String fieldValue) {
-    List<AccessLevel> _values = new ArrayList();
+    List<AccessLevel> _values = new ArrayList<>();
     for (AccessLevel _val : AccessLevel.values()) {
       if (_val.getPurpose().equals(fieldValue)) {
         _values.add(_val);
@@ -91,7 +91,7 @@ public enum AccessLevel {
   }
 
   public static List<AccessLevel> enumsForFieldNeedsAuthentication(boolean fieldValue) {
-    List<AccessLevel> _values = new ArrayList();
+    List<AccessLevel> _values = new ArrayList<>();
     for (AccessLevel _val : AccessLevel.values()) {
       if (_val.getNeedsAuthentication() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectTableAddresses.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectTableAddresses.java
index 80002b7d79..d69608a1b5 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectTableAddresses.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectTableAddresses.java
@@ -1937,7 +1937,7 @@ public enum ComObjectTableAddresses {
   }
 
   public static List<ComObjectTableAddresses> enumsForFieldComObjectTableAddress(int fieldValue) {
-    List<ComObjectTableAddresses> _values = new ArrayList();
+    List<ComObjectTableAddresses> _values = new ArrayList<>();
     for (ComObjectTableAddresses _val : ComObjectTableAddresses.values()) {
       if (_val.getComObjectTableAddress() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectValueType.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectValueType.java
index d568907b7d..930aa8699c 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectValueType.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/ComObjectValueType.java
@@ -76,7 +76,7 @@ public enum ComObjectValueType {
   }
 
   public static List<ComObjectValueType> enumsForFieldSizeInBytes(short fieldValue) {
-    List<ComObjectValueType> _values = new ArrayList();
+    List<ComObjectValueType> _values = new ArrayList<>();
     for (ComObjectValueType _val : ComObjectValueType.values()) {
       if (_val.getSizeInBytes() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/DeviceDescriptor.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/DeviceDescriptor.java
index 0419237a43..e55c2464ff 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/DeviceDescriptor.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/DeviceDescriptor.java
@@ -95,7 +95,7 @@ public enum DeviceDescriptor {
   }
 
   public static List<DeviceDescriptor> enumsForFieldFirmwareType(FirmwareType fieldValue) {
-    List<DeviceDescriptor> _values = new ArrayList();
+    List<DeviceDescriptor> _values = new ArrayList<>();
     for (DeviceDescriptor _val : DeviceDescriptor.values()) {
       if (_val.getFirmwareType() == fieldValue) {
         _values.add(_val);
@@ -120,7 +120,7 @@ public enum DeviceDescriptor {
 
   public static List<DeviceDescriptor> enumsForFieldMediumType(
       DeviceDescriptorMediumType fieldValue) {
-    List<DeviceDescriptor> _values = new ArrayList();
+    List<DeviceDescriptor> _values = new ArrayList<>();
     for (DeviceDescriptor _val : DeviceDescriptor.values()) {
       if (_val.getMediumType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointMainType.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointMainType.java
index f1ba96a526..e8b9153888 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointMainType.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointMainType.java
@@ -134,7 +134,7 @@ public enum KnxDatapointMainType {
   }
 
   public static List<KnxDatapointMainType> enumsForFieldNumber(int fieldValue) {
-    List<KnxDatapointMainType> _values = new ArrayList();
+    List<KnxDatapointMainType> _values = new ArrayList<>();
     for (KnxDatapointMainType _val : KnxDatapointMainType.values()) {
       if (_val.getNumber() == fieldValue) {
         _values.add(_val);
@@ -157,7 +157,7 @@ public enum KnxDatapointMainType {
   }
 
   public static List<KnxDatapointMainType> enumsForFieldName(String fieldValue) {
-    List<KnxDatapointMainType> _values = new ArrayList();
+    List<KnxDatapointMainType> _values = new ArrayList<>();
     for (KnxDatapointMainType _val : KnxDatapointMainType.values()) {
       if (_val.getName().equals(fieldValue)) {
         _values.add(_val);
@@ -180,7 +180,7 @@ public enum KnxDatapointMainType {
   }
 
   public static List<KnxDatapointMainType> enumsForFieldSizeInBits(short fieldValue) {
-    List<KnxDatapointMainType> _values = new ArrayList();
+    List<KnxDatapointMainType> _values = new ArrayList<>();
     for (KnxDatapointMainType _val : KnxDatapointMainType.values()) {
       if (_val.getSizeInBits() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java
index da2fbfffe8..e75dd463e0 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java
@@ -1199,7 +1199,7 @@ public enum KnxDatapointType {
   }
 
   public static List<KnxDatapointType> enumsForFieldNumber(int fieldValue) {
-    List<KnxDatapointType> _values = new ArrayList();
+    List<KnxDatapointType> _values = new ArrayList<>();
     for (KnxDatapointType _val : KnxDatapointType.values()) {
       if (_val.getNumber() == fieldValue) {
         _values.add(_val);
@@ -1222,7 +1222,7 @@ public enum KnxDatapointType {
   }
 
   public static List<KnxDatapointType> enumsForFieldName(String fieldValue) {
-    List<KnxDatapointType> _values = new ArrayList();
+    List<KnxDatapointType> _values = new ArrayList<>();
     for (KnxDatapointType _val : KnxDatapointType.values()) {
       if (_val.getName().equals(fieldValue)) {
         _values.add(_val);
@@ -1247,7 +1247,7 @@ public enum KnxDatapointType {
 
   public static List<KnxDatapointType> enumsForFieldDatapointMainType(
       KnxDatapointMainType fieldValue) {
-    List<KnxDatapointType> _values = new ArrayList();
+    List<KnxDatapointType> _values = new ArrayList<>();
     for (KnxDatapointType _val : KnxDatapointType.values()) {
       if (_val.getDatapointMainType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectProperty.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectProperty.java
index ccad416840..757d31f8fa 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectProperty.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectProperty.java
@@ -1370,7 +1370,7 @@ public enum KnxInterfaceObjectProperty {
 
   public static List<KnxInterfaceObjectProperty> enumsForFieldPropertyDataType(
       KnxPropertyDataType fieldValue) {
-    List<KnxInterfaceObjectProperty> _values = new ArrayList();
+    List<KnxInterfaceObjectProperty> _values = new ArrayList<>();
     for (KnxInterfaceObjectProperty _val : KnxInterfaceObjectProperty.values()) {
       if (_val.getPropertyDataType() == fieldValue) {
         _values.add(_val);
@@ -1393,7 +1393,7 @@ public enum KnxInterfaceObjectProperty {
   }
 
   public static List<KnxInterfaceObjectProperty> enumsForFieldName(String fieldValue) {
-    List<KnxInterfaceObjectProperty> _values = new ArrayList();
+    List<KnxInterfaceObjectProperty> _values = new ArrayList<>();
     for (KnxInterfaceObjectProperty _val : KnxInterfaceObjectProperty.values()) {
       if (_val.getName().equals(fieldValue)) {
         _values.add(_val);
@@ -1416,7 +1416,7 @@ public enum KnxInterfaceObjectProperty {
   }
 
   public static List<KnxInterfaceObjectProperty> enumsForFieldPropertyId(short fieldValue) {
-    List<KnxInterfaceObjectProperty> _values = new ArrayList();
+    List<KnxInterfaceObjectProperty> _values = new ArrayList<>();
     for (KnxInterfaceObjectProperty _val : KnxInterfaceObjectProperty.values()) {
       if (_val.getPropertyId() == fieldValue) {
         _values.add(_val);
@@ -1441,7 +1441,7 @@ public enum KnxInterfaceObjectProperty {
 
   public static List<KnxInterfaceObjectProperty> enumsForFieldObjectType(
       KnxInterfaceObjectType fieldValue) {
-    List<KnxInterfaceObjectProperty> _values = new ArrayList();
+    List<KnxInterfaceObjectProperty> _values = new ArrayList<>();
     for (KnxInterfaceObjectProperty _val : KnxInterfaceObjectProperty.values()) {
       if (_val.getObjectType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectType.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectType.java
index 3d806cd10e..44be57ab98 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectType.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxInterfaceObjectType.java
@@ -90,7 +90,7 @@ public enum KnxInterfaceObjectType {
   }
 
   public static List<KnxInterfaceObjectType> enumsForFieldCode(String fieldValue) {
-    List<KnxInterfaceObjectType> _values = new ArrayList();
+    List<KnxInterfaceObjectType> _values = new ArrayList<>();
     for (KnxInterfaceObjectType _val : KnxInterfaceObjectType.values()) {
       if (_val.getCode().equals(fieldValue)) {
         _values.add(_val);
@@ -113,7 +113,7 @@ public enum KnxInterfaceObjectType {
   }
 
   public static List<KnxInterfaceObjectType> enumsForFieldName(String fieldValue) {
-    List<KnxInterfaceObjectType> _values = new ArrayList();
+    List<KnxInterfaceObjectType> _values = new ArrayList<>();
     for (KnxInterfaceObjectType _val : KnxInterfaceObjectType.values()) {
       if (_val.getName().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
index 4ff0b3b413..ffed40a8bc 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxManufacturer.java
@@ -757,7 +757,7 @@ public enum KnxManufacturer {
   }
 
   public static List<KnxManufacturer> enumsForFieldNumber(int fieldValue) {
-    List<KnxManufacturer> _values = new ArrayList();
+    List<KnxManufacturer> _values = new ArrayList<>();
     for (KnxManufacturer _val : KnxManufacturer.values()) {
       if (_val.getNumber() == fieldValue) {
         _values.add(_val);
@@ -780,7 +780,7 @@ public enum KnxManufacturer {
   }
 
   public static List<KnxManufacturer> enumsForFieldName(String fieldValue) {
-    List<KnxManufacturer> _values = new ArrayList();
+    List<KnxManufacturer> _values = new ArrayList<>();
     for (KnxManufacturer _val : KnxManufacturer.values()) {
       if (_val.getName().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxPropertyDataType.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxPropertyDataType.java
index 2b9d4a76d0..ce4da7157e 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxPropertyDataType.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxPropertyDataType.java
@@ -115,7 +115,7 @@ public enum KnxPropertyDataType {
   }
 
   public static List<KnxPropertyDataType> enumsForFieldNumber(short fieldValue) {
-    List<KnxPropertyDataType> _values = new ArrayList();
+    List<KnxPropertyDataType> _values = new ArrayList<>();
     for (KnxPropertyDataType _val : KnxPropertyDataType.values()) {
       if (_val.getNumber() == fieldValue) {
         _values.add(_val);
@@ -138,7 +138,7 @@ public enum KnxPropertyDataType {
   }
 
   public static List<KnxPropertyDataType> enumsForFieldSizeInBytes(short fieldValue) {
-    List<KnxPropertyDataType> _values = new ArrayList();
+    List<KnxPropertyDataType> _values = new ArrayList<>();
     for (KnxPropertyDataType _val : KnxPropertyDataType.values()) {
       if (_val.getSizeInBytes() == fieldValue) {
         _values.add(_val);
@@ -161,7 +161,7 @@ public enum KnxPropertyDataType {
   }
 
   public static List<KnxPropertyDataType> enumsForFieldName(String fieldValue) {
-    List<KnxPropertyDataType> _values = new ArrayList();
+    List<KnxPropertyDataType> _values = new ArrayList<>();
     for (KnxPropertyDataType _val : KnxPropertyDataType.values()) {
       if (_val.getName().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/SupportedPhysicalMedia.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/SupportedPhysicalMedia.java
index 2c0c432c39..96ec084ad4 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/SupportedPhysicalMedia.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/SupportedPhysicalMedia.java
@@ -90,7 +90,7 @@ public enum SupportedPhysicalMedia {
   }
 
   public static List<SupportedPhysicalMedia> enumsForFieldKnxSupport(boolean fieldValue) {
-    List<SupportedPhysicalMedia> _values = new ArrayList();
+    List<SupportedPhysicalMedia> _values = new ArrayList<>();
     for (SupportedPhysicalMedia _val : SupportedPhysicalMedia.values()) {
       if (_val.getKnxSupport() == fieldValue) {
         _values.add(_val);
@@ -113,7 +113,7 @@ public enum SupportedPhysicalMedia {
   }
 
   public static List<SupportedPhysicalMedia> enumsForFieldDescription(String fieldValue) {
-    List<SupportedPhysicalMedia> _values = new ArrayList();
+    List<SupportedPhysicalMedia> _values = new ArrayList<>();
     for (SupportedPhysicalMedia _val : SupportedPhysicalMedia.values()) {
       if (_val.getDescription().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/knxnetip/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java b/plc4j/drivers/knxnetip/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java
index 2d6dc800e8..7e3a1b32ea 100644
--- a/plc4j/drivers/knxnetip/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java
+++ b/plc4j/drivers/knxnetip/src/test/java/org/apache/plc4x/java/knxnetip/ManualKnxNetIp.java
@@ -64,10 +64,8 @@ public class ManualKnxNetIp {
 
         // Register a callback which is called on new data being available.
         final PlcSubscriptionHandle subscriptionHandle = subscriptionResponse.getSubscriptionHandle("knxData");
-        subscriptionHandle.register(knxData -> {
-            System.out.println(knxData.getTimestamp().toString() + " - " +
-                ((DefaultPlcSubscriptionEvent) knxData).getValues().get("knxData"));
-        });
+        subscriptionHandle.register(knxData -> System.out.println(knxData.getTimestamp().toString() + " - " +
+            ((DefaultPlcSubscriptionEvent) knxData).getValues().get("knxData")));
     }
 
 }
diff --git a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java
index 7711c7ad00..066744af5c 100644
--- a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java
+++ b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java
@@ -46,7 +46,7 @@ public class Assert {
     }
 
     public static Matcher<byte[]> byteArrayEqualsTo(byte[] expected) {
-        return new IsEqual<byte[]>(expected) {
+        return new IsEqual<>(expected) {
             @Override
             public void describeTo(Description description) {
                 try {
diff --git a/plc4j/drivers/modbus/src/main/generated/org/apache/plc4x/java/modbus/readwrite/ModbusDataType.java b/plc4j/drivers/modbus/src/main/generated/org/apache/plc4x/java/modbus/readwrite/ModbusDataType.java
index fe3eb32fb0..ffd2f0ac34 100644
--- a/plc4j/drivers/modbus/src/main/generated/org/apache/plc4x/java/modbus/readwrite/ModbusDataType.java
+++ b/plc4j/drivers/modbus/src/main/generated/org/apache/plc4x/java/modbus/readwrite/ModbusDataType.java
@@ -88,7 +88,7 @@ public enum ModbusDataType {
   }
 
   public static List<ModbusDataType> enumsForFieldDataTypeSize(short fieldValue) {
-    List<ModbusDataType> _values = new ArrayList();
+    List<ModbusDataType> _values = new ArrayList<>();
     for (ModbusDataType _val : ModbusDataType.values()) {
       if (_val.getDataTypeSize() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java
index e1a48ac5e1..496bad0905 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java
@@ -63,12 +63,7 @@ public class ModbusTcpDriver extends GeneratedDriverBase<ModbusTcpADU> {
 
     @Override
     public PlcDriverMetadata getMetadata() {
-        return new PlcDriverMetadata() {
-            @Override
-            public boolean canDiscover() {
-                return true;
-            }
-        };
+        return () -> true;
     }
 
     @Override
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/discovery/ModbusPlcDiscoverer.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/discovery/ModbusPlcDiscoverer.java
index fc44d4ef95..2527acdb4d 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/discovery/ModbusPlcDiscoverer.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/discovery/ModbusPlcDiscoverer.java
@@ -69,9 +69,7 @@ public class ModbusPlcDiscoverer implements PlcDiscoverer {
         // Get a list of all reachable IP addresses from the current system.
         // TODO: add an option to fine tune the network device or ip subnet to scan and maybe some timeouts and delays to prevent flooding.
         final CompletableFuture<PlcDiscoveryResponse> future = new CompletableFuture<>();
-        Thread discoveryThread = new Thread(() -> {
-            executeDiscovery(future, discoveryRequest, handler);
-        });
+        Thread discoveryThread = new Thread(() -> executeDiscovery(future, discoveryRequest, handler));
         discoveryThread.start();
         return future;
     }
diff --git a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusTagDataTypeTest.java b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusTagDataTypeTest.java
index 1cacc8b281..09dc253b99 100644
--- a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusTagDataTypeTest.java
+++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusTagDataTypeTest.java
@@ -30,12 +30,12 @@ public class ModbusTagDataTypeTest {
         String[][] datatypes = {{"INT","1"},
                                 {"UINT","1"},
                                 {"REAL","2"}};
-        for(int i = 0; i< datatypes.length; i++){
-            ModbusTagHoldingRegister holdingregister = ModbusTagHoldingRegister.of("holding-register:1:" + datatypes[i][0]);
-            Assertions.assertEquals(datatypes[i][0], holdingregister.getDataType().name());
+        for (String[] datatype : datatypes) {
+            ModbusTagHoldingRegister holdingregister = ModbusTagHoldingRegister.of("holding-register:1:" + datatype[0]);
+            Assertions.assertEquals(datatype[0], holdingregister.getDataType().name());
             Assertions.assertEquals(1, holdingregister.getNumberOfElements());
-            Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, holdingregister.getLengthBytes());
-            Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), holdingregister.getLengthWords());
+            Assertions.assertEquals(Integer.parseInt(datatype[1]) * 2, holdingregister.getLengthBytes());
+            Assertions.assertEquals(Integer.parseInt(datatype[1]), holdingregister.getLengthWords());
         }
     }
 
@@ -45,12 +45,12 @@ public class ModbusTagDataTypeTest {
         String[][] datatypes = {{"INT","1"},
                                 {"UINT","1"},
                                 {"REAL","2"}};
-        for(int i = 0; i< datatypes.length; i++){
-            ModbusTagInputRegister inputregister = ModbusTagInputRegister.of("input-register:1:" + datatypes[i][0]);
-            Assertions.assertEquals(datatypes[i][0], inputregister.getDataType().name());
+        for (String[] datatype : datatypes) {
+            ModbusTagInputRegister inputregister = ModbusTagInputRegister.of("input-register:1:" + datatype[0]);
+            Assertions.assertEquals(datatype[0], inputregister.getDataType().name());
             Assertions.assertEquals(1, inputregister.getNumberOfElements());
-            Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, inputregister.getLengthBytes());
-            Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), inputregister.getLengthWords());
+            Assertions.assertEquals(Integer.parseInt(datatype[1]) * 2, inputregister.getLengthBytes());
+            Assertions.assertEquals(Integer.parseInt(datatype[1]), inputregister.getLengthWords());
         }
     }
 
@@ -61,12 +61,12 @@ public class ModbusTagDataTypeTest {
                                 {"UINT","1"},
                                 {"DINT","2"},
                                 {"REAL","2"}};
-        for(int i = 0; i< datatypes.length; i++){
-            ModbusTagExtendedRegister extendedregister = ModbusTagExtendedRegister.of("extended-register:1:" + datatypes[i][0]);
-            Assertions.assertEquals(datatypes[i][0], extendedregister.getDataType().name());
+        for (String[] datatype : datatypes) {
+            ModbusTagExtendedRegister extendedregister = ModbusTagExtendedRegister.of("extended-register:1:" + datatype[0]);
+            Assertions.assertEquals(datatype[0], extendedregister.getDataType().name());
             Assertions.assertEquals(1, extendedregister.getNumberOfElements());
-            Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, extendedregister.getLengthBytes());
-            Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), extendedregister.getLengthWords());
+            Assertions.assertEquals(Integer.parseInt(datatype[1]) * 2, extendedregister.getLengthBytes());
+            Assertions.assertEquals(Integer.parseInt(datatype[1]), extendedregister.getLengthWords());
         }
     }
 
@@ -74,9 +74,9 @@ public class ModbusTagDataTypeTest {
     public void testCoil_DataType() {
         //Datatype, Length in Bytes
         String[][] datatypes = {{"BOOL","1"}};
-        for(int i = 0; i< datatypes.length; i++){
-            ModbusTagCoil coil = ModbusTagCoil.of("coil:1:" + datatypes[i][0]);
-            Assertions.assertEquals(datatypes[i][0], coil.getDataType().name());
+        for (String[] datatype : datatypes) {
+            ModbusTagCoil coil = ModbusTagCoil.of("coil:1:" + datatype[0]);
+            Assertions.assertEquals(datatype[0], coil.getDataType().name());
             Assertions.assertEquals(1, coil.getNumberOfElements());
         }
     }
@@ -85,9 +85,9 @@ public class ModbusTagDataTypeTest {
     public void testDiscreteInput_DataType() {
         //Datatype, Length in Bytes
         String[][] datatypes = {{"BOOL","1"}};
-        for(int i = 0; i< datatypes.length; i++){
-            ModbusTagDiscreteInput discrete = ModbusTagDiscreteInput.of("discrete-input:1:" + datatypes[i][0]);
-            Assertions.assertEquals(datatypes[i][0], discrete.getDataType().name());
+        for (String[] datatype : datatypes) {
+            ModbusTagDiscreteInput discrete = ModbusTagDiscreteInput.of("discrete-input:1:" + datatype[0]);
+            Assertions.assertEquals(datatype[0], discrete.getDataType().name());
             Assertions.assertEquals(1, discrete.getNumberOfElements());
         }
     }
diff --git a/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaDataType.java b/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaDataType.java
index b6427e9e88..0f74a5378b 100644
--- a/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaDataType.java
+++ b/plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/OpcuaDataType.java
@@ -85,7 +85,7 @@ public enum OpcuaDataType {
   }
 
   public static List<OpcuaDataType> enumsForFieldVariantType(short fieldValue) {
-    List<OpcuaDataType> _values = new ArrayList();
+    List<OpcuaDataType> _values = new ArrayList<>();
     for (OpcuaDataType _val : OpcuaDataType.values()) {
       if (_val.getVariantType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/context/SecureChannel.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/context/SecureChannel.java
index 702830534c..2a9af1f1b4 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/context/SecureChannel.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/context/SecureChannel.java
@@ -457,9 +457,7 @@ public class SecureChannel {
                 e.printStackTrace();
             };
 
-            BiConsumer<OpcuaAPU, Throwable> error = (message, e) -> {
-                LOGGER.error("Error while waiting for subscription response", e);
-            };
+            BiConsumer<OpcuaAPU, Throwable> error = (message, e) -> LOGGER.error("Error while waiting for subscription response", e);
 
             submit(context, timeout, error, consumer, buffer);
         } catch (SerializationException e) {
@@ -565,13 +563,9 @@ public class SecureChannel {
 
             };
 
-            Consumer<TimeoutException> timeout = e -> {
-                LOGGER.error("Timeout while waiting for activate session response", e);
-            };
+            Consumer<TimeoutException> timeout = e -> LOGGER.error("Timeout while waiting for activate session response", e);
 
-            BiConsumer<OpcuaAPU, Throwable> error = (message, e) -> {
-                LOGGER.error("Error while waiting for activate session response", e);
-            };
+            BiConsumer<OpcuaAPU, Throwable> error = (message, e) -> LOGGER.error("Error while waiting for activate session response", e);
 
             submit(context, timeout, error, consumer, buffer);
         } catch (SerializationException e) {
@@ -649,13 +643,9 @@ public class SecureChannel {
 
             };
 
-            Consumer<TimeoutException> timeout = e -> {
-                LOGGER.error("Timeout while waiting for close session response", e);
-            };
+            Consumer<TimeoutException> timeout = e -> LOGGER.error("Timeout while waiting for close session response", e);
 
-            BiConsumer<OpcuaAPU, Throwable> error = (message, e) -> {
-                LOGGER.error("Error while waiting for close session response", e);
-            };
+            BiConsumer<OpcuaAPU, Throwable> error = (message, e) -> LOGGER.error("Error while waiting for close session response", e);
 
             submit(context, timeout, error, consumer, buffer);
         } catch (SerializationException e) {
@@ -1102,7 +1092,7 @@ public class SecureChannel {
      * @throws PlcRuntimeException - If no endpoint with a compatible policy is found raise and error.
      */
     private void selectEndpoint(CreateSessionResponse sessionResponse) throws PlcRuntimeException {
-        List<String> returnedEndpoints = new ArrayList<String>();
+        List<String> returnedEndpoints = new ArrayList<>();
 
         // Get a list of the endpoints which match ours.
         Stream<EndpointDescription> filteredEndpoints = sessionResponse.getServerEndpoints().stream()
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaProtocolLogic.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaProtocolLogic.java
index b2dc373ef7..bc70d5cb39 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaProtocolLogic.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaProtocolLogic.java
@@ -380,11 +380,11 @@ public class OpcuaProtocolLogic extends Plc4xProtocolBase<OpcuaAPU> implements H
                 } else if (variant instanceof VariantByteString) {
                     PlcList plcList = new PlcList();
                     List<ByteStringArray> array = ((VariantByteString) variant).getValue();
-                    for (int k = 0; k < array.size(); k++) {
-                        int length = array.get(k).getValue().size();
+                    for (ByteStringArray byteStringArray : array) {
+                        int length = byteStringArray.getValue().size();
                         Short[] tmpValue = new Short[length];
                         for (int i = 0; i < length; i++) {
-                            tmpValue[i] = array.get(k).getValue().get(i);
+                            tmpValue[i] = byteStringArray.getValue().get(i);
                         }
                         plcList.add(PlcValueHandler.of(tmpValue));
                     }
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandle.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandle.java
index acb4706730..1650111840 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandle.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandle.java
@@ -85,16 +85,16 @@ public class OpcuaSubscriptionHandle extends DefaultPlcSubscriptionHandle {
 
     private CompletableFuture<CreateMonitoredItemsResponse> onSubscribeCreateMonitoredItemsRequest() {
         List<ExtensionObjectDefinition> requestList = new ArrayList<>(this.tagNames.size());
-        for (int i = 0; i < this.tagNames.size(); i++) {
-            final DefaultPlcSubscriptionTag tagDefaultPlcSubscription = (DefaultPlcSubscriptionTag) subscriptionRequest.getTag(tagNames.get(i));
+        for (String tagName : this.tagNames) {
+            final DefaultPlcSubscriptionTag tagDefaultPlcSubscription = (DefaultPlcSubscriptionTag) subscriptionRequest.getTag(tagName);
 
             NodeId idNode = generateNodeId((OpcuaTag) tagDefaultPlcSubscription.getTag());
 
             ReadValueId readValueId = new ReadValueId(
-                idNode,
-                0xD,
-                OpcuaProtocolLogic.NULL_STRING,
-                new QualifiedName(0, OpcuaProtocolLogic.NULL_STRING));
+                    idNode,
+                    0xD,
+                    OpcuaProtocolLogic.NULL_STRING,
+                    new QualifiedName(0, OpcuaProtocolLogic.NULL_STRING));
 
             MonitoringMode monitoringMode;
             switch (tagDefaultPlcSubscription.getPlcSubscriptionType()) {
@@ -114,15 +114,15 @@ public class OpcuaSubscriptionHandle extends DefaultPlcSubscriptionHandle {
             long clientHandle = clientHandles.getAndIncrement();
 
             MonitoringParameters parameters = new MonitoringParameters(
-                clientHandle,
-                (double) cycleTime,     // sampling interval
-                OpcuaProtocolLogic.NULL_EXTENSION_OBJECT,       // filter, null means use default
-                1L,   // queue size
-                true        // discard oldest
+                    clientHandle,
+                    (double) cycleTime,     // sampling interval
+                    OpcuaProtocolLogic.NULL_EXTENSION_OBJECT,       // filter, null means use default
+                    1L,   // queue size
+                    true        // discard oldest
             );
 
             MonitoredItemCreateRequest request = new MonitoredItemCreateRequest(
-                readValueId, monitoringMode, parameters);
+                    readValueId, monitoringMode, parameters);
 
             requestList.add(request);
         }
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
index 1202baccdd..5c6139bcd9 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
@@ -171,22 +171,20 @@ public class OpcuaPlcDriverTest {
 
     @Test
     public void connectionWithDiscoveryParam() {
-        connectionStringValidSet.forEach(connectionAddress -> {
-            discoveryParamValidSet.forEach(discoveryParam -> {
-                String connectionString = connectionAddress + paramSectionDivider + discoveryParam;
-                try {
-                    PlcConnection opcuaConnection = new DefaultPlcDriverManager().getConnection(connectionString);
-                    Condition<PlcConnection> is_connected = new Condition<>(PlcConnection::isConnected, "is connected");
-                    assertThat(opcuaConnection).is(is_connected);
-                    opcuaConnection.close();
-                    assertThat(opcuaConnection).isNot(is_connected);
-                } catch (PlcConnectionException e) {
-                    fail("Exception during connectionWithDiscoveryParam while connecting Test EXCEPTION: " + e.getMessage());
-                } catch (Exception e) {
-                    fail("Exception during connectionWithDiscoveryParam while closing Test EXCEPTION: " + e.getMessage());
-                }
-            });
-        });
+        connectionStringValidSet.forEach(connectionAddress -> discoveryParamValidSet.forEach(discoveryParam -> {
+            String connectionString = connectionAddress + paramSectionDivider + discoveryParam;
+            try {
+                PlcConnection opcuaConnection = new DefaultPlcDriverManager().getConnection(connectionString);
+                Condition<PlcConnection> is_connected = new Condition<>(PlcConnection::isConnected, "is connected");
+                assertThat(opcuaConnection).is(is_connected);
+                opcuaConnection.close();
+                assertThat(opcuaConnection).isNot(is_connected);
+            } catch (PlcConnectionException e) {
+                fail("Exception during connectionWithDiscoveryParam while connecting Test EXCEPTION: " + e.getMessage());
+            } catch (Exception e) {
+                fail("Exception during connectionWithDiscoveryParam while closing Test EXCEPTION: " + e.getMessage());
+            }
+        }));
     }
 
     @Test
@@ -396,10 +394,8 @@ public class OpcuaPlcDriverTest {
                         assertThat(read_response.getResponseCode("Bool")).isEqualTo(PlcResponseCode.OK);
                     }
 
-                } catch (ExecutionException executionException) {
+                } catch (ExecutionException | InterruptedException executionException) {
                     executionException.printStackTrace();
-                } catch (InterruptedException interruptedException) {
-                    interruptedException.printStackTrace();
                 }
 
             }
@@ -423,10 +419,8 @@ public class OpcuaPlcDriverTest {
                         PlcWriteResponse write_response = write_request.execute().get();
                         assertThat(write_response.getResponseCode("Bool")).isEqualTo(PlcResponseCode.OK);
                     }
-                } catch (ExecutionException executionException) {
+                } catch (ExecutionException | InterruptedException executionException) {
                     executionException.printStackTrace();
-                } catch (InterruptedException interruptedException) {
-                    interruptedException.printStackTrace();
                 }
             }
         }
diff --git a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java
index 3dfe5e3388..0e85610cf4 100644
--- a/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java
+++ b/plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/OpenProtocolDriver.java
@@ -59,12 +59,7 @@ public class OpenProtocolDriver extends GeneratedDriverBase<OpenProtocolMessage>
 
     @Override
     public PlcDriverMetadata getMetadata() {
-        return new PlcDriverMetadata() {
-            @Override
-            public boolean canDiscover() {
-                return false;
-            }
-        };
+        return () -> false;
     }
 
     @Override
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ProfinetDataType.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ProfinetDataType.java
index ed59fd1912..748a4f5fb9 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ProfinetDataType.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ProfinetDataType.java
@@ -96,7 +96,7 @@ public enum ProfinetDataType {
   }
 
   public static List<ProfinetDataType> enumsForFieldDataTypeSize(short fieldValue) {
-    List<ProfinetDataType> _values = new ArrayList();
+    List<ProfinetDataType> _values = new ArrayList<>();
     for (ProfinetDataType _val : ProfinetDataType.values()) {
       if (_val.getDataTypeSize() == fieldValue) {
         _values.add(_val);
@@ -119,7 +119,7 @@ public enum ProfinetDataType {
   }
 
   public static List<ProfinetDataType> enumsForFieldConversion(String fieldValue) {
-    List<ProfinetDataType> _values = new ArrayList();
+    List<ProfinetDataType> _values = new ArrayList<>();
     for (ProfinetDataType _val : ProfinetDataType.values()) {
       if (_val.getConversion().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/VirtualLanPriority.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/VirtualLanPriority.java
index 32de1c741f..c624ed343d 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/VirtualLanPriority.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/VirtualLanPriority.java
@@ -69,7 +69,7 @@ public enum VirtualLanPriority {
   }
 
   public static List<VirtualLanPriority> enumsForFieldAcronym(String fieldValue) {
-    List<VirtualLanPriority> _values = new ArrayList();
+    List<VirtualLanPriority> _values = new ArrayList<>();
     for (VirtualLanPriority _val : VirtualLanPriority.values()) {
       if (_val.getAcronym().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/ProfinetDriver.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/ProfinetDriver.java
index b772f8f917..d6852dd673 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/ProfinetDriver.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/ProfinetDriver.java
@@ -60,12 +60,7 @@ public class ProfinetDriver extends GeneratedDriverBase<Ethernet_Frame> {
 
     @Override
     public PlcDriverMetadata getMetadata() {
-        return new PlcDriverMetadata() {
-            @Override
-            public boolean canDiscover() {
-                return true;
-            }
-        };
+        return () -> true;
     }
 
     @Override
diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java
index 4a61bac0aa..33556c8e4e 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java
@@ -667,7 +667,7 @@ public class ProfinetDevice implements PlcSubscriber{
                                 0x0001,
                                 record.getIndex(),
                                 record.getLength(),
-                                new UserData(ByteBuffer.allocate(4).putInt(Integer.valueOf(record.getRef().getDefaultValue())).array(), (long) record.getLength())
+                                new UserData(ByteBuffer.allocate(4).putInt(Integer.parseInt(record.getRef().getDefaultValue())).array(), (long) record.getLength())
                             ));
                         seqNumber += 1;
                     }
diff --git a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetCheckSumTests.java b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetCheckSumTests.java
index 57ed9cebe6..8eef7cbc66 100644
--- a/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetCheckSumTests.java
+++ b/plc4j/drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ProfinetCheckSumTests.java
@@ -53,7 +53,7 @@ public class ProfinetCheckSumTests {
                 16696,
                 16696,
                 0,
-                new ArrayList<PnIoCm_Block>())
+                    new ArrayList<>())
         );
         try {
             assertEquals(
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
index f1d142ff6e..ad5e390461 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPTpduSize.java
@@ -68,7 +68,7 @@ public enum COTPTpduSize {
   }
 
   public static List<COTPTpduSize> enumsForFieldSizeInBytes(int fieldValue) {
-    List<COTPTpduSize> _values = new ArrayList();
+    List<COTPTpduSize> _values = new ArrayList<>();
     for (COTPTpduSize _val : COTPTpduSize.values()) {
       if (_val.getSizeInBytes() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
index 72352093a3..2e4bc5bb37 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataTransportSize.java
@@ -68,7 +68,7 @@ public enum DataTransportSize {
   }
 
   public static List<DataTransportSize> enumsForFieldSizeInBits(boolean fieldValue) {
-    List<DataTransportSize> _values = new ArrayList();
+    List<DataTransportSize> _values = new ArrayList<>();
     for (DataTransportSize _val : DataTransportSize.values()) {
       if (_val.getSizeInBits() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
index c40c7b695b..2e901cf1b5 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/MemoryArea.java
@@ -70,7 +70,7 @@ public enum MemoryArea {
   }
 
   public static List<MemoryArea> enumsForFieldShortName(String fieldValue) {
-    List<MemoryArea> _values = new ArrayList();
+    List<MemoryArea> _values = new ArrayList<>();
     for (MemoryArea _val : MemoryArea.values()) {
       if (_val.getShortName().equals(fieldValue)) {
         _values.add(_val);
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java
index 4a96eac16b..af2427ff4f 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TransportSize.java
@@ -431,7 +431,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldSupported_S7_300(boolean fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getSupported_S7_300() == fieldValue) {
         _values.add(_val);
@@ -454,7 +454,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldSupported_LOGO(boolean fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getSupported_LOGO() == fieldValue) {
         _values.add(_val);
@@ -477,7 +477,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldCode(short fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getCode() == fieldValue) {
         _values.add(_val);
@@ -500,7 +500,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldSizeInBytes(short fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getSizeInBytes() == fieldValue) {
         _values.add(_val);
@@ -523,7 +523,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldSupported_S7_400(boolean fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getSupported_S7_400() == fieldValue) {
         _values.add(_val);
@@ -546,7 +546,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldSupported_S7_1200(boolean fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getSupported_S7_1200() == fieldValue) {
         _values.add(_val);
@@ -569,7 +569,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldShortName(short fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getShortName() == fieldValue) {
         _values.add(_val);
@@ -592,7 +592,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldSupported_S7_1500(boolean fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getSupported_S7_1500() == fieldValue) {
         _values.add(_val);
@@ -615,7 +615,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldDataTransportSize(DataTransportSize fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getDataTransportSize() == fieldValue) {
         _values.add(_val);
@@ -638,7 +638,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldDataProtocolId(String fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getDataProtocolId().equals(fieldValue)) {
         _values.add(_val);
@@ -661,7 +661,7 @@ public enum TransportSize {
   }
 
   public static List<TransportSize> enumsForFieldBaseType(TransportSize fieldValue) {
-    List<TransportSize> _values = new ArrayList();
+    List<TransportSize> _values = new ArrayList<>();
     for (TransportSize _val : TransportSize.values()) {
       if (_val.getBaseType() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/drivers/simulated/src/main/generated/org/apache/plc4x/java/simulated/readwrite/SimulatedDataTypeSizes.java b/plc4j/drivers/simulated/src/main/generated/org/apache/plc4x/java/simulated/readwrite/SimulatedDataTypeSizes.java
index 82e400b167..6fc51040f3 100644
--- a/plc4j/drivers/simulated/src/main/generated/org/apache/plc4x/java/simulated/readwrite/SimulatedDataTypeSizes.java
+++ b/plc4j/drivers/simulated/src/main/generated/org/apache/plc4x/java/simulated/readwrite/SimulatedDataTypeSizes.java
@@ -88,7 +88,7 @@ public enum SimulatedDataTypeSizes {
   }
 
   public static List<SimulatedDataTypeSizes> enumsForFieldDataTypeSize(short fieldValue) {
-    List<SimulatedDataTypeSizes> _values = new ArrayList();
+    List<SimulatedDataTypeSizes> _values = new ArrayList<>();
     for (SimulatedDataTypeSizes _val : SimulatedDataTypeSizes.values()) {
       if (_val.getDataTypeSize() == fieldValue) {
         _values.add(_val);
diff --git a/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/EventSubscription.java b/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/EventSubscription.java
index 892a0de52f..dc90faf02a 100644
--- a/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/EventSubscription.java
+++ b/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/EventSubscription.java
@@ -63,9 +63,7 @@ public class EventSubscription {
                 .register(msg -> {
                     System.out.println("******** S7ModeEvent ********");
                     Map<String, Object> map = ((S7ModeEvent) msg).getMap();
-                    map.forEach((x, y) -> {
-                        System.out.println(x + " : " + y);
-                    });
+                    map.forEach((x, y) -> System.out.println(x + " : " + y));
                     System.out.println("****************************");
                 });
 //
diff --git a/plc4j/examples/poll-loop/src/main/java/org/apache/plc4x/java/examples/pollloop/PollLoop.java b/plc4j/examples/poll-loop/src/main/java/org/apache/plc4x/java/examples/pollloop/PollLoop.java
index 9c93271a3f..ad2f7c0a4e 100644
--- a/plc4j/examples/poll-loop/src/main/java/org/apache/plc4x/java/examples/pollloop/PollLoop.java
+++ b/plc4j/examples/poll-loop/src/main/java/org/apache/plc4x/java/examples/pollloop/PollLoop.java
@@ -93,8 +93,8 @@ public class PollLoop {
                 // Create a new read request
                 // variables names are the same as the actual variable read
                 PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
-                for (int i = 0; i < variables.size(); i++) {
-                    builder.addTagAddress(variables.get(i), variables.get(i));
+                for (String variable : variables) {
+                    builder.addTagAddress(variable, variable);
                 }
                 PlcReadRequest readRequest = builder.build();
 
diff --git a/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java
index 0e556165c3..625e4d39c9 100644
--- a/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java
+++ b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java
@@ -129,10 +129,10 @@ public abstract class Plc4xBaseTable extends AbstractTable {
      * if tableCutoff is positive, then the row gets limited to that.
      */
     public Enumerable<Object[]> scan(DataContext root) {
-        return new AbstractEnumerable<Object[]>() {
+        return new AbstractEnumerable<>() {
             @Override
             public Enumerator<Object[]> enumerator() {
-                return new Enumerator<Object[]>() {
+                return new Enumerator<>() {
 
                     private final AtomicLong counter = new AtomicLong(0);
 
diff --git a/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java
index 2799b1581a..16222d4b12 100644
--- a/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java
+++ b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java
@@ -49,7 +49,7 @@ public class Plc4xSchema extends AbstractSchema {
         this.queues = configuration.getJobConfigurations().stream()
             .collect(Collectors.toMap(
                 JobConfiguration::getName,
-                conf -> new ArrayBlockingQueue<Record>(1000)
+                conf -> new ArrayBlockingQueue<>(1000)
             ));
         // Create the tables
         this.tableMap = configuration.getJobConfigurations().stream()
diff --git a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkConfigTest.java b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkConfigTest.java
index 2a447d3310..e53612a4ad 100644
--- a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkConfigTest.java
+++ b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkConfigTest.java
@@ -52,7 +52,7 @@ public class SinkConfigTest {
         Path path = FileSystems.getDefault().getPath(TEST_PATH, "sink_task_no_error.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -72,7 +72,7 @@ public class SinkConfigTest {
         Path path = FileSystems.getDefault().getPath(TEST_PATH, "sink_task_no_error.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -93,7 +93,7 @@ public class SinkConfigTest {
         Path path = FileSystems.getDefault().getPath(TEST_PATH, "sink_task_no_error.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -108,7 +108,7 @@ public class SinkConfigTest {
         Path path = FileSystems.getDefault().getPath(TEST_PATH, "sink_task_no_error.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -116,7 +116,7 @@ public class SinkConfigTest {
         sinkConnector.start(map);
         sinkConnector.toString();
         sinkConnector.stop();
-        assertThrows(NullPointerException.class, () -> sinkConnector.toString());
+        assertThrows(NullPointerException.class, sinkConnector::toString);
     }
 
     private static Map<String, String> toStringMap(Properties properties) {
diff --git a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkTaskTest.java b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkTaskTest.java
index e189057985..27b20a34dc 100644
--- a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkTaskTest.java
+++ b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SinkTaskTest.java
@@ -59,7 +59,7 @@ public class SinkTaskTest {
             "sink_task_no_error.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
diff --git a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceConfigTest.java b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceConfigTest.java
index 20d0cff0e9..e467d6f579 100644
--- a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceConfigTest.java
+++ b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceConfigTest.java
@@ -127,7 +127,7 @@ public class SourceConfigTest {
             "jobs.ads-heartbeat.tags=active\n" +
             "jobs.ads-heartbeat.tags.active=Main.running\n"));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -167,7 +167,7 @@ public class SourceConfigTest {
         Path path = FileSystems.getDefault().getPath("config/", "plc4x-source.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -188,7 +188,7 @@ public class SourceConfigTest {
         Path path = FileSystems.getDefault().getPath("config/", "plc4x-source.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -203,7 +203,7 @@ public class SourceConfigTest {
         Path path = FileSystems.getDefault().getPath("config/", "plc4x-source.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
@@ -211,7 +211,7 @@ public class SourceConfigTest {
         sourceConnector.start(map);
         sourceConnector.toString();
         sourceConnector.stop();
-        assertThrows(NullPointerException.class, () -> sourceConnector.toString());
+        assertThrows(NullPointerException.class, sourceConnector::toString);
     }
 
     @Test
diff --git a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceTaskTest.java b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceTaskTest.java
index 4d47a24a06..2fdfe23b53 100644
--- a/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceTaskTest.java
+++ b/plc4j/integrations/apache-kafka/src/test/java/org/apache/plc4x/kafka/config/SourceTaskTest.java
@@ -51,7 +51,7 @@ public class SourceTaskTest {
             "source_task_no_error.properties");
         properties.load((new StringReader(new String(Files.readAllBytes(path)))));
 
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         for (final String name: properties.stringPropertyNames())
             map.put(name, properties.getProperty(name));
 
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
index 763e7fcda7..47285b6a12 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/record/Plc4xReadResponseRecordSet.java
@@ -45,7 +45,7 @@ public class Plc4xReadResponseRecordSet implements RecordSet, Closeable {
     private boolean moreRows;
     private final boolean debugEnabled = logger.isDebugEnabled();
 
-   	private final AtomicReference<RecordSchema> recordSchema = new AtomicReference<RecordSchema>(null);
+   	private final AtomicReference<RecordSchema> recordSchema = new AtomicReference<>(null);
 
     public Plc4xReadResponseRecordSet(final PlcReadResponse readResponse, RecordSchema recordSchema) throws IOException {
         this.readResponse = readResponse;
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
index 171c91f508..b7f4f3ab54 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/nifi/util/Plc4xCommonTest.java
@@ -148,30 +148,27 @@ public class Plc4xCommonTest {
     }
 
     public static void assertAvroContent(List<MockFlowFile> flowfiles, boolean checkValue, boolean checkType) {
-        flowfiles.forEach(new Consumer<MockFlowFile>() {
-            @Override
-            public void accept(MockFlowFile t) {
-                DatumReader<GenericRecord> dr = new GenericDatumReader<>();
-                try (DataFileReader<GenericRecord> dfr = new DataFileReader<GenericRecord>(new SeekableByteArrayInput(t.toByteArray()), dr)) {
-                    GenericRecord data = null;
-                    while (dfr.hasNext()) {
-                        data = dfr.next(data);
-
-						for (String tag : Plc4xCommonTest.addressMap.keySet()) {
-							if (data.hasField(tag)) {
-								// Check value after string conversion
-                                if (checkValue)
-								    assert data.get(tag).toString().equalsIgnoreCase(Plc4xCommonTest.originalMap.get(tag).toString());
-
-								// Check type
-                                if (checkType)
-								    assert data.get(tag).getClass().equals(Plc4xCommonTest.typeMap.get(tag));
-							}
-						}
+        flowfiles.forEach(t -> {
+            DatumReader<GenericRecord> dr = new GenericDatumReader<>();
+            try (DataFileReader<GenericRecord> dfr = new DataFileReader<>(new SeekableByteArrayInput(t.toByteArray()), dr)) {
+                GenericRecord data = null;
+                while (dfr.hasNext()) {
+                    data = dfr.next(data);
+
+                    for (String tag : Plc4xCommonTest.addressMap.keySet()) {
+                        if (data.hasField(tag)) {
+                            // Check value after string conversion
+                            if (checkValue)
+                                assert data.get(tag).toString().equalsIgnoreCase(Plc4xCommonTest.originalMap.get(tag).toString());
+
+                            // Check type
+                            if (checkType)
+                                assert data.get(tag).getClass().equals(Plc4xCommonTest.typeMap.get(tag));
+                        }
                     }
-                } catch (IOException e) {
-                    e.printStackTrace();
                 }
+            } catch (IOException e) {
+                e.printStackTrace();
             }
         });
     }
@@ -201,8 +198,8 @@ public class Plc4xCommonTest {
 
     public static byte[] encodeRecord(GenericRecord record){
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(schema);
-        DataFileWriter<GenericRecord> fileWriter = new DataFileWriter<GenericRecord>(writer);
+        DatumWriter<GenericRecord> writer = new GenericDatumWriter<>(schema);
+        DataFileWriter<GenericRecord> fileWriter = new DataFileWriter<>(writer);
 
         try {
             fileWriter.create(schema, out);
diff --git a/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java b/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
index 7d0224046e..9185dbada4 100644
--- a/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
+++ b/plc4j/integrations/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
@@ -100,10 +100,10 @@ public class Plc4xNamespace extends ManagedNamespaceWithLifecycle {
     private void addConfiguredNodes(UaFolderNode rootNode, DeviceConfiguration c) {
         final List<Tag> tags = c.getTags();
         final String connectionString = c.getConnectionString();
-        for (int i = 0; i < tags.size(); i++) {
-            logger.info("Adding Tag " + tags.get(i).getAlias() + " - " + tags.get(i).getAddress());
-            String name = tags.get(i).getAlias();
-            final String tag = tags.get(i).getAddress();
+        for (Tag item : tags) {
+            logger.info("Adding Tag " + item.getAlias() + " - " + item.getAddress());
+            String name = item.getAlias();
+            final String tag = item.getAddress();
 
             Class datatype = null;
             NodeId typeId = Identifiers.String;
@@ -112,22 +112,22 @@ public class Plc4xNamespace extends ManagedNamespaceWithLifecycle {
             try {
                 datatype = plc4xServer.getTag(tag, connectionString).getPlcValueType().getDefaultJavaType();
                 final int length = (plc4xServer.getTag(tag, connectionString).getArrayInfo().isEmpty()) ? 1 :
-                    plc4xServer.getTag(tag, connectionString).getArrayInfo().get(0).getSize();
+                        plc4xServer.getTag(tag, connectionString).getArrayInfo().get(0).getSize();
                 typeId = Plc4xCommunication.getNodeId(plc4xServer.getTag(tag, connectionString).getPlcValueType());
 
 
                 if (length > 1) {
                     node = new UaVariableNode.UaVariableNodeBuilder(getNodeContext())
-                        .setNodeId(newNodeId(name))
-                        .setAccessLevel(AccessLevel.READ_WRITE)
-                        .setUserAccessLevel(AccessLevel.READ_WRITE)
-                        .setBrowseName(newQualifiedName(name))
-                        .setDisplayName(LocalizedText.english(name))
-                        .setDataType(typeId)
-                        .setTypeDefinition(Identifiers.BaseDataVariableType)
-                        .setValueRank(ValueRank.OneDimension.getValue())
-                        .setArrayDimensions(new UInteger[]{uint(length)})
-                        .build();
+                            .setNodeId(newNodeId(name))
+                            .setAccessLevel(AccessLevel.READ_WRITE)
+                            .setUserAccessLevel(AccessLevel.READ_WRITE)
+                            .setBrowseName(newQualifiedName(name))
+                            .setDisplayName(LocalizedText.english(name))
+                            .setDataType(typeId)
+                            .setTypeDefinition(Identifiers.BaseDataVariableType)
+                            .setValueRank(ValueRank.OneDimension.getValue())
+                            .setArrayDimensions(new UInteger[]{uint(length)})
+                            .build();
 
                     Object array = Array.newInstance(datatype, length);
                     for (int j = 0; j < length; j++) {
@@ -136,36 +136,36 @@ public class Plc4xNamespace extends ManagedNamespaceWithLifecycle {
                     variant = new Variant(array);
                 } else {
                     node = new UaVariableNode.UaVariableNodeBuilder(getNodeContext())
-                        .setNodeId(newNodeId(name))
-                        .setAccessLevel(AccessLevel.READ_WRITE)
-                        .setUserAccessLevel(AccessLevel.READ_WRITE)
-                        .setBrowseName(newQualifiedName(name))
-                        .setDisplayName(LocalizedText.english(name))
-                        .setDataType(typeId)
-                        .setTypeDefinition(Identifiers.BaseDataVariableType)
-                        .build();
+                            .setNodeId(newNodeId(name))
+                            .setAccessLevel(AccessLevel.READ_WRITE)
+                            .setUserAccessLevel(AccessLevel.READ_WRITE)
+                            .setBrowseName(newQualifiedName(name))
+                            .setDisplayName(LocalizedText.english(name))
+                            .setDataType(typeId)
+                            .setTypeDefinition(Identifiers.BaseDataVariableType)
+                            .build();
                     variant = new Variant(0);
                 }
 
                 node.setValue(new DataValue(variant));
 
                 node.getFilterChain().addLast(
-                    AttributeFilters.getValue(
-                        ctx -> plc4xServer.getValue(ctx, tag, connectionString)
-                    )
+                        AttributeFilters.getValue(
+                                ctx -> plc4xServer.getValue(ctx, tag, connectionString)
+                        )
                 );
 
                 node.getFilterChain().addLast(
-                    AttributeFilters.setValue(
-                        (ctx, value) -> {
-                            if (length > 1) {
-                                plc4xServer.setValue(tag, Arrays.toString((Object[]) value.getValue().getValue()), connectionString);
-                            } else {
-                                plc4xServer.setValue(tag, value.getValue().getValue().toString(), connectionString);
-                            }
-
-                        }
-                    )
+                        AttributeFilters.setValue(
+                                (ctx, value) -> {
+                                    if (length > 1) {
+                                        plc4xServer.setValue(tag, Arrays.toString((Object[]) value.getValue().getValue()), connectionString);
+                                    } else {
+                                        plc4xServer.setValue(tag, value.getValue().getValue().toString(), connectionString);
+                                    }
+
+                                }
+                        )
                 );
 
             } catch (PlcConnectionException e) {
diff --git a/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java b/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
index d395280a34..a9956ddc81 100644
--- a/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
+++ b/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
@@ -128,21 +128,19 @@ public class OpcuaPlcDriverTest {
 
     @Test
     public void connectionWithDiscoveryParam(){
-        connectionStringValidSet.forEach(connectionAddress -> {
-            discoveryParamValidSet.forEach(discoveryParam -> {
-                String connectionString = connectionAddress + paramSectionDivider + discoveryParam;
-                try {
-                    PlcConnection opcuaConnection = new DefaultPlcDriverManager().getConnection(connectionString);
-                    assert opcuaConnection.isConnected();
-                    opcuaConnection.close();
-                    assert !opcuaConnection.isConnected();
-                } catch (PlcConnectionException e) {
-                    fail("Exception during connectionWithDiscoveryParam while connecting Test EXCEPTION: " + e.getMessage());
-                } catch (Exception e) {
-                    fail("Exception during connectionWithDiscoveryParam while closing Test EXCEPTION: " + e.getMessage());
-                }
-            });
-        });
+        connectionStringValidSet.forEach(connectionAddress -> discoveryParamValidSet.forEach(discoveryParam -> {
+            String connectionString = connectionAddress + paramSectionDivider + discoveryParam;
+            try {
+                PlcConnection opcuaConnection = new DefaultPlcDriverManager().getConnection(connectionString);
+                assert opcuaConnection.isConnected();
+                opcuaConnection.close();
+                assert !opcuaConnection.isConnected();
+            } catch (PlcConnectionException e) {
+                fail("Exception during connectionWithDiscoveryParam while connecting Test EXCEPTION: " + e.getMessage());
+            } catch (Exception e) {
+                fail("Exception during connectionWithDiscoveryParam while closing Test EXCEPTION: " + e.getMessage());
+            }
+        }));
 
 
     }
diff --git a/plc4j/osgi/src/main/java/org/apache/plc4x/java/osgi/TransportActivator.java b/plc4j/osgi/src/main/java/org/apache/plc4x/java/osgi/TransportActivator.java
index 8a868a3b06..f62960dc23 100644
--- a/plc4j/osgi/src/main/java/org/apache/plc4x/java/osgi/TransportActivator.java
+++ b/plc4j/osgi/src/main/java/org/apache/plc4x/java/osgi/TransportActivator.java
@@ -40,7 +40,7 @@ public class TransportActivator implements BundleActivator {
     public void start(BundleContext context) throws Exception {
         ServiceLoader<Transport> transports = ServiceLoader.load(Transport.class, context.getBundle().adapt(BundleWiring.class).getClassLoader());
         for (Transport transport : transports) {
-            Hashtable<String, String> props = new Hashtable<String, String>();
+            Hashtable<String, String> props = new Hashtable<>();
             props.put(TRANSPORT_CODE, transport.getTransportCode());
             props.put(TRANSPORT_NAME, transport.getTransportName());
             registrations.add(context.registerService(Transport.class, transport, props));
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/Plc4xNettyWrapper.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/Plc4xNettyWrapper.java
index d95a4bfd79..ff2448a870 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/Plc4xNettyWrapper.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/Plc4xNettyWrapper.java
@@ -64,7 +64,7 @@ public class Plc4xNettyWrapper<T> extends MessageToMessageCodec<T, Object> {
         this.registeredHandlers = new ConcurrentLinkedQueue<>();
         this.protocolBase = protocol;
         this.authentication = authentication;
-        this.protocolBase.setContext(new ConversationContext<T>() {
+        this.protocolBase.setContext(new ConversationContext<>() {
 
             @Override
             public PlcAuthentication getAuthentication() {
@@ -166,8 +166,7 @@ public class Plc4xNettyWrapper<T> extends MessageToMessageCodec<T, Object> {
                 // Check all Commands / Functions
                 Deque<Either<Function<?, ?>, Predicate<?>>> commands = registration.getCommands();
                 Object instance = t;
-                for (Iterator<Either<Function<?, ?>, Predicate<?>>> iterator = commands.iterator(); iterator.hasNext(); ) {
-                    Either<Function<?, ?>, Predicate<?>> either = iterator.next();
+                for (Either<Function<?, ?>, Predicate<?>> either : commands) {
                     if (either.isLeft()) {
                         Function unwrap = either.getLeft();
                         instance = unwrap.apply(instance);
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java
index 7e30104318..e747699716 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java
@@ -196,7 +196,7 @@ public class DefaultNettyPlcConnection extends AbstractPlcConnection implements
         /*if (factory == null) {
             throw new IllegalStateException("No Instance Factory is Present!");
         }*/
-        return new ChannelInitializer<Channel>() {
+        return new ChannelInitializer<>() {
             @Override
             protected void initChannel(Channel channel) {
                 // Build the protocol stack for communicating with the s7 protocol.
@@ -205,7 +205,7 @@ public class DefaultNettyPlcConnection extends AbstractPlcConnection implements
                     @Override
                     public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
                         Stream<ConnectionStateListener> eventListeners = listeners.stream().filter(ConnectionStateListener.class::isInstance)
-                            .map(ConnectionStateListener.class::cast);
+                                .map(ConnectionStateListener.class::cast);
                         if (evt instanceof ConnectedEvent) {
                             sessionSetupCompleteFuture.complete(null);
                             eventListeners.forEach(ConnectionStateListener::connected);
@@ -223,7 +223,7 @@ public class DefaultNettyPlcConnection extends AbstractPlcConnection implements
                 channelFactory.initializePipeline(pipeline);
                 // Initialize Protocol Layer
                 setProtocol(stackConfigurer.configurePipeline(configuration, pipeline, getAuthentication(),
-                    channelFactory.isPassive()));
+                        channelFactory.isPassive()));
             }
         };
     }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcBrowseRequest.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcBrowseRequest.java
index 006b0215ec..14e523c2a2 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcBrowseRequest.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcBrowseRequest.java
@@ -97,9 +97,7 @@ public class DefaultPlcBrowseRequest implements PlcBrowseRequest, Serializable {
         @Override
         public PlcBrowseRequest build() {
             LinkedHashMap<String, PlcQuery> parsedQueries = new LinkedHashMap<>();
-            queries.forEach((name, tagQuery) -> {
-                parsedQueries.put(name, tagQuery.get());
-            });
+            queries.forEach((name, tagQuery) -> parsedQueries.put(name, tagQuery.get()));
             return new DefaultPlcBrowseRequest(browser, parsedQueries);
         }
 
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcReadRequest.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcReadRequest.java
index 57d276f4fc..734fa5298f 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcReadRequest.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcReadRequest.java
@@ -135,9 +135,7 @@ public class DefaultPlcReadRequest implements PlcReadRequest, PlcTagRequest, Ser
         @Override
         public PlcReadRequest build() {
             LinkedHashMap<String, PlcTag> parsedTags = new LinkedHashMap<>();
-            tags.forEach((name, tagQuery) -> {
-                parsedTags.put(name, tagQuery.get());
-            });
+            tags.forEach((name, tagQuery) -> parsedTags.put(name, tagQuery.get()));
             return new DefaultPlcReadRequest(reader, parsedTags);
         }
 
diff --git a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/Plc4xNettyWrapperTest.java b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/Plc4xNettyWrapperTest.java
index 3b360c3b91..b862052861 100644
--- a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/Plc4xNettyWrapperTest.java
+++ b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/Plc4xNettyWrapperTest.java
@@ -78,15 +78,9 @@ class Plc4xNettyWrapperTest {
     void conversationTimeoutTest() throws Exception {
         ConversationContext.ContextHandler handler = conversationContext.sendRequest(new Date())
             .expectResponse(Date.class, Duration.ofMillis(500))
-            .onTimeout(e -> {
-                timeout.set(true);
-            })
-            .onError((value, throwable) -> {
-                error.set(true);
-            })
-            .handle((answer) -> {
-                handled.set(true);
-            });
+            .onTimeout(e -> timeout.set(true))
+            .onError((value, throwable) -> error.set(true))
+            .handle((answer) -> handled.set(true));
 
         Thread.sleep(750);
 
@@ -100,15 +94,9 @@ class Plc4xNettyWrapperTest {
     void conversationWithNoTimeoutTest() throws Exception {
         ConversationContext.ContextHandler handler = conversationContext.sendRequest(new Date())
             .expectResponse(Date.class, Duration.ofMillis(500))
-            .onTimeout(e -> {
-                timeout.set(true);
-            })
-            .onError((value, throwable) -> {
-                error.set(true);
-            })
-            .handle((answer) -> {
-                handled.set(true);
-            });
+            .onTimeout(e -> timeout.set(true))
+            .onError((value, throwable) -> error.set(true))
+            .handle((answer) -> handled.set(true));
 
         verify(false, false, false);
         wrapper.decode(channelHandlerContext, new Date(), new ArrayList<>());
diff --git a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
index 186b358ce0..e1a0b36949 100644
--- a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
+++ b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
@@ -159,17 +159,15 @@ public class RequestTransactionManagerTest {
     }
 
     private void sendRequest(RequestTransactionManager tm, CompletableFuture<Void> sendRequest, CompletableFuture<Void> endRequest, CompletableFuture<Void> requestIsEnded) {
-        tm.submit(handle -> {
-            handle.submit(() -> {
-                // Wait till the Request is sent
-                sendRequest.complete(null);
-                // Receive
-                endRequest.thenAccept((n) -> {
-                    handle.endRequest();
-                    requestIsEnded.complete(null);
-                });
+        tm.submit(handle -> handle.submit(() -> {
+            // Wait till the Request is sent
+            sendRequest.complete(null);
+            // Receive
+            endRequest.thenAccept((n) -> {
+                handle.endRequest();
+                requestIsEnded.complete(null);
             });
-        });
+        }));
     }
 
 }
\ No newline at end of file
diff --git a/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java b/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java
index c7c220c207..652e7272ed 100644
--- a/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java
+++ b/plc4j/tools/connection-cache/src/main/java/org/apache/plc4x/java/utils/cache/ConnectionContainer.java
@@ -91,9 +91,7 @@ class ConnectionContainer {
                 connection = connectionManager.getConnection(connectionUrl);
             } catch (PlcConnectionException e) {
                 // If something goes wrong, close all waiting futures exceptionally.
-                queue.forEach(future -> {
-                    future.completeExceptionally(e);
-                });
+                queue.forEach(future -> future.completeExceptionally(e));
             }
         }
 
diff --git a/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java b/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
index 3bae193a00..11670377cf 100644
--- a/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
+++ b/plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
@@ -297,11 +297,7 @@ public class TriggeredScraperImpl implements Scraper, TriggeredScraperMBean {
         CompletableFuture<PlcConnection> future = CompletableFuture.supplyAsync(() -> {
             try {
                 return plcConnectionManager.getConnection(connectionString);
-            } catch (PlcConnectionException e) {
-                LOGGER.warn("Unable to instantiate connection to " + connectionString, e);
-                throw new PlcRuntimeException(e);
-            }
-            catch (Exception e){
+            } catch (Exception e){
                 LOGGER.warn("Unable to instantiate connection to " + connectionString, e);
                 throw new PlcRuntimeException(e);
             }
diff --git a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/s7/ManualS7PlcDriverMT.java b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/s7/ManualS7PlcDriverMT.java
index 48b223451b..30e6d04aae 100644
--- a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/s7/ManualS7PlcDriverMT.java
+++ b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/s7/ManualS7PlcDriverMT.java
@@ -141,30 +141,27 @@ public class ManualS7PlcDriverMT {
         // Warmup
         connectionManager.getConnection(CONN_STRING);
 
-        Runnable iteration = new Runnable() {
-            @Override
-            public void run() {
+        Runnable iteration = () -> {
 //                System.out.println("Setting a request / guard...");
-                CompletableFuture<Double> requestFuture = CompletableFuture.supplyAsync(
-                    () -> ManualS7PlcDriverMT.this.runSingleRequest(connectionManager)
-                );
-                executorService.schedule(() -> {
-                    if (!requestFuture.isDone()) {
-                        requestFuture.cancel(true);
-                        System.out.print("!");
-                    } else {
-                        System.out.print(".");
-                        try {
-                            statistics.addValue(requestFuture.get());
-                        } catch (InterruptedException | ExecutionException e) {
-                            // do nothing...
-                        }
+            CompletableFuture<Double> requestFuture = CompletableFuture.supplyAsync(
+                () -> ManualS7PlcDriverMT.this.runSingleRequest(connectionManager)
+            );
+            executorService.schedule(() -> {
+                if (!requestFuture.isDone()) {
+                    requestFuture.cancel(true);
+                    System.out.print("!");
+                } else {
+                    System.out.print(".");
+                    try {
+                        statistics.addValue(requestFuture.get());
+                    } catch (InterruptedException | ExecutionException e) {
+                        // do nothing...
                     }
-                    if (counter.getAndIncrement() >= numberOfRuns) {
-                        executorService.shutdown();
-                    }
-                }, period, TimeUnit.MILLISECONDS);
-            }
+                }
+                if (counter.getAndIncrement() >= numberOfRuns) {
+                    executorService.shutdown();
+                }
+            }, period, TimeUnit.MILLISECONDS);
         };
 
         executorService.scheduleAtFixedRate(iteration, 0, period, TimeUnit.MILLISECONDS);
diff --git a/plc4j/tools/ui/src/main/java/org/apache/plc4x/java/ui/FxmlController.java b/plc4j/tools/ui/src/main/java/org/apache/plc4x/java/ui/FxmlController.java
index 4b6c2db5f1..dc10b523a3 100644
--- a/plc4j/tools/ui/src/main/java/org/apache/plc4x/java/ui/FxmlController.java
+++ b/plc4j/tools/ui/src/main/java/org/apache/plc4x/java/ui/FxmlController.java
@@ -60,7 +60,7 @@ public class FxmlController {
 
     @FXML
     public void initialize() throws Exception {
-        plcTreeView.setCellFactory(treeEntryTreeView -> new TextFieldTreeCell<>(new StringConverter<TreeEntry>(){
+        plcTreeView.setCellFactory(treeEntryTreeView -> new TextFieldTreeCell<>(new StringConverter<>() {
             @Override
             public String toString(TreeEntry treeEntry) {
                 return treeEntry.getName();
@@ -129,9 +129,7 @@ public class FxmlController {
                             controller.setConnection(selectedItem.getName(), connection);
 
                             connectionTabs.getTabs().add(connectionTab);
-                        } catch (PlcConnectionException e) {
-                            throw new RuntimeException(e);
-                        } catch (IOException e) {
+                        } catch (PlcConnectionException | IOException e) {
                             throw new RuntimeException(e);
                         }
                     }
diff --git a/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannel.java b/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannel.java
index 9b626ece60..436bbf12ac 100644
--- a/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannel.java
+++ b/plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannel.java
@@ -458,12 +458,7 @@ public class SerialChannel extends AbstractNioByteChannel implements DuplexChann
             try {
                 doBeginRead();
             } catch (final Exception e) {
-                invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        pipeline().fireExceptionCaught(e);
-                    }
-                });
+                invokeLater(() -> pipeline().fireExceptionCaught(e));
                 close(voidPromise());
             }
         }
diff --git a/plc4j/transports/socketcan/src/main/java/org/apache/plc4x/java/transport/socketcan/SocketCANTransport.java b/plc4j/transports/socketcan/src/main/java/org/apache/plc4x/java/transport/socketcan/SocketCANTransport.java
index 1aa5cf4fae..433fa839a0 100644
--- a/plc4j/transports/socketcan/src/main/java/org/apache/plc4x/java/transport/socketcan/SocketCANTransport.java
+++ b/plc4j/transports/socketcan/src/main/java/org/apache/plc4x/java/transport/socketcan/SocketCANTransport.java
@@ -76,34 +76,29 @@ public class SocketCANTransport implements CANTransport<SocketCANFrame> {
 
     @Override
     public Function<SocketCANFrame, FrameData> adapter() {
-        return new Function<SocketCANFrame, FrameData>() {
+        return frame -> new FrameData() {
             @Override
-            public FrameData apply(SocketCANFrame frame) {
-                return new FrameData() {
-                    @Override
-                    public int getNodeId() {
-                        return frame.getIdentifier();
-                    }
-
-                    @Override
-                    public int getDataLength() {
-                        return frame.getData().length;
-                    }
-
-                    @Override
-                    public byte[] getData() {
-                        return frame.getData();
-                    }
-
-                    @Override
-                    public <T extends Message> T read(MessageInput<T> input, Object... args) {
-                        try {
-                            return input.parse(new ReadBufferByteBased(frame.getData(), ByteOrder.LITTLE_ENDIAN), args);
-                        } catch (ParseException e) {
-                            throw new PlcRuntimeException(e);
-                        }
-                    }
-                };
+            public int getNodeId() {
+                return frame.getIdentifier();
+            }
+
+            @Override
+            public int getDataLength() {
+                return frame.getData().length;
+            }
+
+            @Override
+            public byte[] getData() {
+                return frame.getData();
+            }
+
+            @Override
+            public <T extends Message> T read(MessageInput<T> input, Object... args) {
+                try {
+                    return input.parse(new ReadBufferByteBased(frame.getData(), ByteOrder.LITTLE_ENDIAN), args);
+                } catch (ParseException e) {
+                    throw new PlcRuntimeException(e);
+                }
             }
         };
     }
diff --git a/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedChannel.java b/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedChannel.java
index 40dccfd9ea..14b11670c9 100644
--- a/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedChannel.java
+++ b/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedChannel.java
@@ -62,12 +62,7 @@ public class Plc4xEmbeddedChannel extends AbstractChannel implements EventLoopPr
     private static final ChannelMetadata METADATA_DISCONNECT = new ChannelMetadata(true);
 
     private final Plc4xEmbeddedEventLoop loop = new Plc4xEmbeddedEventLoop();
-    private final ChannelFutureListener recordExceptionListener = new ChannelFutureListener() {
-        @Override
-        public void operationComplete(ChannelFuture future) throws Exception {
-            recordException(future);
-        }
-    };
+    private final ChannelFutureListener recordExceptionListener = this::recordException;
 
     private final ChannelMetadata metadata;
     private final ChannelConfig config;
@@ -221,11 +216,11 @@ public class Plc4xEmbeddedChannel extends AbstractChannel implements EventLoopPr
     private void setup(boolean register, final ChannelHandler... handlers) {
         ObjectUtil.checkNotNull(handlers, "handlers");
         ChannelPipeline p = pipeline();
-        p.addLast(new ChannelInitializer<Channel>() {
+        p.addLast(new ChannelInitializer<>() {
             @Override
             protected void initChannel(Channel ch) throws Exception {
                 ChannelPipeline pipeline = ch.pipeline();
-                for (ChannelHandler h: handlers) {
+                for (ChannelHandler h : handlers) {
                     if (h == null) {
                         break;
                     }
@@ -281,7 +276,7 @@ public class Plc4xEmbeddedChannel extends AbstractChannel implements EventLoopPr
      */
     public Queue<Object> inboundMessages() {
         if (inboundMessages == null) {
-            inboundMessages = new ArrayDeque<Object>();
+            inboundMessages = new ArrayDeque<>();
         }
         return inboundMessages;
     }
@@ -299,7 +294,7 @@ public class Plc4xEmbeddedChannel extends AbstractChannel implements EventLoopPr
      */
     public Queue<Object> outboundMessages() {
         if (outboundMessages == null) {
-            outboundMessages = new ArrayDeque<Object>();
+            outboundMessages = new ArrayDeque<>();
         }
         return outboundMessages;
     }
@@ -424,8 +419,8 @@ public class Plc4xEmbeddedChannel extends AbstractChannel implements EventLoopPr
             flushOutbound0();
 
             int size = futures.size();
-            for (int i = 0; i < size; i++) {
-                ChannelFuture future = (ChannelFuture) futures.get(i);
+            for (Object o : futures) {
+                ChannelFuture future = (ChannelFuture) o;
                 if (future.isDone()) {
                     recordException(future);
                 } else {
diff --git a/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedEventLoop.java b/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedEventLoop.java
index 347b925c95..ebad09f66a 100644
--- a/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedEventLoop.java
+++ b/plc4j/transports/test/src/main/java/io/netty/channel/embedded/Plc4xEmbeddedEventLoop.java
@@ -30,7 +30,7 @@ import java.util.concurrent.TimeUnit;
 
 final class Plc4xEmbeddedEventLoop extends AbstractScheduledEventExecutor implements EventLoop {
 
-    private final Queue<Runnable> tasks = new ArrayDeque<Runnable>(2);
+    private final Queue<Runnable> tasks = new ArrayDeque<>(2);
     private final Promise<?> terminationFuture = new DefaultPromise<Void>(GlobalEventExecutor.INSTANCE);
 
     @Override
diff --git a/plc4j/transports/virtualcan/src/main/java/org/apache/plc4x/java/transport/virtualcan/VirtualCANTransport.java b/plc4j/transports/virtualcan/src/main/java/org/apache/plc4x/java/transport/virtualcan/VirtualCANTransport.java
index 81b808b3cd..f7ac12bf38 100644
--- a/plc4j/transports/virtualcan/src/main/java/org/apache/plc4x/java/transport/virtualcan/VirtualCANTransport.java
+++ b/plc4j/transports/virtualcan/src/main/java/org/apache/plc4x/java/transport/virtualcan/VirtualCANTransport.java
@@ -45,12 +45,7 @@ public class VirtualCANTransport extends TestTransport implements CANTransport<V
 
     @Override
     public ToIntFunction<ByteBuf> getEstimator() {
-        return new ToIntFunction<ByteBuf>() {
-            @Override
-            public int applyAsInt(ByteBuf value) {
-                return value.getShort(value.readerIndex());
-            }
-        };
+        return value -> value.getShort(value.readerIndex());
     }
 
     @Override
@@ -60,7 +55,7 @@ public class VirtualCANTransport extends TestTransport implements CANTransport<V
 
     @Override
     public CANFrameBuilder<VirtualCANFrame> getTransportFrameBuilder() {
-        return new CANFrameBuilder<VirtualCANFrame>() {
+        return new CANFrameBuilder<>() {
 
             private byte[] data;
             private int nodeId;
@@ -86,34 +81,29 @@ public class VirtualCANTransport extends TestTransport implements CANTransport<V
 
     @Override
     public Function<VirtualCANFrame, FrameData> adapter() {
-        return new Function<VirtualCANFrame, FrameData>() {
+        return frame -> new FrameData() {
+            @Override
+            public int getNodeId() {
+                return frame.getNodeId();
+            }
+
+            @Override
+            public <T extends Message> T read(MessageInput<T> input, Object... args) {
+                try {
+                    return input.parse(new ReadBufferByteBased(getData(), ByteOrder.LITTLE_ENDIAN), args);
+                } catch (ParseException e) {
+                    throw new PlcRuntimeException(e);
+                }
+            }
+
+            @Override
+            public int getDataLength() {
+                return frame.getData().length;
+            }
+
             @Override
-            public FrameData apply(VirtualCANFrame frame) {
-                return new FrameData() {
-                    @Override
-                    public int getNodeId() {
-                        return frame.getNodeId();
-                    }
-
-                    @Override
-                    public <T extends Message> T read(MessageInput<T> input, Object... args) {
-                        try {
-                            return input.parse(new ReadBufferByteBased(getData(), ByteOrder.LITTLE_ENDIAN), args);
-                        } catch (ParseException e) {
-                            throw new PlcRuntimeException(e);
-                        }
-                    }
-
-                    @Override
-                    public int getDataLength() {
-                        return frame.getData().length;
-                    }
-
-                    @Override
-                    public byte[] getData() {
-                        return frame.getData();
-                    }
-                };
+            public byte[] getData() {
+                return frame.getData();
             }
         };
     }
diff --git a/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java
index b9140b29b2..b0f766d61a 100644
--- a/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java
+++ b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java
@@ -2522,14 +2522,12 @@ public class BACnetObjectsDefinitions {
 
     private static void createPropertyTypeCombinationCount() {
         propertyTypeCombinationCount = new HashMap<>();
-        bacNetObjects.forEach(bacNetObject -> {
-            bacNetObject.properties.forEach(bacNetProperty -> {
-                PropertyTypeCombination propertyTypeCombination = new PropertyTypeCombination(bacNetProperty);
-                propertyTypeCombinationCount.putIfAbsent(propertyTypeCombination, 0);
-                int count = propertyTypeCombinationCount.get(propertyTypeCombination);
-                propertyTypeCombinationCount.put(propertyTypeCombination, ++count);
-            });
-        });
+        bacNetObjects.forEach(bacNetObject -> bacNetObject.properties.forEach(bacNetProperty -> {
+            PropertyTypeCombination propertyTypeCombination = new PropertyTypeCombination(bacNetProperty);
+            propertyTypeCombinationCount.putIfAbsent(propertyTypeCombination, 0);
+            int count = propertyTypeCombinationCount.get(propertyTypeCombination);
+            propertyTypeCombinationCount.put(propertyTypeCombination, ++count);
+        }));
     }
 
     static void createPropertyIdToPropertyNameMap() {
diff --git a/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java
index f87ee31d60..df418b9011 100644
--- a/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java
+++ b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java
@@ -213,102 +213,100 @@ public class ObjectPropertyDeDuplicationTest {
             .sorted(Map.Entry.comparingByKey())
             .forEach(propertyTypeCombinationToObjectNameEntry -> {
                 PropertyTypeCombination propertyTypeCombination = propertyTypeCombinationToObjectNameEntry.getKey();
-                propertyTypeCombinationToObjectNameEntry.getValue().forEach(bacNetObjectName -> {
-                        tests.add(DynamicContainer.dynamicContainer(propertyTypeCombination + " for " + bacNetObjectName, () -> {
-                            Collection<DynamicNode> nodes = new LinkedList<>();
-                            String propertyIdentifier = propertyTypeCombination.propertyIdentifier;
-                            String propertyDataType = propertyTypeCombination.propertyDataType;
-                            Set<String> listOfTypes = propertyToPropertyTypesMaps.get(propertyIdentifier);
-                            final TypeDefinition typeDefinition;
-                            if (listOfTypes.size() < 2) {
-                                String searchedTypeName = "BACnetConstructedData" + propertyIdentifier;
-                                searchedTypeName = searchedTypeName.replaceAll("_", "");
-                                switch (searchedTypeName) {
-                                    case "BACnetConstructedDataOutofService":
-                                        // Typo in spec again
-                                        searchedTypeName = "BACnetConstructedDataOutOfService";
-                                        break;
-                                }
-                                typeDefinition = typeDefinitions.get(searchedTypeName);
-                                assertNotNull(typeDefinition, "shared " + searchedTypeName + " not found (" + propertyTypeCombination + ")");
-                            } else {
-                                boolean isThisCombinationTheMostCommon = true;
-                                Integer numberOfOccurences = propertyTypeCombinationCount.get(propertyTypeCombination);
-                                for (String otherType : listOfTypes) {
-                                    if (otherType.equals(propertyTypeCombination.propertyDataType)) continue;
-                                    Integer otherOccurence = propertyTypeCombinationCount.get(new PropertyTypeCombination(propertyIdentifier, otherType));
-                                    if (otherOccurence >= numberOfOccurences) {
-                                        isThisCombinationTheMostCommon = false;
-                                        break;
-                                    }
-                                }
-                                if (isThisCombinationTheMostCommon) {
-                                    // This is the case when there are more than 1 occurrence of this propertyIdentifier with one type and this combination is the one with the most occurrences
-                                    String searchedTypeName = "BACnetConstructedData" + propertyIdentifier;
-                                    searchedTypeName = searchedTypeName.replaceAll("_", "");
-                                    typeDefinition = typeDefinitions.get(searchedTypeName);
-                                    assertNotNull(typeDefinition, "shared " + searchedTypeName + " not found (most occurring case with " + numberOfOccurences + " occurrences)");
-                                } else {
-                                    // This is the case when there are more than 1 occurrence of this propertyIdentifier with one type
-                                    String searchedTypeName = "BACnetConstructedData" + bacNetObjectName + propertyIdentifier;
-                                    searchedTypeName = searchedTypeName.replaceAll("[_ ]", "");
-                                    Pattern pattern = Pattern.compile("-([a-z])");
-                                    Matcher matcher = pattern.matcher(searchedTypeName);
-                                    StringBuilder result = new StringBuilder();
-                                    while (matcher.find()) {
-                                        matcher.appendReplacement(result, matcher.group(1).toUpperCase());
-                                    }
-                                    matcher.appendTail(result);
-                                    searchedTypeName = result.toString();
-                                    typeDefinition = typeDefinitions.get(searchedTypeName);
-                                    assertNotNull(typeDefinitions.get(searchedTypeName), "dedicated " + searchedTypeName + " not found (this occurrence: " + numberOfOccurences + ", other variants " + listOfTypes + ").");
-                                }
+                propertyTypeCombinationToObjectNameEntry.getValue().forEach(bacNetObjectName -> tests.add(DynamicContainer.dynamicContainer(propertyTypeCombination + " for " + bacNetObjectName, () -> {
+                    Collection<DynamicNode> nodes = new LinkedList<>();
+                    String propertyIdentifier = propertyTypeCombination.propertyIdentifier;
+                    String propertyDataType = propertyTypeCombination.propertyDataType;
+                    Set<String> listOfTypes = propertyToPropertyTypesMaps.get(propertyIdentifier);
+                    final TypeDefinition typeDefinition;
+                    if (listOfTypes.size() < 2) {
+                        String searchedTypeName = "BACnetConstructedData" + propertyIdentifier;
+                        searchedTypeName = searchedTypeName.replaceAll("_", "");
+                        switch (searchedTypeName) {
+                            case "BACnetConstructedDataOutofService":
+                                // Typo in spec again
+                                searchedTypeName = "BACnetConstructedDataOutOfService";
+                                break;
+                        }
+                        typeDefinition = typeDefinitions.get(searchedTypeName);
+                        assertNotNull(typeDefinition, "shared " + searchedTypeName + " not found (" + propertyTypeCombination + ")");
+                    } else {
+                        boolean isThisCombinationTheMostCommon = true;
+                        Integer numberOfOccurences = propertyTypeCombinationCount.get(propertyTypeCombination);
+                        for (String otherType : listOfTypes) {
+                            if (otherType.equals(propertyTypeCombination.propertyDataType)) continue;
+                            Integer otherOccurence = propertyTypeCombinationCount.get(new PropertyTypeCombination(propertyIdentifier, otherType));
+                            if (otherOccurence >= numberOfOccurences) {
+                                isThisCombinationTheMostCommon = false;
+                                break;
                             }
-                            assertTrue(typeDefinition.isComplexTypeDefinition(), typeDefinition.getName() + " should be complex");
-                            ComplexTypeDefinition complexTypeDefinition = typeDefinition.asComplexTypeDefinition().orElseThrow();
-                            if (propertyDataType.startsWith(bacnetArrayIdentifierPrefix)) {
-                                nodes.add(
-                                    DynamicTest.dynamicTest("Check array count for " + propertyTypeCombination + " for " + typeDefinition.getName(),
-                                        () -> {
-                                            Optional<PropertyField> numberOfDataElements = complexTypeDefinition.getPropertyFieldByName("numberOfDataElements");
-                                            assertTrue(numberOfDataElements.isPresent(), "field numberOfDataElements for " + typeDefinition.getName() + " not found");
-                                        })
-                                );
-                                if (propertyDataType.startsWith("BACnetARRAY[") && !propertyDataType.startsWith("BACnetARRAY[N")) {
-                                    nodes.add(
-                                        DynamicTest.dynamicTest("Check bounds validation for " + propertyTypeCombination + " for " + typeDefinition.getName(),
-                                            () -> {
-                                                Pattern pattern = Pattern.compile("BACnetARRAY\\[(\\d+)]");
-                                                Matcher matcher = pattern.matcher(propertyDataType);
-                                                assertTrue(matcher.find(), "we should find the index");
-                                                String index = matcher.group(1);
-                                                Optional<ValidationField> validationField = complexTypeDefinition.getFields().stream()
-                                                    .filter(Field::isValidationField)
-                                                    .map(ValidationField.class::cast)
-                                                    .filter(foundValidationField ->
-                                                        foundValidationField.getValidationExpression().stringRepresentation().contains("COUNT")
-                                                            && foundValidationField.getValidationExpression().stringRepresentation().contains("arrayIndexArgument")
-                                                            && foundValidationField.getValidationExpression().stringRepresentation().contains(index)
-                                                    )
-                                                    .findAny();
-                                                assertTrue(validationField.isPresent(), "No validation for length of " + index + " found for " + typeDefinition.getName());
-                                            })
-                                    );
-
-                                }
-                            } else if (propertyDataType.startsWith(bacnetListIdentifierPrefix))
-                                nodes.add(
-                                    DynamicTest.dynamicTest("Check no array count for " + propertyTypeCombination + " for " + typeDefinition.getName(),
-                                        () -> {
-                                            Optional<PropertyField> numberOfDataElements = complexTypeDefinition.getPropertyFieldByName("numberOfDataElements");
-                                            assertFalse(numberOfDataElements.isPresent(), "field numberOfDataElements for " + typeDefinition.getName() + " found");
-                                        })
-                                );
-                            else
-                                throw new IllegalStateException("how on earth did we got " + propertyDataType + " here???");
-                            return nodes.iterator();
-                        }));
+                        }
+                        if (isThisCombinationTheMostCommon) {
+                            // This is the case when there are more than 1 occurrence of this propertyIdentifier with one type and this combination is the one with the most occurrences
+                            String searchedTypeName = "BACnetConstructedData" + propertyIdentifier;
+                            searchedTypeName = searchedTypeName.replaceAll("_", "");
+                            typeDefinition = typeDefinitions.get(searchedTypeName);
+                            assertNotNull(typeDefinition, "shared " + searchedTypeName + " not found (most occurring case with " + numberOfOccurences + " occurrences)");
+                        } else {
+                            // This is the case when there are more than 1 occurrence of this propertyIdentifier with one type
+                            String searchedTypeName = "BACnetConstructedData" + bacNetObjectName + propertyIdentifier;
+                            searchedTypeName = searchedTypeName.replaceAll("[_ ]", "");
+                            Pattern pattern = Pattern.compile("-([a-z])");
+                            Matcher matcher = pattern.matcher(searchedTypeName);
+                            StringBuilder result = new StringBuilder();
+                            while (matcher.find()) {
+                                matcher.appendReplacement(result, matcher.group(1).toUpperCase());
+                            }
+                            matcher.appendTail(result);
+                            searchedTypeName = result.toString();
+                            typeDefinition = typeDefinitions.get(searchedTypeName);
+                            assertNotNull(typeDefinitions.get(searchedTypeName), "dedicated " + searchedTypeName + " not found (this occurrence: " + numberOfOccurences + ", other variants " + listOfTypes + ").");
+                        }
                     }
+                    assertTrue(typeDefinition.isComplexTypeDefinition(), typeDefinition.getName() + " should be complex");
+                    ComplexTypeDefinition complexTypeDefinition = typeDefinition.asComplexTypeDefinition().orElseThrow();
+                    if (propertyDataType.startsWith(bacnetArrayIdentifierPrefix)) {
+                        nodes.add(
+                            DynamicTest.dynamicTest("Check array count for " + propertyTypeCombination + " for " + typeDefinition.getName(),
+                                () -> {
+                                    Optional<PropertyField> numberOfDataElements = complexTypeDefinition.getPropertyFieldByName("numberOfDataElements");
+                                    assertTrue(numberOfDataElements.isPresent(), "field numberOfDataElements for " + typeDefinition.getName() + " not found");
+                                })
+                        );
+                        if (propertyDataType.startsWith("BACnetARRAY[") && !propertyDataType.startsWith("BACnetARRAY[N")) {
+                            nodes.add(
+                                DynamicTest.dynamicTest("Check bounds validation for " + propertyTypeCombination + " for " + typeDefinition.getName(),
+                                    () -> {
+                                        Pattern pattern = Pattern.compile("BACnetARRAY\\[(\\d+)]");
+                                        Matcher matcher = pattern.matcher(propertyDataType);
+                                        assertTrue(matcher.find(), "we should find the index");
+                                        String index = matcher.group(1);
+                                        Optional<ValidationField> validationField = complexTypeDefinition.getFields().stream()
+                                            .filter(Field::isValidationField)
+                                            .map(ValidationField.class::cast)
+                                            .filter(foundValidationField ->
+                                                foundValidationField.getValidationExpression().stringRepresentation().contains("COUNT")
+                                                    && foundValidationField.getValidationExpression().stringRepresentation().contains("arrayIndexArgument")
+                                                    && foundValidationField.getValidationExpression().stringRepresentation().contains(index)
+                                            )
+                                            .findAny();
+                                        assertTrue(validationField.isPresent(), "No validation for length of " + index + " found for " + typeDefinition.getName());
+                                    })
+                            );
+
+                        }
+                    } else if (propertyDataType.startsWith(bacnetListIdentifierPrefix))
+                        nodes.add(
+                            DynamicTest.dynamicTest("Check no array count for " + propertyTypeCombination + " for " + typeDefinition.getName(),
+                                () -> {
+                                    Optional<PropertyField> numberOfDataElements = complexTypeDefinition.getPropertyFieldByName("numberOfDataElements");
+                                    assertFalse(numberOfDataElements.isPresent(), "field numberOfDataElements for " + typeDefinition.getName() + " found");
+                                })
+                        );
+                    else
+                        throw new IllegalStateException("how on earth did we got " + propertyDataType + " here???");
+                    return nodes.iterator();
+                }))
                 );
             });
         return tests;
@@ -327,11 +325,7 @@ public class ObjectPropertyDeDuplicationTest {
             .filter(discriminatedComplexTypeDefinition -> discriminatedComplexTypeDefinition.getParentType().isPresent())
             .filter(discriminatedComplexTypeDefinition -> discriminatedComplexTypeDefinition.getParentType().get() == baCnetConstructedData)
             .filter(discriminatedComplexTypeDefinition -> discriminatedComplexTypeDefinition.getPropertyFields().stream().noneMatch(FieldConversions::isArrayField))
-            .forEach(discriminatedComplexTypeDefinition -> {
-                tests.add(DynamicTest.dynamicTest("Test for actualValue on " + discriminatedComplexTypeDefinition.getName(), () -> {
-                    assertTrue(discriminatedComplexTypeDefinition.getNamedFieldByName("actualValue").isPresent());
-                }));
-            });
+            .forEach(discriminatedComplexTypeDefinition -> tests.add(DynamicTest.dynamicTest("Test for actualValue on " + discriminatedComplexTypeDefinition.getName(), () -> assertTrue(discriminatedComplexTypeDefinition.getNamedFieldByName("actualValue").isPresent()))));
         return tests;
     }
 
@@ -359,9 +353,7 @@ public class ObjectPropertyDeDuplicationTest {
             LinkedList<Map.Entry<PropertyTypeCombination, List<String>>> listOfCombinationEntries = new LinkedList<>(propertyTypeCombinationToObjectNameMap.entrySet());
             listOfCombinationEntries.sort(Comparator.comparingInt(v -> v.getValue().size()));
             Collections.reverse(listOfCombinationEntries);
-            listOfCombinationEntries.forEach(propertyTypeCombinationListEntry -> {
-                LOGGER.info("{} appearance of {} in {}", propertyTypeCombinationListEntry.getValue().size(), propertyTypeCombinationListEntry.getKey(), propertyTypeCombinationListEntry.getValue());
-            });
+            listOfCombinationEntries.forEach(propertyTypeCombinationListEntry -> LOGGER.info("{} appearance of {} in {}", propertyTypeCombinationListEntry.getValue().size(), propertyTypeCombinationListEntry.getKey(), propertyTypeCombinationListEntry.getValue()));
         }
 
         @Test