// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1367
globals
integer array MyClass_nextFree
integer MyClass_firstFree=0
integer MyClass_maxIndex=0
integer array MyClass_typeId
integer array Iterator_nextFree
integer Iterator_firstFree=0
integer Iterator_maxIndex=0
endglobals
native testSuccess takes nothing returns nothing
function initGlobals takes nothing returns nothing
	set MyClass_firstFree = 0
	set MyClass_maxIndex = 0
	set Iterator_firstFree = 0
	set Iterator_maxIndex = 0
endfunction

function Iterator_close takes integer this returns nothing
endfunction

function Iterator_hasNext takes integer this returns boolean
	return false
endfunction

function Iterator_next takes integer this returns integer
	return 0
endfunction

function error takes string msg returns nothing
	call BJDebugMsg(msg + "\n" + "")
endfunction

function alloc_Iterator takes nothing returns integer
	local integer this
	if Iterator_firstFree == 0 then
		if Iterator_maxIndex < 32768 then
			set Iterator_maxIndex = Iterator_maxIndex + 1
			set this = Iterator_maxIndex
		else
			call error("Out of memory: Could not create Iterator.")
			set this = 0
		endif
	else
		set Iterator_firstFree = Iterator_firstFree - 1
		set this = Iterator_nextFree[Iterator_firstFree]
	endif
	return this
endfunction

function Iterator_init takes integer this returns nothing
endfunction

function construct_Iterator takes integer this returns nothing
	call Iterator_init(this)
endfunction

function new_Iterator takes nothing returns integer
	local integer this = alloc_Iterator()
	call construct_Iterator(this)
	return this
endfunction

function MyClass_MyModule_LinkedListModule_iterator takes nothing returns integer
	return new_Iterator()
endfunction

function MyClass_do takes integer this returns nothing
endfunction

function dispatch_MyClass_Test_MyClass_do takes integer this returns nothing
	if MyClass_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling MyClass.do")
		else
			call error("Called MyClass.do on invalid object.")
		endif
	endif
	call MyClass_do(this)
endfunction

function MyClass_all takes nothing returns nothing
	local integer iterator = MyClass_MyModule_LinkedListModule_iterator()
	local integer elem
	loop
		exitwhen  not Iterator_hasNext(iterator)
		set elem = Iterator_next(iterator)
		call dispatch_MyClass_Test_MyClass_do(elem)
	endloop
	call Iterator_close(iterator)
endfunction

function alloc_MyClass takes nothing returns integer
	local integer this
	if MyClass_firstFree == 0 then
		if MyClass_maxIndex < 32768 then
			set MyClass_maxIndex = MyClass_maxIndex + 1
			set this = MyClass_maxIndex
			set MyClass_typeId[this] = 2
		else
			call error("Out of memory: Could not create MyClass.")
			set this = 0
		endif
	else
		set MyClass_firstFree = MyClass_firstFree - 1
		set this = MyClass_nextFree[MyClass_firstFree]
		set MyClass_typeId[this] = 2
	endif
	return this
endfunction

function construct_MyClass_MyModule_LinkedListModule takes integer this returns nothing
endfunction

function construct_MyClass_MyModule takes integer this returns nothing
	call construct_MyClass_MyModule_LinkedListModule(this)
endfunction

function MyClass_init takes integer this returns nothing
	call construct_MyClass_MyModule(this)
endfunction

function construct_MyClass takes integer this returns nothing
	call MyClass_init(this)
endfunction

function new_MyClass takes nothing returns integer
	local integer this = alloc_MyClass()
	call construct_MyClass(this)
	return this
endfunction

function init_Test takes nothing returns nothing
	call new_MyClass()
	call new_MyClass()
	call MyClass_all()
	call testSuccess()
endfunction

function main takes nothing returns nothing
	call initGlobals()
	call init_Test()
endfunction

function config takes nothing returns nothing
endfunction