targetApplicableElement, relation);
} else
if (element instanceof Goal) {
checkedElements.put(element, LogicalValues.TRUE);
ApplicableElement applicableElement = createAndAddApplicableElement(element);
if (targetApplicableElement != null && relation != null) {
cacheManager.addRelation(applicableElement,
targetApplicableElement, relation);
}
checkRelations(element, applicableElement);
} else { // instanceof ConstrainedElement
if (!elementTypeIsIncluded(element))
return;
LogicalValues isApplicable = applicabilityTester
.evaluatePrecondition((ConstrainedElement) element);
if (isApplicable == LogicalValues.TRUE) {
ApplicableElement applicableElement = createAndAddApplicableElement(element);
cacheManager.addRelation(applicableElement,
targetApplicableElement, relation);
checkRelations(element, applicableElement);
} else if (isApplicable == LogicalValues.FALSE) {
// ignore source Element / Relation