This is a test for https://bugs.webkit.org/show_bug.cgi?id=21063 (NULL pointer crash in dispatchEvent(null)). It passes if it does not crash.

Exception thrown for null: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for undefined: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for string: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for 0: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for object: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for null: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for undefined: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for string: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for 0: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for object: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for null: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for undefined: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for string: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for 0: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for object: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for null: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for undefined: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for string: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for 0: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for object: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for null: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for undefined: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for string: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for 0: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event
Exception thrown for object: TypeError: Argument 1 ('event') to EventTarget.dispatchEvent must be an instance of Event

