in code-generation/types-base/src/main/java/org/apache/plc4x/plugins/codegenerator/types/definitions/ComplexTypeDefinition.java [181:200]
default boolean isDiscriminatorFieldInThisTypeOrAnyChild(String discriminatorName) {
// Check if there's any expression in this type's typeSwitch, that uses
// the given property name as variable (aka being a discriminator)
boolean isDiscriminatorName = getSwitchField()
.map(SwitchField::getDiscriminatorExpressions)
.stream()
.flatMap(List::stream)
.map(Term::getDiscriminatorName)
.anyMatch(curDiscriminatorName -> curDiscriminatorName.equals(discriminatorName));
if (isDiscriminatorName) {
return true;
}
// If we've checked this level, check any children.
return getSwitchField()
.map(SwitchField::getCases)
.stream()
.flatMap(List::stream)
.anyMatch(subType -> subType.isDiscriminatorFieldInThisTypeOrAnyChild(discriminatorName));
}