### Question:
GenericGermanyKnxProjectCharacteristics extends KnxProjectCharacteristics { boolean isMatchingStatus(GroupAddress candidate, GroupAddress primarySwitchGroupAddress) { float prefixMatchRatio = calculatePrefixMatchRatio(candidate.getName(), primarySwitchGroupAddress.getName()); if (prefixMatchRatio <= 0.6F) { LOG.debug("Prefix mismatch for candidate {} for primary {} (match {})", candidate, primarySwitchGroupAddress, prefixMatchRatio); return false; } if ((candidate.getDatapointType() == null) || candidate.getDatapointType().isBlank()) { LOG.warn("Accepting candidate with missing DPT {}", candidate); return true; } return candidate.getDatapointType().startsWith("1."); }  @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 isMatchingStatus() throws Exception { assertTrue( characteristics.isMatchingStatus(gaWithName("Licht Küche Status"), gaWithName("Licht Küche Ein/Aus"))); }