// this script was compiled with wurst 1.8.1.0-jenkins-Wurst-1367
globals
integer array A_nextFree
integer A_firstFree=0
integer A_maxIndex=0
integer array A_typeId
integer array B_nextFree
integer B_firstFree=0
integer B_maxIndex=0
integer array B_typeId
integer wurst_stack_depth=0
string array wurst_stack
endglobals
native testSuccess takes nothing returns nothing
function initGlobals takes nothing returns nothing
endfunction

function error takes string msg, string w__wurst_stackPos returns nothing
	local integer stacktraceIndex
	local integer stacktraceLimit
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	set w__wurst_stackPos = ""
	set stacktraceIndex = wurst_stack_depth
	set stacktraceLimit = 0
	loop
		set stacktraceIndex = stacktraceIndex - 1
		set stacktraceLimit = stacktraceLimit + 1
		exitwhen stacktraceLimit > 20 or stacktraceIndex < 0
		set w__wurst_stackPos = w__wurst_stackPos + "\n   " + wurst_stack[stacktraceIndex]
	endloop
	call BJDebugMsg(msg + "\n" + w__wurst_stackPos)
	set wurst_stack_depth = wurst_stack_depth - 1
endfunction

function new_A takes string w__wurst_stackPos returns integer
	local integer this
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	set wurst_stack[wurst_stack_depth] = "when calling alloc_A in testInnerClass_static_from_outside, line 3"
	set wurst_stack_depth = wurst_stack_depth + 1
	if A_firstFree == 0 then
		if A_maxIndex < 32768 then
			set A_maxIndex = A_maxIndex + 1
			set this = A_maxIndex
			set A_typeId[this] = 1
		else
			call error("Out of memory: Could not create A.", "when calling error in testInnerClass_static_from_outside, line 3")
			set this = 0
		endif
	else
		set A_firstFree = A_firstFree - 1
		set this = A_nextFree[A_firstFree]
		set A_typeId[this] = 1
	endif
	set wurst_stack_depth = wurst_stack_depth - 1 - 1
	return this
endfunction

function new_B takes string w__wurst_stackPos returns integer
	local integer this
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	set wurst_stack[wurst_stack_depth] = "when calling alloc_B in testInnerClass_static_from_outside, line 4"
	set wurst_stack_depth = wurst_stack_depth + 1
	if B_firstFree == 0 then
		if B_maxIndex < 32768 then
			set B_maxIndex = B_maxIndex + 1
			set this = B_maxIndex
			set B_typeId[this] = 2
		else
			call error("Out of memory: Could not create B.", "when calling error in testInnerClass_static_from_outside, line 4")
			set this = 0
		endif
	else
		set B_firstFree = B_firstFree - 1
		set this = B_nextFree[B_firstFree]
		set B_typeId[this] = 2
	endif
	set wurst_stack_depth = wurst_stack_depth - 1 - 1
	return this
endfunction

function init_test takes string w__wurst_stackPos returns nothing
	local integer this
	set wurst_stack[wurst_stack_depth] = w__wurst_stackPos
	set wurst_stack_depth = wurst_stack_depth + 1
	set this = new_A("when calling new_A in testInnerClass_static_from_outside, line 10")
	set wurst_stack[wurst_stack_depth] = "when calling getB in testInnerClass_static_from_outside, line 10"
	set wurst_stack_depth = wurst_stack_depth + 1
	if A_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling A.getB", "when calling error in testInnerClass_static_from_outside, line 7")
		else
			call error("Called A.getB on invalid object.", "when calling error in testInnerClass_static_from_outside, line 7")
		endif
	endif
	set wurst_stack[wurst_stack_depth] = "when calling getB in testInnerClass_static_from_outside, line 7"
	set wurst_stack_depth = wurst_stack_depth + 1
	set this = new_B("when calling new_B in testInnerClass_static_from_outside, line 8")
	set wurst_stack_depth = wurst_stack_depth - 1 - 1
	set wurst_stack[wurst_stack_depth] = "when calling foo in testInnerClass_static_from_outside, line 11"
	set wurst_stack_depth = wurst_stack_depth + 1
	if B_typeId[this] == 0 then
		if this == 0 then
			call error("Nullpointer exception when calling B.foo", "when calling error in testInnerClass_static_from_outside, line 5")
		else
			call error("Called B.foo on invalid object.", "when calling error in testInnerClass_static_from_outside, line 5")
		endif
	endif
	set wurst_stack_depth = wurst_stack_depth - 1
	call testSuccess()
	set wurst_stack_depth = wurst_stack_depth - 1
endfunction

function main takes nothing returns nothing
	call initGlobals()
	call init_test("when calling init_test in testInnerClass_static_from_outside, line 1")
endfunction

function config takes nothing returns nothing
endfunction