Expression owner = exp.getOwner();
owner.accept(this);
if (valueMode) {
// Introspect on lastValue (which should be a JDO object)
InterfaceInvocationHandler handler = InterfaceInvocationHandler.getHandler(lastValue);
Class returnType = exp.getType();
ClassMapping returnTypeMapping = null;
if (ClassMapping.isUserType(returnType)) {
returnTypeMapping = modelMapping.getClassMapping(returnType);
}
lastValue = handler.invokeGet(exp.getName(), returnTypeMapping, exp.getType());
} else {
// If we're hanging from another field, interpolate
// the table join
if (lastRelationship != null) {
checkJoin(owner);