code: function nativeDispatchEvent(srcEvent, eventType, eventPointer) {
      eventPointer = eventPointer || pointer;
      var eventObj;
  
      if (eventType === 'click' || eventType === 'mouseup' || eventType === 'mousedown') {
        eventObj = document.createEvent('MouseEvents');
        eventObj.initMouseEvent(
          eventType, true, true, window, srcEvent.detail,
          eventPointer.x, eventPointer.y, eventPointer.x, eventPointer.y,
          srcEvent.ctrlKey, srcEvent.altKey, srcEvent.shiftKey, srcEvent.metaKey,
          srcEvent.button, srcEvent.relatedTarget || null
        );
  
      } else {
        eventObj = document.createEvent('CustomEvent');
        eventObj.initCustomEvent(eventType, true, true, {});
      }
      eventObj.$material = true;
      eventObj.pointer = eventPointer;
      eventObj.srcEvent = srcEvent;
      eventPointer.target.dispatchEvent(eventObj);
    }
docs: NOTE: nativeDispatchEvent is very performance sensitive.
  @param srcEvent the original DOM touch event that started this.
  @param eventType the name of the custom event to send (eg 'click' or '$md.drag')
  @param eventPointer the pointer object that matches this event.