}
/*
* The last computed source of the navigation is used to look for the final property
*/
PropertyDefinition property = source.getPropertyDefinition(expression.attr);
if (property == null) {
error("Invalid substitute expression "+value+ ", invalid property "+quoted(expression.attr)+" for component "+target.getName());
return null;
}
/*
* Infer the type of the expression from the type of the property, and the multiplicity of the navigation
*/
propertyType = typeParser.parse(property.getType());
if (propertyType == null) {
error("Invalid substitute expression "+value+ " , invalid type "+property.getType()+" for property "+property.getName());
return null;
}
}