The stack overflow was happening in FeatureImpl::getTypes because the traversal of a Conjugation relationship was not checking visitedFeatures first. The necessary check has now been added.
This PR also adds a KerML validation check that a Classifier directly or indirectly specializes the correct base type. This catches vacuous specialization or conjugation circularities. (Such circularities were already being caught for Features by the check that they have at least one type.)
The stack overflow was happening in
FeatureImpl::getTypes
because the traversal of a Conjugation relationship was not checkingvisitedFeatures
first. The necessary check has now been added.This PR also adds a KerML validation check that a Classifier directly or indirectly specializes the correct base type. This catches vacuous specialization or conjugation circularities. (Such circularities were already being caught for Features by the check that they have at least one type.)