#include <stdarg.h>
typedef void *oop;
struct __closure
{
oop obj;
struct __closure *(*bind)( oop, oop);
struct __closure *(*method)( oop, oop, oop, ...);
};
struct __closure *_libid;
__inline oop _send( oop msg, oop rcv, ...)
{
va_list ap;
register oop _r = rcv;
struct __closure *_c;
oop ret;
va_start( ap, rcv);
_c = (struct __closure *) _libid->bind( msg, _r);
ret = (_c->method)( (oop) _c, _r, _r, ap);
va_end( ap);
return ret;
}