### Question:
GenericGermanyKnxProjectCharacteristics extends KnxProjectCharacteristics { @Override public boolean isLight(GroupAddress ga) { if ((null == ga.getName()) || ga.getName().isBlank()) { LOG.warn("GA with blank/empty name should be fixed: {}", ga); return false; } GroupAddressDocument doc = groupAddressIndex.get(ga); if (doc == null) { LOG.warn("No index available for GA: {}", ga); return false; } return nameContainsTerms(doc, lightIdentifyingTerms) || nameStartsWith(ga, lightIdentifyingPrefixes) || descriptionContainsTag(ga, "[Licht]"); }  @Override GroupAddress findMatchingBrightnessGroupAddress(GroupAddress primarySwitchGroupAddress); @Override GroupAddress findMatchingBrightnessStatusGroupAddress(GroupAddress primarySwitchGroupAddress); @Override GroupAddress findMatchingDimGroupAddress(GroupAddress primarySwitchGroupAddress); @Override GroupAddress findMatchingStatusGroupAddress(GroupAddress primarySwitchGroupAddress); @Override boolean isLight(GroupAddress ga); @Override boolean isPrimarySwitch(GroupAddress ga); @Override void learn(List<GroupAddress> groupAddresses);  }### Answer:
@Test public void isLight() throws Exception { assertTrue(characteristics.isLight(gaWithName("Licht"))); assertTrue(characteristics.isLight(gaWithName("LiChT"))); assertTrue(characteristics.isLight(gaWithName("LICHT"))); assertTrue(characteristics.isLight(gaWithName("licht"))); assertTrue(characteristics.isLight(gaWithName("Lichter"))); assertTrue(characteristics.isLight(gaWithName("Spiegellicht"))); assertTrue(characteristics.isLight(gaWithName("Leuchte"))); assertTrue(characteristics.isLight(gaWithName("Deckenleuchte"))); assertTrue(characteristics.isLight(gaWithName("indirekte Beleuchtung"))); assertTrue(characteristics.isLight(gaWithName("Lampe"))); assertTrue(characteristics.isLight(gaWithName("Wandlampe"))); assertTrue(characteristics.isLight(gaWithName("Lampe Wohnzimmer"))); assertTrue(characteristics.isLight(gaWithName("Strahler Decke"))); assertTrue(characteristics.isLight(gaWithName("Einbaustrahler XYZ"))); assertTrue(characteristics.isLight(gaWithName("Spots XYZ"))); assertTrue(characteristics.isLight(gaWithName("L_EG01_01"))); assertTrue(characteristics.isLight(gaWithName("LD_EG01_01"))); assertTrue(characteristics.isLight(gaWithName("LDA_EG01_01"))); assertTrue(characteristics.isLight(gaWithNameAndDescription("XYZ", "blah ... [Licht]..."))); }