public Object getProperty(Interpreter interp, ST self, Object o, Object property, String propertyName)
throws STNoSuchPropertyException
{
Object value = null;
Class c = o.getClass();
if ( property==null ) {
return throwNoSuchProperty(c.getName() + "." + propertyName);
}
Member member = classAndPropertyToMemberCache.get(c, propertyName);
if ( member!=null ) {
try {
Class memberClass = member.getClass();
if ( memberClass == Method.class ) return ((Method)member).invoke(o);
if ( memberClass == Field.class ) return ((Field)member).get(o);
}
catch (Exception e) {
throwNoSuchProperty(c.getName() + "." + propertyName);
}
}
return lookupMethod(o, propertyName, value, c);
}