array MyInterface_nextFree257 integer MyInterface_firstFree354 integer MyInterface_maxIndex569 array MyInterface_typeId971 integer MyInterface_firstFree354 = 0 integer MyInterface_maxIndex569 = 0 function initGlobals113() { } function main963() { initGlobals113(); init_Test202(); } function config308() { } function init_Test202() { local integer a130 local integer b182 a_130 = new_MyInterfaceAbstractImpl143(); b_182 = new_MyInterfaceImpl182(); println614(dispatch_MyInterface_Test_MyInterface_getStr155(a_130)); println614(dispatch_MyInterface_Test_MyInterface_getStr155(b_182)); if ((dispatch_MyInterface_Test_MyInterface_getStr155(a_130) == "AAbstract") and (dispatch_MyInterface_Test_MyInterface_getStr155(b_182) == "MyInterfaceImpl")) { testSuccess565(); } else { }; } IS_NATIVE function println614(string s361) { } IS_NATIVE function testSuccess565() { } function MyInterfaceAbstract_getSome193(integer this175) returns string { return "AAbstract"; } function MyInterfaceAbstract_init558(integer this128) { } function construct_MyInterfaceAbstract674(integer this121) { MyInterfaceAbstract_init558(this_121); } function MyInterfaceAbstractImpl_getStr178(integer this997) returns string { return dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome115(this_997); } function MyInterfaceAbstractImpl_init449(integer this864) { } function new_MyInterfaceAbstractImpl143() returns integer { local integer this176 this_176 = alloc_MyInterfaceAbstractImpl107(); construct_MyInterfaceAbstractImpl820(this_176); return this_176; } function construct_MyInterfaceAbstractImpl820(integer this172) { construct_MyInterfaceAbstract674(this_172); MyInterfaceAbstractImpl_init449(this_172); } function MyInterfaceImpl_getStr908(integer this114) returns string { return "MyInterfaceImpl"; } function MyInterfaceImpl_init149(integer this156) { } function new_MyInterfaceImpl182() returns integer { local integer this346 this_346 = alloc_MyInterfaceImpl113(); construct_MyInterfaceImpl708(this_346); return this_346; } function construct_MyInterfaceImpl708(integer this213) { MyInterfaceImpl_init149(this_213); } function error873(string msg139) { $debugPrint108((msg_139 + (" " + #getStackTrace()))); } function alloc_MyInterfaceAbstractImpl107() returns integer { local integer this164 if (MyInterface_firstFree_354 == 0) { if (MyInterface_maxIndex_569 < 32768) { MyInterface_maxIndex_569 = (MyInterface_maxIndex_569 + 1); this_164 = MyInterface_maxIndex_569; MyInterface_typeId_971[this_164] = 3; } else { error873("Out of memory: Could not create MyInterfaceAbstractImpl."); this_164 = 0; }; } else { MyInterface_firstFree_354 = (MyInterface_firstFree_354 - 1); this_164 = MyInterface_nextFree_257[MyInterface_firstFree_354]; MyInterface_typeId_971[this_164] = 3; }; return this_164; } function alloc_MyInterfaceImpl113() returns integer { local integer this108 if (MyInterface_firstFree_354 == 0) { if (MyInterface_maxIndex_569 < 32768) { MyInterface_maxIndex_569 = (MyInterface_maxIndex_569 + 1); this_108 = MyInterface_maxIndex_569; MyInterface_typeId_971[this_108] = 4; } else { error873("Out of memory: Could not create MyInterfaceImpl."); this_108 = 0; }; } else { MyInterface_firstFree_354 = (MyInterface_firstFree_354 - 1); this_108 = MyInterface_nextFree_257[MyInterface_firstFree_354]; MyInterface_typeId_971[this_108] = 4; }; return this_108; } function dispatch_MyInterface_Test_MyInterface_getStr155(integer this627) returns string { local string Test_MyInterface_getStr_result198 if (MyInterface_typeId_971[this_627] == 0) { if (this_627 == 0) { error873("Nullpointer exception when calling MyInterface.getStr"); } else { error873("Called MyInterface.getStr on invalid object."); }; } else { }; if (MyInterface_typeId_971[this_627] <= 3) { Test_MyInterface_getStr_result_198 = MyInterfaceAbstractImpl_getStr178(this_627); } else { Test_MyInterface_getStr_result_198 = MyInterfaceImpl_getStr908(this_627); }; return Test_MyInterface_getStr_result_198; } function dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome115(integer this169) returns string { if (MyInterface_typeId_971[this_169] == 0) { if (this_169 == 0) { error873("Nullpointer exception when calling MyInterfaceAbstract.getSome"); } else { error873("Called MyInterfaceAbstract.getSome on invalid object."); }; } else { }; return MyInterfaceAbstract_getSome193(this_169); }