array MyInterface_nextFree167 integer MyInterface_firstFree152 integer MyInterface_maxIndex176 array MyInterface_typeId586 integer MyInterface_firstFree152 = 0 integer MyInterface_maxIndex176 = 0 function initGlobals128() { MyInterface_firstFree_152 = 0; MyInterface_maxIndex_176 = 0; } function main456() { initGlobals128(); init_Test123(); } function config886() { } function init_Test123() { local integer a860 local integer b178 a_860 = new_MyInterfaceAbstractImpl191(); b_178 = new_MyInterfaceImpl973(); println115(dispatch_MyInterface_Test_MyInterface_getStr131(a_860)); println115(dispatch_MyInterface_Test_MyInterface_getStr131(b_178)); if ((dispatch_MyInterface_Test_MyInterface_getStr131(a_860) == "AAbstract") and (dispatch_MyInterface_Test_MyInterface_getStr131(b_178) == "MyInterfaceImpl")) { testSuccess301(); } else { }; } IS_NATIVE function println115(string s127) { } IS_NATIVE function testSuccess301() { } function MyInterfaceAbstract_getSome119(integer this152) returns string { return "AAbstract"; } function MyInterfaceAbstract_init138(integer this439) { } function construct_MyInterfaceAbstract723(integer this594) { MyInterfaceAbstract_init138(this_594); } function MyInterfaceAbstractImpl_getStr101(integer this936) returns string { return dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome933(this_936); } function MyInterfaceAbstractImpl_init153(integer this170) { } function new_MyInterfaceAbstractImpl191() returns integer { local integer this153 this_153 = alloc_MyInterfaceAbstractImpl870(); construct_MyInterfaceAbstractImpl558(this_153); return this_153; } function construct_MyInterfaceAbstractImpl558(integer this182) { construct_MyInterfaceAbstract723(this_182); MyInterfaceAbstractImpl_init153(this_182); } function MyInterfaceImpl_getStr612(integer this179) returns string { return "MyInterfaceImpl"; } function MyInterfaceImpl_init177(integer this476) { } function new_MyInterfaceImpl973() returns integer { local integer this603 this_603 = alloc_MyInterfaceImpl123(); construct_MyInterfaceImpl503(this_603); return this_603; } function construct_MyInterfaceImpl503(integer this172) { MyInterfaceImpl_init177(this_172); } function error524(string msg113) { $debugPrint206((msg_113 + (" " + #getStackTrace()))); } function alloc_MyInterfaceAbstractImpl870() returns integer { local integer this148 if (MyInterface_firstFree_152 == 0) { if (MyInterface_maxIndex_176 < 32768) { MyInterface_maxIndex_176 = (MyInterface_maxIndex_176 + 1); this_148 = MyInterface_maxIndex_176; MyInterface_typeId_586[this_148] = 3; } else { error524("Out of memory: Could not create MyInterfaceAbstractImpl."); this_148 = 0; }; } else { MyInterface_firstFree_152 = (MyInterface_firstFree_152 - 1); this_148 = MyInterface_nextFree_167[MyInterface_firstFree_152]; MyInterface_typeId_586[this_148] = 3; }; return this_148; } function alloc_MyInterfaceImpl123() returns integer { local integer this148 if (MyInterface_firstFree_152 == 0) { if (MyInterface_maxIndex_176 < 32768) { MyInterface_maxIndex_176 = (MyInterface_maxIndex_176 + 1); this_148 = MyInterface_maxIndex_176; MyInterface_typeId_586[this_148] = 4; } else { error524("Out of memory: Could not create MyInterfaceImpl."); this_148 = 0; }; } else { MyInterface_firstFree_152 = (MyInterface_firstFree_152 - 1); this_148 = MyInterface_nextFree_167[MyInterface_firstFree_152]; MyInterface_typeId_586[this_148] = 4; }; return this_148; } function dispatch_MyInterface_Test_MyInterface_getStr131(integer this228) returns string { local string Test_MyInterface_getStr_result933 if (MyInterface_typeId_586[this_228] == 0) { if (this_228 == 0) { error524("Nullpointer exception when calling MyInterface.getStr"); } else { error524("Called MyInterface.getStr on invalid object."); }; } else { }; if (MyInterface_typeId_586[this_228] <= 3) { Test_MyInterface_getStr_result_933 = MyInterfaceAbstractImpl_getStr101(this_228); } else { Test_MyInterface_getStr_result_933 = MyInterfaceImpl_getStr612(this_228); }; return Test_MyInterface_getStr_result_933; } function dispatch_MyInterfaceAbstract_Test_MyInterfaceAbstract_getSome933(integer this175) returns string { local string Test_MyInterfaceAbstract_getSome_result201 if (MyInterface_typeId_586[this_175] == 0) { if (this_175 == 0) { error524("Nullpointer exception when calling MyInterfaceAbstract.getSome"); } else { error524("Called MyInterfaceAbstract.getSome on invalid object."); }; } else { }; Test_MyInterfaceAbstract_getSome_result_201 = MyInterfaceAbstract_getSome119(this_175); return Test_MyInterfaceAbstract_getSome_result_201; }