@interface Array -count; -lastObject; @end @interface Object @end @static entity waypoint_thinker; @static Array *waypoint_queue; void foo (void) { if ([waypoint_queue count] && (waypoint_thinker.@this = [waypoint_queue lastObject])) { waypoint_thinker = nil; // just to deconfuse the dot graphs } } int main () { return 0; // test succeeds if compile succeeds } id obj_msgSend (id receiver, SEL op, ...) = #0; void __obj_exec_class (struct obj_module *msg) = #0; @implementation Object @end @implementation Array -count { return self; } -lastObject { return nil; } @end