//#include <objc/Object.h>

@interface TheMethod
-(double)quux;
+(double)quux;
@end

@interface NormalClass
@end

@class ForwardClass;

@protocol NormalProtocol
@end

@protocol ForwardProtocol;

typedef void *id;

NormalClass *normalClass;
ForwardClass *forwardClass;
id<NormalProtocol> normalProtocol;
id<ForwardProtocol> forwardProtocol;

NormalClass<NormalProtocol> *n_n;
ForwardClass<ForwardProtocol> *f_f;
ForwardClass<NormalProtocol> *f_n;
NormalClass<ForwardProtocol> *n_f;

int main(int argc, char **argv)
{
	double d;

/*
with objc/Object.h:           3.4  3.2  3.0.1  2.95.2
                                                        without objc/Object.h: 3.4  3.2  3.0.1  2.95.2
*/

	d=[NormalClass quux];    // x		x	  x		x									     x  	x     x		 x
	d=[ForwardClass quux];   //		x	  x		x										   	x     x      x
	d=[normalClass quux];    // x		x	  x		x										  x  	x     x		 x
	d=[forwardClass quux];   // x		x	  x		x										  x  	x     x      x
	d=[normalProtocol quux]; // x																  x
	d=[forwardProtocol quux];// x         na     na										  x			na     na
	d=[n_n quux];				 // x		x	  x		x										  x  	x	   x      x
	d=[f_n quux];				 // x		x	  x		x										  x  	x	   x	    x
	d=[n_f quux];				 // x    x    na     na										  x  	x   	na		 na
	d=[f_f quux];				 // x    x    na     na										  x  	x   	na		 na

	return 0;
}

