
#include 'Moo.moo'.

#################################################################
## MAIN
#################################################################

## TODO: use #define to define a class or use #class to define a class.
##       use #extend to extend a class
##       using #class for both feels confusing.

extend Apex
{

}

extend SmallInteger
{
	method getTrue: anInteger
	{
		^anInteger + 9999.
	}

	method inc
	{
		^self + 1.
	}
}

class TestObject(Object)
{
	var(#class) Q, R.
	var(#classinst) a1, a2.
}


class MyObject(TestObject)
{
	var(#classinst) t1, t2.

	method(#class) main2
	{
		'START OF MAIN2' dump.
		t1 value.
		'END OF MAIN2' dump.
	}

	method(#class) main1
	{
		'START OF MAIN1' dump.
		self main2.
		t2 := [ 'BLOCK #2' dump. ^200].
		'END OF MAIN1' dump.
		
	}

	method(#class) main
	{
		'START OF MAIN' dump.
		t1 := ['BLOCK #1' dump. ^100].
		self main1.
		'END OF MAIN' dump.
	}

}
