%map Any;_write Any;toString Any;createFrom Any;create Any;t Any;set Relation Any Any Any Any;set Relation;get Relation Any Any Any;get Relation;new Relation Any Any Any;new Relation;list Any
% module
% 7
object_7(_t,_l,_t2,_upvals):-_upvals=[_table],(get_(_table,"imap",T23),_T22 = T23,call_cl(_T22,[_t,_l,_t2])).
% 6
object_6(_t,_l,_t2,_upvals):-_upvals=[_table],(get_(_table,"map",T21),_T20 = T21,call_cl(_T20,[_t,_l,_t2])).
% 5
object_5(_o,_s,_upvals):-_upvals=[],(true).
% 4
object_4(_o,_s,_upvals):-_upvals=[_table,_table],(get_(_table,"remove",T15),_T14 = T15,call_cl(_T14,[_o,"_prototype",_o2]),get_(_table,"toString",T17),_T16 = T17,call_cl(_T16,[_o,_o2])).
% 3
object_3(_o,__o,_o2,_upvals):-_upvals=[_set],(call_cl(_set,[_o,"_prototype",__o,_o2])).
% 2
object_2(_o,_o2,_upvals):-_upvals=[_set,_nil],(call_cl(_set,[_o,"_prototype",_nil,_o2])).
% set
object_set(_t,_o,_o2,_t2,_upvals):-_upvals=[],(set_(_t,_o,_o2,_t2)).
% get
object_get(_t,_o,_o2,_upvals):-_upvals=[],(((get_(_t,_o,_o2))->(true);(((get_(_t,"_prototype",T5),call(object_get(T5,_o,_o2),_upvals))->(true);(throw("cannot access field "+_o+" of object")))))).
% new
object_new(_o,_o2,__o,_upvals):-_upvals=[_list,_list],(((new(T3),_o = T3,_o_ = _o2);(dif(_o,T4),call_cl(_list,[_o,_l]),call_cl(_list,[_o2,_l2]),append(_l,_l2,_l_),_o_ = _l_))).
% main
object(X):-creq("table",_table),new(T1),_nil = T1,get_(_table,"toList",T2),_list = T2,_new = clos([_list,_list],object_new),_get = clos([],object_get),_set = clos([],object_set),new(T6),set_(T6,"new",_new,T8),set_(T8,"get",_get,T9),set_(T9,"set",_set,T10),set_(T10,"create",clos([_set,_nil],object_2),T11),set_(T11,"createFrom",clos([_set],object_3),T12),set_(T12,"toString",clos([_table,_table],object_4),T13),set_(T13,"_write",clos([],object_5),T18),set_(T18,"map",clos([_table],object_6),T19),set_(T19,"imap",clos([_table],object_7),T7),_t = T7,X=_t.