| // RUN: %clang_cc1 -fsyntax-only -verify %s | 
 | // expected-no-diagnostics | 
 | typedef signed char BOOL; | 
 | typedef struct _NSZone NSZone; | 
 |  | 
 | @protocol NSObject | 
 | - (BOOL)isEqual:(id)object; | 
 | @end | 
 |  | 
 | @protocol NSCopying | 
 | - (id)copyWithZone:(NSZone *)zone; | 
 | @end | 
 |  | 
 | @interface NSObject <NSObject> {} | 
 | @end | 
 |  | 
 | @class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray; | 
 |  | 
 | @interface SCMObject : NSObject <NSCopying> {} | 
 |   @property(assign) SCMObject *__attribute__((objc_gc(weak))) parent; | 
 | @end | 
 |  | 
 | @interface SCMNode : SCMObject | 
 | { | 
 |   NSString *_name; | 
 | } | 
 | @property(copy) NSString *name; | 
 | @end | 
 |  | 
 | @implementation SCMNode | 
 |   @synthesize name = _name; | 
 |   - (void) setParent:(SCMObject *__attribute__((objc_gc(weak)))) inParent { | 
 |     super.parent = inParent; | 
 |   } | 
 | @end |