array MyInterface_nextFree753 integer MyInterface_firstFree574 integer MyInterface_maxIndex506 array MyInterface_typeId840 integer MyInterface_firstFree574 = 0 integer MyInterface_maxIndex506 = 0 function initGlobals227() { } function main689() { initGlobals227(); init_Test805(); } function config277() { } function init_Test805() { local integer a370 local integer b145 a_370 = new_MyInterfaceAbstractImpl130(); b_145 = new_MyInterfaceImpl133(); println105(dispatch_MyInterface_Test_MyInterface_getStr139(a_370)); println105(dispatch_MyInterface_Test_MyInterface_getStr139(b_145)); if ((dispatch_MyInterface_Test_MyInterface_getStr139(a_370) == "AAbstract") and (dispatch_MyInterface_Test_MyInterface_getStr139(b_145) == "MyInterfaceImpl")) { testSuccess137(); } else { }; } IS_NATIVE function println105(string s472) { } IS_NATIVE function testSuccess137() { } function MyInterfaceAbstract_getSome213(integer this770) returns string { return "AAbstract"; } function MyInterfaceAbstract_init125(integer this159) { } function construct_MyInterfaceAbstract152(integer this131) { MyInterfaceAbstract_init125(this_131); } function MyInterfaceAbstractImpl_getStr729(integer this130) returns string { return dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome459(this_130); } function MyInterfaceAbstractImpl_init618(integer this124) { } function new_MyInterfaceAbstractImpl130() returns integer { local integer this164 this_164 = alloc_MyInterfaceAbstractImpl807(); construct_MyInterfaceAbstractImpl703(this_164); return this_164; } function construct_MyInterfaceAbstractImpl703(integer this199) { construct_MyInterfaceAbstract152(this_199); MyInterfaceAbstractImpl_init618(this_199); } function MyInterfaceImpl_getStr131(integer this190) returns string { return "MyInterfaceImpl"; } function MyInterfaceImpl_init725(integer this101) { } function new_MyInterfaceImpl133() returns integer { local integer this985 this_985 = alloc_MyInterfaceImpl840(); construct_MyInterfaceImpl106(this_985); return this_985; } function construct_MyInterfaceImpl106(integer this146) { MyInterfaceImpl_init725(this_146); } function error772(string msg313) { $debugPrint212((msg_313 + (" " + #getStackTrace()))); } function alloc_MyInterfaceAbstractImpl807() returns integer { local integer this127 if (MyInterface_firstFree_574 == 0) { if (MyInterface_maxIndex_506 < 32768) { MyInterface_maxIndex_506 = (MyInterface_maxIndex_506 + 1); this_127 = MyInterface_maxIndex_506; MyInterface_typeId_840[this_127] = 3; } else { error772("Out of memory: Could not create MyInterfaceAbstractImpl."); this_127 = 0; }; } else { MyInterface_firstFree_574 = (MyInterface_firstFree_574 - 1); this_127 = MyInterface_nextFree_753[MyInterface_firstFree_574]; MyInterface_typeId_840[this_127] = 3; }; return this_127; } function alloc_MyInterfaceImpl840() returns integer { local integer this115 if (MyInterface_firstFree_574 == 0) { if (MyInterface_maxIndex_506 < 32768) { MyInterface_maxIndex_506 = (MyInterface_maxIndex_506 + 1); this_115 = MyInterface_maxIndex_506; MyInterface_typeId_840[this_115] = 4; } else { error772("Out of memory: Could not create MyInterfaceImpl."); this_115 = 0; }; } else { MyInterface_firstFree_574 = (MyInterface_firstFree_574 - 1); this_115 = MyInterface_nextFree_753[MyInterface_firstFree_574]; MyInterface_typeId_840[this_115] = 4; }; return this_115; } function dispatch_MyInterface_Test_MyInterface_getStr139(integer this409) returns string { local string Test_MyInterface_getStr_result201 if (MyInterface_typeId_840[this_409] == 0) { if (this_409 == 0) { error772("Nullpointer exception when calling MyInterface.getStr"); } else { error772("Called MyInterface.getStr on invalid object."); }; } else { }; if (MyInterface_typeId_840[this_409] <= 3) { Test_MyInterface_getStr_result_201 = MyInterfaceAbstractImpl_getStr729(this_409); } else { Test_MyInterface_getStr_result_201 = MyInterfaceImpl_getStr131(this_409); }; return Test_MyInterface_getStr_result_201; } function dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome459(integer this164) returns string { if (MyInterface_typeId_840[this_164] == 0) { if (this_164 == 0) { error772("Nullpointer exception when calling MyInterfaceAbstract.getSome"); } else { error772("Called MyInterfaceAbstract.getSome on invalid object."); }; } else { }; return MyInterfaceAbstract_getSome213(this_164); }