integer test_i131 array A_nextFree166 integer A_firstFree173 integer A_maxIndex102 array A_typeId209 integer A_firstFree173 = 0 integer A_maxIndex102 = 0 function initGlobals822() { } function main141() { initGlobals822(); init_test160(); } function config106() { } function init_test160() { dispatch_A_test_A_foo139(new_B364()); if (test_i_131 == 8) { testSuccess148(); } else { }; } IS_NATIVE function testSuccess148() { } function A_foo226(integer this149) { test_i_131 = 7; } function A_init155(integer this134) { } function construct_A187(integer this130) { A_init155(this_130); } function B_foo983(integer this337) { test_i_131 = 8; } function B_init155(integer this818) { } function new_B364() returns integer { local integer this683 this_683 = alloc_B101(); construct_B421(this_683); return this_683; } function construct_B421(integer this974) { construct_A187(this_974); B_init155(this_974); } function error694(string msg183) { $debugPrint132((msg_183 + (" " + #getStackTrace()))); } function alloc_B101() returns integer { local integer this161 if (A_firstFree_173 == 0) { if (A_maxIndex_102 < 32768) { A_maxIndex_102 = (A_maxIndex_102 + 1); this_161 = A_maxIndex_102; A_typeId_209[this_161] = 2; } else { error694("Out of memory: Could not create B."); this_161 = 0; }; } else { A_firstFree_173 = (A_firstFree_173 - 1); this_161 = A_nextFree_166[A_firstFree_173]; A_typeId_209[this_161] = 2; }; return this_161; } function dispatch_A_test_A_foo139(integer this130) { if (A_typeId_209[this_130] == 0) { if (this_130 == 0) { error694("Nullpointer exception when calling A.foo"); } else { error694("Called A.foo on invalid object."); }; } else { }; if (A_typeId_209[this_130] <= 1) { A_foo226(this_130); } else { B_foo983(this_130); }; }