Compiler projects using llvm
// RUN: %clang_cc1 -fsyntax-only -verify %s
// expected-no-diagnostics
typedef signed char BOOL;
@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;

@protocol NSObject
- (BOOL) isEqual:(id) object;
@end

@protocol NSCoding
- (void) encodeWithCoder:(NSCoder *) aCoder;
@end

@interface NSObject < NSObject > {} @end

typedef float CGFloat;

@interface NSResponder:NSObject < NSCoding > {} @end

@class XCElementView;

typedef struct _XCElementInset {} XCElementInset;

@protocol XCElementP < NSObject >
-(id) vertical;
@end

@protocol XCElementDisplayDelegateP;
@protocol XCElementTabMarkerP;

typedef NSObject < XCElementTabMarkerP > XCElementTabMarker;

@protocol XCElementTabberP < XCElementP >
-(void) setMarker:(XCElementTabMarker *) marker;
@end

typedef NSObject < XCElementTabberP > XCElementTabber;

@protocol XCElementTabMarkerP < NSObject >
@property(nonatomic)
BOOL variableSized;
@end

@protocol XCElementJustifierP < XCElementP >
-(void) setHJustification:(CGFloat) hJust;
@end

typedef NSObject < XCElementJustifierP > XCElementJustifier;
@interface XCElementImp:NSObject < XCElementP > {}
@end

@class XCElementImp;

@interface XCElementTabberImp:XCElementImp < XCElementTabberP > {
	XCElementTabMarker *_marker;
}
@end

@implementation XCElementTabberImp 
- (void) setMarker:(XCElementTabMarker *) marker {
  if (_marker && _marker.variableSized) {
  }
}
- (id)vertical { return self; }
- (BOOL)isEqual:x { return 1; }
@end