xtClick();
      this.forward(e);
    },

    forward: function(e) {
      // prevent taps from being generated from events that have been
      // canceled (e.g. via cancelNextClick) or already handled via
      // a listener lower in the tree.
      if (!e.tapPrevented) {
        e.tapPrevented = true;
        this.fire(e.target);
      }
    },

    // fire a bubbling event from the generating target.
    fire: function(target) {
      Gestures.fire(target, 'tap', {}, true);
    }

  }