static class RemoteDB { DialogIO db; *(S botName) { db = findBot(botName); } L xlist(S className) { ret (L) rpc(db, "xlist", className); } S xclass(PassRef o) { ret (S) rpc(db, "xclass", o); } O xget(PassRef o, S field) { ret rpc(db, "xget", o, field); } S xS(PassRef o, S field) { ret (S) xget(o, field); } PassRef xgetref(PassRef o, S field) { ret (PassRef) xget(o, field); } void xset(PassRef o, S field, O value) { rpc(db, "xset", o, field, value); } PassRef unary(S className) { PassRef ref = first(xlist(className)); if (ref == null) ref = xnew(className); ret ref; } PassRef xnew(S className, O... values) { ret (PassRef) rpc(db, "xnew", className, values); } void xdelete(PassRef o) { rpc(db, "xdelete", o); } void close() { if (db != null) db.close(); } }