private PropertyCallExp<EClassifier, EStructuralFeature> createPropertyCallExp(
SimpleNameCS simpleNameCS,
Environment<EPackage, EClassifier, EOperation, EStructuralFeature,
EEnumLiteral, EParameter, EObject,
CallOperationAction, SendSignalAction, Constraint,
EClass, EObject> env,
OCLExpression<EClassifier> source, EClassifier owner, String simpleName, EStructuralFeature property) {
PropertyCallExp<EClassifier, EStructuralFeature> result;
TRACE("variableExpCS", "Property: " + simpleName);
result = oclFactory.createPropertyCallExp();
initASTMapping(env, result, simpleNameCS, null);
result.setReferredProperty(property);
result.setType(getPropertyType(simpleNameCS, env, owner, property));
if (source != null) {
result.setSource(source);
} else {
Variable<EClassifier, EParameter> implicitSource = env
.lookupImplicitSourceForProperty(simpleName);
VariableExp<EClassifier, EParameter> src = createVariableExp(env, simpleNameCS,
implicitSource);
result.setSource(src);
}
initPropertyPositions(result, simpleNameCS);
return result;
}