ID (String name, Pointer pointer, Callback callback) { ID delegateClass = allocateObjcClassPair(getObjcClass("NSObject"), name); if (!ID.NIL.equals(delegateClass)) { if (!addMethod(delegateClass, pointer, callback, "v@")) { throw new RuntimeException("Cannot add observer method"); } registerObjcClassPair(delegateClass); } return invoke(name, "new"); }