code: function Delegate(root) {
  
    /**
     * Maintain a map of listener
     * lists, keyed by event name.
     *
     * @type Object
     */
    this.listenerMap = [{}, {}];
    if (root) {
      this.root(root);
    }
  
    /** @type function() */
    this.handle = Delegate.prototype.handle.bind(this);
  }
docs: DOM event delegator
  
  The delegator will listen
  for events that bubble up
  to the root node.
  
  @constructor
  @param {Node|string} [root] The root node or a selector string matching the root node