array MyInterface_nextFree201 integer MyInterface_firstFree534 integer MyInterface_maxIndex247 array MyInterface_typeId204 integer MyInterface_firstFree534 = 0 integer MyInterface_maxIndex247 = 0 function initGlobals475() { MyInterface_firstFree_534 = 0; MyInterface_maxIndex_247 = 0; } function main192() { initGlobals475(); init_Test178(); } function config805() { } function init_Test178() { local integer a943 local integer b174 a_943 = new_MyInterfaceAbstractImpl104(); b_174 = new_MyInterfaceImpl197(); println914(dispatch_MyInterface_Test_MyInterface_getStr208(a_943)); println914(dispatch_MyInterface_Test_MyInterface_getStr208(b_174)); if ((dispatch_MyInterface_Test_MyInterface_getStr208(a_943) == "AAbstract") and (dispatch_MyInterface_Test_MyInterface_getStr208(b_174) == "MyInterfaceImpl")) { testSuccess109(); } else { }; } IS_NATIVE function println914(string s467) { } IS_NATIVE function testSuccess109() { } function MyInterfaceAbstract_getSome138(integer this825) returns string { return "AAbstract"; } function MyInterfaceAbstract_init150(integer this135) { } function construct_MyInterfaceAbstract191(integer this360) { MyInterfaceAbstract_init150(this_360); } function MyInterfaceAbstractImpl_getStr645(integer this554) returns string { return dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome517(this_554); } function MyInterfaceAbstractImpl_init159(integer this123) { } function new_MyInterfaceAbstractImpl104() returns integer { local integer this370 this_370 = alloc_MyInterfaceAbstractImpl271(); construct_MyInterfaceAbstractImpl163(this_370); return this_370; } function construct_MyInterfaceAbstractImpl163(integer this114) { construct_MyInterfaceAbstract191(this_114); MyInterfaceAbstractImpl_init159(this_114); } function MyInterfaceImpl_getStr194(integer this196) returns string { return "MyInterfaceImpl"; } function MyInterfaceImpl_init430(integer this184) { } function new_MyInterfaceImpl197() returns integer { local integer this144 this_144 = alloc_MyInterfaceImpl125(); construct_MyInterfaceImpl159(this_144); return this_144; } function construct_MyInterfaceImpl159(integer this208) { MyInterfaceImpl_init430(this_208); } function error241(string msg730) { $debugPrint129((msg_730 + (" " + #getStackTrace()))); } function alloc_MyInterfaceAbstractImpl271() returns integer { local integer this745 if (MyInterface_firstFree_534 == 0) { if (MyInterface_maxIndex_247 < 32768) { MyInterface_maxIndex_247 = (MyInterface_maxIndex_247 + 1); this_745 = MyInterface_maxIndex_247; MyInterface_typeId_204[this_745] = 3; } else { error241("Out of memory: Could not create MyInterfaceAbstractImpl."); this_745 = 0; }; } else { MyInterface_firstFree_534 = (MyInterface_firstFree_534 - 1); this_745 = MyInterface_nextFree_201[MyInterface_firstFree_534]; MyInterface_typeId_204[this_745] = 3; }; return this_745; } function alloc_MyInterfaceImpl125() returns integer { local integer this397 if (MyInterface_firstFree_534 == 0) { if (MyInterface_maxIndex_247 < 32768) { MyInterface_maxIndex_247 = (MyInterface_maxIndex_247 + 1); this_397 = MyInterface_maxIndex_247; MyInterface_typeId_204[this_397] = 4; } else { error241("Out of memory: Could not create MyInterfaceImpl."); this_397 = 0; }; } else { MyInterface_firstFree_534 = (MyInterface_firstFree_534 - 1); this_397 = MyInterface_nextFree_201[MyInterface_firstFree_534]; MyInterface_typeId_204[this_397] = 4; }; return this_397; } function dispatch_MyInterface_Test_MyInterface_getStr208(integer this113) returns string { local string Test_MyInterface_getStr_result672 if (MyInterface_typeId_204[this_113] == 0) { if (this_113 == 0) { error241("Nullpointer exception when calling MyInterface.getStr"); } else { error241("Called MyInterface.getStr on invalid object."); }; } else { }; if (MyInterface_typeId_204[this_113] <= 3) { Test_MyInterface_getStr_result_672 = MyInterfaceAbstractImpl_getStr645(this_113); } else { Test_MyInterface_getStr_result_672 = MyInterfaceImpl_getStr194(this_113); }; return Test_MyInterface_getStr_result_672; } function dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome517(integer this133) returns string { local string Test_MyInterfaceAbstract_getSome_result206 if (MyInterface_typeId_204[this_133] == 0) { if (this_133 == 0) { error241("Nullpointer exception when calling MyInterfaceAbstract.getSome"); } else { error241("Called MyInterfaceAbstract.getSome on invalid object."); }; } else { }; Test_MyInterfaceAbstract_getSome_result_206 = MyInterfaceAbstract_getSome138(this_133); return Test_MyInterfaceAbstract_getSome_result_206; }