array C_nextFree520 integer C_firstFree522 integer C_maxIndex742 array C_typeId112 integer C_firstFree522 = 0 integer C_maxIndex742 = 0 function initGlobals448() { C_firstFree_522 = 0; C_maxIndex_742 = 0; } function main891() { initGlobals448(); init_test188(); } function config615() { } function init_test188() { local integer e143 e_143 = new_E502(); if (dispatch_D_test_D_bla153(e_143) == 4) { testSuccess114(); } else { }; } IS_NATIVE function testSuccess114() { } function C_foo157(integer this107) returns integer { return 3; } function C_init209(integer this192) { } function construct_C129(integer this183) { C_init209(this_183); } function D_bla212(integer this344) returns integer { return dispatch_C_test_C_foo103(this_344); } function D_init460(integer this123) { } function construct_D684(integer this185) { construct_C129(this_185); D_init460(this_185); } function E_foo151(integer this111) returns integer { return 4; } function E_init194(integer this180) { } function new_E502() returns integer { local integer this701 this_701 = alloc_E650(); construct_E176(this_701); return this_701; } function construct_E176(integer this198) { construct_D684(this_198); E_init194(this_198); } function error446(string msg290) { $debugPrint112((msg_290 + (" " + #getStackTrace()))); } function alloc_E650() returns integer { local integer this119 if (C_firstFree_522 == 0) { if (C_maxIndex_742 < 32768) { C_maxIndex_742 = (C_maxIndex_742 + 1); this_119 = C_maxIndex_742; C_typeId_112[this_119] = 3; } else { error446("Out of memory: Could not create E."); this_119 = 0; }; } else { C_firstFree_522 = (C_firstFree_522 - 1); this_119 = C_nextFree_520[C_firstFree_522]; C_typeId_112[this_119] = 3; }; return this_119; } function dispatch_C_test_C_foo103(integer this165) returns integer { local integer test_C_foo_result105 if (C_typeId_112[this_165] == 0) { if (this_165 == 0) { error446("Nullpointer exception when calling C.foo"); } else { error446("Called C.foo on invalid object."); }; } else { }; if (C_typeId_112[this_165] <= 2) { test_C_foo_result_105 = C_foo157(this_165); } else { test_C_foo_result_105 = E_foo151(this_165); }; return test_C_foo_result_105; } function dispatch_D_test_D_bla153(integer this509) returns integer { local integer test_D_bla_result102 if (C_typeId_112[this_509] == 0) { if (this_509 == 0) { error446("Nullpointer exception when calling D.bla"); } else { error446("Called D.bla on invalid object."); }; } else { }; test_D_bla_result_102 = D_bla212(this_509); return test_D_bla_result_102; }