| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result | 
 | // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t | 
 | // RUN: diff %t %s.result | 
 |  | 
 | #include "Common.h" | 
 |  | 
 | @interface A : NSObject { | 
 | @package | 
 |     id object; | 
 | } | 
 | @end | 
 |  | 
 | @interface B : NSObject { | 
 |   id _prop; | 
 |   xpc_object_t _xpc_prop; | 
 | } | 
 | - (BOOL)containsSelf:(A*)a; | 
 | @property (strong) id prop; | 
 | @property (strong) xpc_object_t xpc_prop; | 
 | @end | 
 |  | 
 | @implementation A | 
 | @end | 
 |  | 
 | @implementation B | 
 | - (BOOL)containsSelf:(A*)a { | 
 |     return a->object == self; | 
 | } | 
 |  | 
 | -(id) prop { | 
 |   return _prop; | 
 | } | 
 | -(void) setProp:(id) newVal { | 
 |   _prop = newVal; | 
 | } | 
 | -(void) setProp2:(CFTypeRef) newVal { | 
 |   _prop = (id)CFBridgingRelease(CFRetain(newVal)); | 
 | } | 
 |  | 
 | -(id) xpc_prop { | 
 |   return _xpc_prop; | 
 | } | 
 | -(void) setXpc_prop:(xpc_object_t) newVal { | 
 |   _xpc_prop = newVal; | 
 | } | 
 | @end | 
 |  | 
 | void NSLog(id, ...); | 
 |  | 
 | int main (int argc, const char * argv[]) { | 
 |     @autoreleasepool { | 
 |         A *a = [A new]; | 
 |         B *b = [B new]; | 
 |         NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO"); | 
 |     } | 
 |     return 0; | 
 | } | 
 |  | 
 | void test(A *prevVal, A *newVal) { | 
 |   prevVal = newVal; | 
 | } | 
 |  | 
 | id test2(A* val) { | 
 |   return val; | 
 | } | 
 |  | 
 | id test3() { | 
 |   id a = [[A alloc] init]; | 
 | } |