TCGEquivalenceClass oEqClass = ExpressionConverter.getEquivalenceClassForRightSideOfExpression(in_oExpression);
if(oEqClass != null && in_oExpression instanceof TCGOCLOperation)
{
if(((TCGOCLOperation)in_oExpression).getLeft() instanceof TCGOCLAtom)
{
TCGOCLAtom oAtom = (TCGOCLAtom)((TCGOCLOperation)in_oExpression).getLeft();
// interesting element is a variable - get all the necessary values
if(getVariable(oAtom.getElement()) != null)
{
TCGParameter oCorrespondingParam = getCorrespondingParameterCopyInNode((TCGParameter)oAtom.getTcgParameter(), in_oBackTrackStartNode);
if(!DomainHelper.adaptDomain(oCorrespondingParam, oEqClass))
return false;
}
// interesting value is passive dependent -> find matching active dependent and go on ...
else if(oAtom.getElement() instanceof Property)
{
if(in_oBackTrackStartNode.getIncomingTransitions().size() == 1)
{
Property oProperty = (Property)oAtom.getElement();
TCGTransition oTransition = findNextPrecedingTransition(in_oCurrentBackTrackNode.getIncomingTransitions().get(0), oProperty);
if(oTransition != null) // is there a next preceding transition ?
{
// TODO ### future work: sort elements in expressions only if needed?
ArrayList<TCGOCLExpression> colNewExpressions = new ArrayList<TCGOCLExpression>();