code: function ID (pointer) {
    if (typeof this !== 'function') return createFunction(null, 0, ID, arguments);
  
    var objClass = core.object_getClass(pointer);
  
    // This is absolutely necessary, otherwise we'll seg fault if a user passes in
    // a simple type or specifies an object on a class that takes a simple type.
    if (!objClass || ref.isNull(objClass)) {
      throw new TypeError('An abstract class or delegate implemented a method ' +
                          'that takes an ID (object), but a simple type or ' +
                          'structure (such as NSRect) was passed in');
    }
  
    this.pointer = pointer;
    this.msgCache = [];
  
    this[invoke] = function () {
      return this.msgSend(arguments, false, this);
    }.bind(this);
  }
docs: The 'id' function is essentially the "base class" for all Objective-C
  objects that get passed around JS-land.