docs: function(event) {
        if (!this.listeners_)
          return true;
  
        // Since we are using DOM Event objects we need to override some of the
        // properties and methods so that we can emulate this correctly.
        var self = this;
        event.__defineGetter__('target', function() {
          return self;
        });
        var realPreventDefault = event.preventDefault;
        event.preventDefault = function() {
          realPreventDefault.call(this);
          this.rawReturnValue = false;
        };
  
        var type = event.type;
        var prevented = 0;
        if (type in this.listeners_) {
          // Clone to prevent removal during dispatch
          var handlers = this.listeners_[type].concat();
          for (var i = 0, handler; handler = handlers[i]; i++) {
            if (handler.handleEvent)
              prevented |= handler.handleEvent.call(handler, event) === false;
            else
              prevented |= handler.call(this, event) === false;
          }
        }
  
        return !prevented && event.rawReturnValue;
      }