
@protocol foo;
@protocol foo2
@end
@class itf;

// Expressions
typedef typeof(@"foo" "bar") objc_string;
typedef typeof(@encode(int)) objc_encode;
typedef typeof(@protocol(foo2)) objc_protocol;
typedef typeof(@selector(noArgs)) objc_selector_noArgs;
typedef typeof(@selector(oneArg:)) objc_selector_oneArg;
typedef typeof(@selector(foo:bar:)) objc_selector_twoArg;


// Types.
typedef typeof(id<foo>) objc_id_protocol_ty;

typedef typeof(itf*) objc_interface_ty;
typedef typeof(itf<foo>*) objc_qual_interface_ty;

@interface PP
@property (assign) id prop;
@end

static inline id getPseudoObject(PP *p) {
    return p.prop;
}
