diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,17 @@
+# Revision history for ghcjs-dom (ghcjs-dom, ghcjs-dom-jsaddle, ghcjs-dom-javascript)
+
+## 0.10.0.0
+
+A major release matching jsaddle-dom 0.10: the bindings are regenerated
+from current specifications (webref Web IDL and MDN browser-compat-data)
+by `dom-gen`.  See jsaddle-dom's ChangeLog.md for the API changes and its
+API-CHANGES-0.10.md for the full list.
+
+* ghcjs-dom-javascript (the GHC JavaScript backend) is now generated too,
+  with typed `foreign import javascript` calls and no dependency on
+  jsaddle.  It needs ghcjs-base >= 0.8.1 (for `GHCJS.Int53` and the
+  `Object` / `JSArray` marshalling instances).
+* ghcjs-dom uses ghcjs-dom-javascript on GHC's JavaScript backend (unless
+  built with `-f-jsffi`) and ghcjs-dom-jsaddle otherwise.  The GHCJS 8
+  backend (`ghcjs-dom-jsffi`) is not regenerated and stays at 0.9.x.
+* `GHCJS.DOM.Debug` uses `Document.elementFromPoint` and `PointerEvent`.
diff --git a/ghcjs-dom.cabal b/ghcjs-dom.cabal
--- a/ghcjs-dom.cabal
+++ b/ghcjs-dom.cabal
@@ -1,596 +1,1501 @@
-name: ghcjs-dom
-version: 0.8.0.0
-cabal-version: >=1.24
-build-type: Simple
-license: MIT
-license-file: LICENSE
-maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
-synopsis: DOM library that supports both GHCJS and GHC
-description: Documentent Object Model (DOM) functions that work with
-             GHCJS, but can also be used with GHC and a Browser.
-author: Hamish Mackenzie
-data-dir: ""
-category: Web
-
-Source-Repository head
-  type:         git
-  location:     https://github.com/ghcjs/ghcjs-dom
-  subdir:       ghcjs-dom
-
-flag jsffi
-    description: Use JavaScriptFFI extension for GHCJS JavaScript output
-    default: True
-    manual: True
-
-library
-    build-depends: base <5,
-                   transformers >=0.2 && <0.6,
-                   text >= 0.11.0.6 && < 1.3
-
-    default-language: Haskell2010
-
-    exposed: True
-    buildable: True
-
-    if (impl(ghcjs) && flag(jsffi))
-        build-depends: ghcjs-dom-jsffi ==0.8.0.0
-    else
-        build-depends: ghcjs-dom-jsaddle ==0.8.0.0
-
-    reexported-modules:
-            GHCJS.DOM
-          , GHCJS.DOM.Types
-          , GHCJS.DOM.EventM
-          -- (cd src/JSDOM/Generated && for a in *.hs; do echo "          , GHCJS.DOM.${a%.*}"; done | pbcopy)
-          , GHCJS.DOM.ANGLEInstancedArrays
-          , GHCJS.DOM.AbstractWorker
-          , GHCJS.DOM.AnalyserNode
-          , GHCJS.DOM.Animatable
-          , GHCJS.DOM.Animation
-          , GHCJS.DOM.AnimationEvent
-          , GHCJS.DOM.ApplePayPaymentAuthorizedEvent
-          , GHCJS.DOM.ApplePayPaymentMethodSelectedEvent
-          , GHCJS.DOM.ApplePaySession
-          , GHCJS.DOM.ApplePayShippingContactSelectedEvent
-          , GHCJS.DOM.ApplePayShippingMethodSelectedEvent
-          , GHCJS.DOM.ApplePayValidateMerchantEvent
-          , GHCJS.DOM.ApplicationCache
-          , GHCJS.DOM.Attr
-          , GHCJS.DOM.AudioBuffer
-          , GHCJS.DOM.AudioBufferCallback
-          , GHCJS.DOM.AudioBufferSourceNode
-          , GHCJS.DOM.AudioContext
-          , GHCJS.DOM.AudioDestinationNode
-          , GHCJS.DOM.AudioListener
-          , GHCJS.DOM.AudioNode
-          , GHCJS.DOM.AudioParam
-          , GHCJS.DOM.AudioProcessingEvent
-          , GHCJS.DOM.AudioTrack
-          , GHCJS.DOM.AudioTrackList
-          , GHCJS.DOM.AutocompleteErrorEvent
-          , GHCJS.DOM.BarProp
-          , GHCJS.DOM.BeforeLoadEvent
-          , GHCJS.DOM.BeforeUnloadEvent
-          , GHCJS.DOM.BiquadFilterNode
-          , GHCJS.DOM.Blob
-          , GHCJS.DOM.Body
-          , GHCJS.DOM.ByteLengthQueuingStrategy
-          , GHCJS.DOM.CSS
-          , GHCJS.DOM.CSSFontFaceLoadEvent
-          , GHCJS.DOM.CSSFontFaceRule
-          , GHCJS.DOM.CSSImportRule
-          , GHCJS.DOM.CSSKeyframeRule
-          , GHCJS.DOM.CSSKeyframesRule
-          , GHCJS.DOM.CSSMediaRule
-          , GHCJS.DOM.CSSNamespaceRule
-          , GHCJS.DOM.CSSPageRule
-          , GHCJS.DOM.CSSPrimitiveValue
-          , GHCJS.DOM.CSSRule
-          , GHCJS.DOM.CSSRuleList
-          , GHCJS.DOM.CSSStyleDeclaration
-          , GHCJS.DOM.CSSStyleRule
-          , GHCJS.DOM.CSSStyleSheet
-          , GHCJS.DOM.CSSSupportsRule
-          , GHCJS.DOM.CSSValue
-          , GHCJS.DOM.CSSValueList
-          , GHCJS.DOM.CanvasGradient
-          , GHCJS.DOM.CanvasPath
-          , GHCJS.DOM.CanvasRenderingContext2D
-          , GHCJS.DOM.CharacterData
-          , GHCJS.DOM.ChildNode
-          , GHCJS.DOM.ClientRect
-          , GHCJS.DOM.ClientRectList
-          , GHCJS.DOM.ClipboardEvent
-          , GHCJS.DOM.CloseEvent
-          , GHCJS.DOM.CommandLineAPIHost
-          , GHCJS.DOM.Comment
-          , GHCJS.DOM.CompositionEvent
-          , GHCJS.DOM.ConvolverNode
-          , GHCJS.DOM.Coordinates
-          , GHCJS.DOM.CountQueuingStrategy
-          , GHCJS.DOM.Counter
-          , GHCJS.DOM.Crypto
-          , GHCJS.DOM.CryptoKey
-          , GHCJS.DOM.CustomElementRegistry
-          , GHCJS.DOM.CustomEvent
-          , GHCJS.DOM.DOMError
-          , GHCJS.DOM.DOMException
-          , GHCJS.DOM.DOMImplementation
-          , GHCJS.DOM.DOMNamedFlowCollection
-          , GHCJS.DOM.DOMParser
-          , GHCJS.DOM.DOMPoint
-          , GHCJS.DOM.DOMPointReadOnly
-          , GHCJS.DOM.DOMRect
-          , GHCJS.DOM.DOMRectReadOnly
-          , GHCJS.DOM.DOMStringList
-          , GHCJS.DOM.DOMStringMap
-          , GHCJS.DOM.DOMTokenList
-          , GHCJS.DOM.DataCue
-          , GHCJS.DOM.DataTransfer
-          , GHCJS.DOM.DataTransferItem
-          , GHCJS.DOM.DataTransferItemList
-          , GHCJS.DOM.Database
-          , GHCJS.DOM.DatabaseCallback
-          , GHCJS.DOM.DedicatedWorkerGlobalScope
-          , GHCJS.DOM.DelayNode
-          , GHCJS.DOM.DeviceMotionEvent
-          , GHCJS.DOM.DeviceOrientationEvent
-          , GHCJS.DOM.DeviceProximityEvent
-          , GHCJS.DOM.Document
-          , GHCJS.DOM.DocumentFragment
-          , GHCJS.DOM.DocumentOrShadowRoot
-          , GHCJS.DOM.DocumentTimeline
-          , GHCJS.DOM.DocumentType
-          , GHCJS.DOM.DynamicsCompressorNode
-          , GHCJS.DOM.EXTBlendMinMax
-          , GHCJS.DOM.EXTTextureFilterAnisotropic
-          , GHCJS.DOM.EXTsRGB
-          , GHCJS.DOM.Element
-          , GHCJS.DOM.Enums
-          , GHCJS.DOM.ErrorEvent
-          , GHCJS.DOM.Event
-          , GHCJS.DOM.EventListener
-          , GHCJS.DOM.EventSource
-          , GHCJS.DOM.EventTarget
-          , GHCJS.DOM.File
-          , GHCJS.DOM.FileError
-          , GHCJS.DOM.FileException
-          , GHCJS.DOM.FileList
-          , GHCJS.DOM.FileReader
-          , GHCJS.DOM.FileReaderSync
-          , GHCJS.DOM.FocusEvent
-          , GHCJS.DOM.FontFace
-          , GHCJS.DOM.FontFaceSet
-          , GHCJS.DOM.FormData
-          , GHCJS.DOM.GainNode
-          , GHCJS.DOM.Gamepad
-          , GHCJS.DOM.GamepadButton
-          , GHCJS.DOM.GamepadEvent
-          , GHCJS.DOM.Geolocation
-          , GHCJS.DOM.Geoposition
-          , GHCJS.DOM.GlobalCrypto
-          , GHCJS.DOM.GlobalEventHandlers
-          , GHCJS.DOM.GlobalPerformance
-          , GHCJS.DOM.HTMLAllCollection
-          , GHCJS.DOM.HTMLAnchorElement
-          , GHCJS.DOM.HTMLAppletElement
-          , GHCJS.DOM.HTMLAreaElement
-          , GHCJS.DOM.HTMLAttachmentElement
-          , GHCJS.DOM.HTMLBRElement
-          , GHCJS.DOM.HTMLBaseElement
-          , GHCJS.DOM.HTMLBodyElement
-          , GHCJS.DOM.HTMLButtonElement
-          , GHCJS.DOM.HTMLCanvasElement
-          , GHCJS.DOM.HTMLCollection
-          , GHCJS.DOM.HTMLDListElement
-          , GHCJS.DOM.HTMLDataElement
-          , GHCJS.DOM.HTMLDataListElement
-          , GHCJS.DOM.HTMLDetailsElement
-          , GHCJS.DOM.HTMLDirectoryElement
-          , GHCJS.DOM.HTMLDivElement
-          , GHCJS.DOM.HTMLDocument
-          , GHCJS.DOM.HTMLElement
-          , GHCJS.DOM.HTMLEmbedElement
-          , GHCJS.DOM.HTMLFieldSetElement
-          , GHCJS.DOM.HTMLFontElement
-          , GHCJS.DOM.HTMLFormControlsCollection
-          , GHCJS.DOM.HTMLFormElement
-          , GHCJS.DOM.HTMLFrameElement
-          , GHCJS.DOM.HTMLFrameSetElement
-          , GHCJS.DOM.HTMLHRElement
-          , GHCJS.DOM.HTMLHeadElement
-          , GHCJS.DOM.HTMLHeadingElement
-          , GHCJS.DOM.HTMLHtmlElement
-          , GHCJS.DOM.HTMLHyperlinkElementUtils
-          , GHCJS.DOM.HTMLIFrameElement
-          , GHCJS.DOM.HTMLImageElement
-          , GHCJS.DOM.HTMLInputElement
-          , GHCJS.DOM.HTMLKeygenElement
-          , GHCJS.DOM.HTMLLIElement
-          , GHCJS.DOM.HTMLLabelElement
-          , GHCJS.DOM.HTMLLegendElement
-          , GHCJS.DOM.HTMLLinkElement
-          , GHCJS.DOM.HTMLMapElement
-          , GHCJS.DOM.HTMLMarqueeElement
-          , GHCJS.DOM.HTMLMediaElement
-          , GHCJS.DOM.HTMLMenuElement
-          , GHCJS.DOM.HTMLMetaElement
-          , GHCJS.DOM.HTMLMeterElement
-          , GHCJS.DOM.HTMLModElement
-          , GHCJS.DOM.HTMLOListElement
-          , GHCJS.DOM.HTMLObjectElement
-          , GHCJS.DOM.HTMLOptGroupElement
-          , GHCJS.DOM.HTMLOptionElement
-          , GHCJS.DOM.HTMLOptionsCollection
-          , GHCJS.DOM.HTMLOutputElement
-          , GHCJS.DOM.HTMLParagraphElement
-          , GHCJS.DOM.HTMLParamElement
-          , GHCJS.DOM.HTMLPreElement
-          , GHCJS.DOM.HTMLProgressElement
-          , GHCJS.DOM.HTMLQuoteElement
-          , GHCJS.DOM.HTMLScriptElement
-          , GHCJS.DOM.HTMLSelectElement
-          , GHCJS.DOM.HTMLSlotElement
-          , GHCJS.DOM.HTMLSourceElement
-          , GHCJS.DOM.HTMLStyleElement
-          , GHCJS.DOM.HTMLTableCaptionElement
-          , GHCJS.DOM.HTMLTableCellElement
-          , GHCJS.DOM.HTMLTableColElement
-          , GHCJS.DOM.HTMLTableElement
-          , GHCJS.DOM.HTMLTableRowElement
-          , GHCJS.DOM.HTMLTableSectionElement
-          , GHCJS.DOM.HTMLTemplateElement
-          , GHCJS.DOM.HTMLTextAreaElement
-          , GHCJS.DOM.HTMLTimeElement
-          , GHCJS.DOM.HTMLTitleElement
-          , GHCJS.DOM.HTMLTrackElement
-          , GHCJS.DOM.HTMLUListElement
-          , GHCJS.DOM.HTMLVideoElement
-          , GHCJS.DOM.HashChangeEvent
-          , GHCJS.DOM.Headers
-          , GHCJS.DOM.History
-          , GHCJS.DOM.IDBCursor
-          , GHCJS.DOM.IDBCursorWithValue
-          , GHCJS.DOM.IDBDatabase
-          , GHCJS.DOM.IDBFactory
-          , GHCJS.DOM.IDBIndex
-          , GHCJS.DOM.IDBKeyRange
-          , GHCJS.DOM.IDBObjectStore
-          , GHCJS.DOM.IDBOpenDBRequest
-          , GHCJS.DOM.IDBRequest
-          , GHCJS.DOM.IDBTransaction
-          , GHCJS.DOM.IDBVersionChangeEvent
-          , GHCJS.DOM.ImageData
-          , GHCJS.DOM.InputEvent
-          , GHCJS.DOM.InspectorFrontendHost
-          , GHCJS.DOM.IntersectionObserver
-          , GHCJS.DOM.IntersectionObserverCallback
-          , GHCJS.DOM.IntersectionObserverEntry
-          , GHCJS.DOM.KeyboardEvent
-          , GHCJS.DOM.KeyframeEffect
-          , GHCJS.DOM.Location
-          , GHCJS.DOM.MediaController
-          , GHCJS.DOM.MediaControlsHost
-          , GHCJS.DOM.MediaDeviceInfo
-          , GHCJS.DOM.MediaDevices
-          , GHCJS.DOM.MediaElementAudioSourceNode
-          , GHCJS.DOM.MediaEncryptedEvent
-          , GHCJS.DOM.MediaError
-          , GHCJS.DOM.MediaKeyMessageEvent
-          , GHCJS.DOM.MediaKeySession
-          , GHCJS.DOM.MediaKeyStatusMap
-          , GHCJS.DOM.MediaKeySystemAccess
-          , GHCJS.DOM.MediaKeys
-          , GHCJS.DOM.MediaList
-          , GHCJS.DOM.MediaQueryList
-          , GHCJS.DOM.MediaQueryListListener
-          , GHCJS.DOM.MediaRemoteControls
-          , GHCJS.DOM.MediaSession
-          , GHCJS.DOM.MediaSource
-          , GHCJS.DOM.MediaStream
-          , GHCJS.DOM.MediaStreamAudioDestinationNode
-          , GHCJS.DOM.MediaStreamAudioSourceNode
-          , GHCJS.DOM.MediaStreamEvent
-          , GHCJS.DOM.MediaStreamTrack
-          , GHCJS.DOM.MediaStreamTrackEvent
-          , GHCJS.DOM.MessageChannel
-          , GHCJS.DOM.MessageEvent
-          , GHCJS.DOM.MessagePort
-          , GHCJS.DOM.MimeType
-          , GHCJS.DOM.MimeTypeArray
-          , GHCJS.DOM.MouseEvent
-          , GHCJS.DOM.MutationEvent
-          , GHCJS.DOM.MutationObserver
-          , GHCJS.DOM.MutationRecord
-          , GHCJS.DOM.NamedNodeMap
-          , GHCJS.DOM.Navigator
-          , GHCJS.DOM.NavigatorConcurrentHardware
-          , GHCJS.DOM.NavigatorID
-          , GHCJS.DOM.NavigatorLanguage
-          , GHCJS.DOM.NavigatorOnLine
-          , GHCJS.DOM.NavigatorUserMediaError
-          , GHCJS.DOM.NavigatorUserMediaErrorCallback
-          , GHCJS.DOM.NavigatorUserMediaSuccessCallback
-          , GHCJS.DOM.Node
-          , GHCJS.DOM.NodeFilter
-          , GHCJS.DOM.NodeIterator
-          , GHCJS.DOM.NodeList
-          , GHCJS.DOM.NonDocumentTypeChildNode
-          , GHCJS.DOM.NonElementParentNode
-          , GHCJS.DOM.Notification
-          , GHCJS.DOM.NotificationCenter
-          , GHCJS.DOM.NotificationPermissionCallback
-          , GHCJS.DOM.OESStandardDerivatives
-          , GHCJS.DOM.OESTextureHalfFloat
-          , GHCJS.DOM.OESVertexArrayObject
-          , GHCJS.DOM.OfflineAudioCompletionEvent
-          , GHCJS.DOM.OfflineAudioContext
-          , GHCJS.DOM.OscillatorNode
-          , GHCJS.DOM.OverconstrainedError
-          , GHCJS.DOM.OverconstrainedErrorEvent
-          , GHCJS.DOM.OverflowEvent
-          , GHCJS.DOM.PageTransitionEvent
-          , GHCJS.DOM.PannerNode
-          , GHCJS.DOM.ParentNode
-          , GHCJS.DOM.Path2D
-          , GHCJS.DOM.Performance
-          , GHCJS.DOM.PerformanceEntry
-          , GHCJS.DOM.PerformanceNavigation
-          , GHCJS.DOM.PerformanceObserver
-          , GHCJS.DOM.PerformanceObserverCallback
-          , GHCJS.DOM.PerformanceObserverEntryList
-          , GHCJS.DOM.PerformanceResourceTiming
-          , GHCJS.DOM.PerformanceTiming
-          , GHCJS.DOM.Plugin
-          , GHCJS.DOM.PluginArray
-          , GHCJS.DOM.PopStateEvent
-          , GHCJS.DOM.PositionCallback
-          , GHCJS.DOM.PositionError
-          , GHCJS.DOM.PositionErrorCallback
-          , GHCJS.DOM.ProcessingInstruction
-          , GHCJS.DOM.ProgressEvent
-          , GHCJS.DOM.QuickTimePluginReplacement
-          , GHCJS.DOM.RGBColor
-          , GHCJS.DOM.RTCDTMFSender
-          , GHCJS.DOM.RTCDTMFToneChangeEvent
-          , GHCJS.DOM.RTCDataChannel
-          , GHCJS.DOM.RTCDataChannelEvent
-          , GHCJS.DOM.RTCIceCandidate
-          , GHCJS.DOM.RTCIceCandidateEvent
-          , GHCJS.DOM.RTCPeerConnection
-          , GHCJS.DOM.RTCRtpReceiver
-          , GHCJS.DOM.RTCRtpSender
-          , GHCJS.DOM.RTCRtpTransceiver
-          , GHCJS.DOM.RTCSessionDescription
-          , GHCJS.DOM.RTCTrackEvent
-          , GHCJS.DOM.RadioNodeList
-          , GHCJS.DOM.Range
-          , GHCJS.DOM.ReadableByteStreamController
-          , GHCJS.DOM.ReadableStream
-          , GHCJS.DOM.ReadableStreamDefaultController
-          , GHCJS.DOM.ReadableStreamDefaultReader
-          , GHCJS.DOM.ReadableStreamSource
-          , GHCJS.DOM.Rect
-          , GHCJS.DOM.Request
-          , GHCJS.DOM.RequestAnimationFrameCallback
-          , GHCJS.DOM.Response
-          , GHCJS.DOM.SQLError
-          , GHCJS.DOM.SQLException
-          , GHCJS.DOM.SQLResultSet
-          , GHCJS.DOM.SQLResultSetRowList
-          , GHCJS.DOM.SQLStatementCallback
-          , GHCJS.DOM.SQLStatementErrorCallback
-          , GHCJS.DOM.SQLTransaction
-          , GHCJS.DOM.SQLTransactionCallback
-          , GHCJS.DOM.SQLTransactionErrorCallback
-          , GHCJS.DOM.SVGAElement
-          , GHCJS.DOM.SVGAltGlyphElement
-          , GHCJS.DOM.SVGAngle
-          , GHCJS.DOM.SVGAnimatedAngle
-          , GHCJS.DOM.SVGAnimatedBoolean
-          , GHCJS.DOM.SVGAnimatedEnumeration
-          , GHCJS.DOM.SVGAnimatedInteger
-          , GHCJS.DOM.SVGAnimatedLength
-          , GHCJS.DOM.SVGAnimatedLengthList
-          , GHCJS.DOM.SVGAnimatedNumber
-          , GHCJS.DOM.SVGAnimatedNumberList
-          , GHCJS.DOM.SVGAnimatedPreserveAspectRatio
-          , GHCJS.DOM.SVGAnimatedRect
-          , GHCJS.DOM.SVGAnimatedString
-          , GHCJS.DOM.SVGAnimatedTransformList
-          , GHCJS.DOM.SVGAnimationElement
-          , GHCJS.DOM.SVGCircleElement
-          , GHCJS.DOM.SVGClipPathElement
-          , GHCJS.DOM.SVGComponentTransferFunctionElement
-          , GHCJS.DOM.SVGCursorElement
-          , GHCJS.DOM.SVGElement
-          , GHCJS.DOM.SVGEllipseElement
-          , GHCJS.DOM.SVGException
-          , GHCJS.DOM.SVGExternalResourcesRequired
-          , GHCJS.DOM.SVGFEBlendElement
-          , GHCJS.DOM.SVGFEColorMatrixElement
-          , GHCJS.DOM.SVGFEComponentTransferElement
-          , GHCJS.DOM.SVGFECompositeElement
-          , GHCJS.DOM.SVGFEConvolveMatrixElement
-          , GHCJS.DOM.SVGFEDiffuseLightingElement
-          , GHCJS.DOM.SVGFEDisplacementMapElement
-          , GHCJS.DOM.SVGFEDistantLightElement
-          , GHCJS.DOM.SVGFEDropShadowElement
-          , GHCJS.DOM.SVGFEGaussianBlurElement
-          , GHCJS.DOM.SVGFEImageElement
-          , GHCJS.DOM.SVGFEMergeNodeElement
-          , GHCJS.DOM.SVGFEMorphologyElement
-          , GHCJS.DOM.SVGFEOffsetElement
-          , GHCJS.DOM.SVGFEPointLightElement
-          , GHCJS.DOM.SVGFESpecularLightingElement
-          , GHCJS.DOM.SVGFESpotLightElement
-          , GHCJS.DOM.SVGFETileElement
-          , GHCJS.DOM.SVGFETurbulenceElement
-          , GHCJS.DOM.SVGFilterElement
-          , GHCJS.DOM.SVGFilterPrimitiveStandardAttributes
-          , GHCJS.DOM.SVGFitToViewBox
-          , GHCJS.DOM.SVGForeignObjectElement
-          , GHCJS.DOM.SVGGlyphRefElement
-          , GHCJS.DOM.SVGGradientElement
-          , GHCJS.DOM.SVGGraphicsElement
-          , GHCJS.DOM.SVGImageElement
-          , GHCJS.DOM.SVGLength
-          , GHCJS.DOM.SVGLengthList
-          , GHCJS.DOM.SVGLineElement
-          , GHCJS.DOM.SVGLinearGradientElement
-          , GHCJS.DOM.SVGMarkerElement
-          , GHCJS.DOM.SVGMaskElement
-          , GHCJS.DOM.SVGMatrix
-          , GHCJS.DOM.SVGNumber
-          , GHCJS.DOM.SVGNumberList
-          , GHCJS.DOM.SVGPathElement
-          , GHCJS.DOM.SVGPathSeg
-          , GHCJS.DOM.SVGPathSegArcAbs
-          , GHCJS.DOM.SVGPathSegArcRel
-          , GHCJS.DOM.SVGPathSegCurvetoCubicAbs
-          , GHCJS.DOM.SVGPathSegCurvetoCubicRel
-          , GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs
-          , GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel
-          , GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs
-          , GHCJS.DOM.SVGPathSegCurvetoQuadraticRel
-          , GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs
-          , GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel
-          , GHCJS.DOM.SVGPathSegLinetoAbs
-          , GHCJS.DOM.SVGPathSegLinetoHorizontalAbs
-          , GHCJS.DOM.SVGPathSegLinetoHorizontalRel
-          , GHCJS.DOM.SVGPathSegLinetoRel
-          , GHCJS.DOM.SVGPathSegLinetoVerticalAbs
-          , GHCJS.DOM.SVGPathSegLinetoVerticalRel
-          , GHCJS.DOM.SVGPathSegList
-          , GHCJS.DOM.SVGPathSegMovetoAbs
-          , GHCJS.DOM.SVGPathSegMovetoRel
-          , GHCJS.DOM.SVGPatternElement
-          , GHCJS.DOM.SVGPoint
-          , GHCJS.DOM.SVGPointList
-          , GHCJS.DOM.SVGPolygonElement
-          , GHCJS.DOM.SVGPolylineElement
-          , GHCJS.DOM.SVGPreserveAspectRatio
-          , GHCJS.DOM.SVGRadialGradientElement
-          , GHCJS.DOM.SVGRect
-          , GHCJS.DOM.SVGRectElement
-          , GHCJS.DOM.SVGRenderingIntent
-          , GHCJS.DOM.SVGSVGElement
-          , GHCJS.DOM.SVGScriptElement
-          , GHCJS.DOM.SVGStopElement
-          , GHCJS.DOM.SVGStringList
-          , GHCJS.DOM.SVGStyleElement
-          , GHCJS.DOM.SVGTests
-          , GHCJS.DOM.SVGTextContentElement
-          , GHCJS.DOM.SVGTextPathElement
-          , GHCJS.DOM.SVGTextPositioningElement
-          , GHCJS.DOM.SVGTransform
-          , GHCJS.DOM.SVGTransformList
-          , GHCJS.DOM.SVGURIReference
-          , GHCJS.DOM.SVGUnitTypes
-          , GHCJS.DOM.SVGUseElement
-          , GHCJS.DOM.SVGViewElement
-          , GHCJS.DOM.SVGViewSpec
-          , GHCJS.DOM.SVGZoomAndPan
-          , GHCJS.DOM.SVGZoomEvent
-          , GHCJS.DOM.Screen
-          , GHCJS.DOM.ScriptProcessorNode
-          , GHCJS.DOM.SecurityPolicyViolationEvent
-          , GHCJS.DOM.Selection
-          , GHCJS.DOM.ShadowRoot
-          , GHCJS.DOM.Slotable
-          , GHCJS.DOM.SourceBuffer
-          , GHCJS.DOM.SourceBufferList
-          , GHCJS.DOM.SpeechSynthesis
-          , GHCJS.DOM.SpeechSynthesisEvent
-          , GHCJS.DOM.SpeechSynthesisUtterance
-          , GHCJS.DOM.SpeechSynthesisVoice
-          , GHCJS.DOM.StaticRange
-          , GHCJS.DOM.Storage
-          , GHCJS.DOM.StorageErrorCallback
-          , GHCJS.DOM.StorageEvent
-          , GHCJS.DOM.StorageInfo
-          , GHCJS.DOM.StorageQuota
-          , GHCJS.DOM.StorageQuotaCallback
-          , GHCJS.DOM.StorageUsageCallback
-          , GHCJS.DOM.StringCallback
-          , GHCJS.DOM.StyleMedia
-          , GHCJS.DOM.StyleSheet
-          , GHCJS.DOM.StyleSheetList
-          , GHCJS.DOM.SubtleCrypto
-          , GHCJS.DOM.Text
-          , GHCJS.DOM.TextDecoder
-          , GHCJS.DOM.TextEncoder
-          , GHCJS.DOM.TextEvent
-          , GHCJS.DOM.TextMetrics
-          , GHCJS.DOM.TextTrack
-          , GHCJS.DOM.TextTrackCue
-          , GHCJS.DOM.TextTrackCueList
-          , GHCJS.DOM.TextTrackList
-          , GHCJS.DOM.TimeRanges
-          , GHCJS.DOM.Touch
-          , GHCJS.DOM.TouchEvent
-          , GHCJS.DOM.TouchList
-          , GHCJS.DOM.TrackEvent
-          , GHCJS.DOM.TransitionEvent
-          , GHCJS.DOM.TreeWalker
-          , GHCJS.DOM.UIEvent
-          , GHCJS.DOM.URL
-          , GHCJS.DOM.URLSearchParams
-          , GHCJS.DOM.UserMessageHandler
-          , GHCJS.DOM.VTTCue
-          , GHCJS.DOM.VTTRegion
-          , GHCJS.DOM.VTTRegionList
-          , GHCJS.DOM.ValidityState
-          , GHCJS.DOM.VideoPlaybackQuality
-          , GHCJS.DOM.VideoTrack
-          , GHCJS.DOM.VideoTrackList
-          , GHCJS.DOM.VoidCallback
-          , GHCJS.DOM.WaveShaperNode
-          , GHCJS.DOM.WebGL2RenderingContext
-          , GHCJS.DOM.WebGLActiveInfo
-          , GHCJS.DOM.WebGLCompressedTextureATC
-          , GHCJS.DOM.WebGLCompressedTexturePVRTC
-          , GHCJS.DOM.WebGLCompressedTextureS3TC
-          , GHCJS.DOM.WebGLContextEvent
-          , GHCJS.DOM.WebGLDebugRendererInfo
-          , GHCJS.DOM.WebGLDebugShaders
-          , GHCJS.DOM.WebGLDepthTexture
-          , GHCJS.DOM.WebGLDrawBuffers
-          , GHCJS.DOM.WebGLLoseContext
-          , GHCJS.DOM.WebGLRenderingContextBase
-          , GHCJS.DOM.WebGLShaderPrecisionFormat
-          , GHCJS.DOM.WebKitAnimationEvent
-          , GHCJS.DOM.WebKitCSSMatrix
-          , GHCJS.DOM.WebKitCSSRegionRule
-          , GHCJS.DOM.WebKitCSSViewportRule
-          , GHCJS.DOM.WebKitMediaKeyError
-          , GHCJS.DOM.WebKitMediaKeyMessageEvent
-          , GHCJS.DOM.WebKitMediaKeyNeededEvent
-          , GHCJS.DOM.WebKitMediaKeySession
-          , GHCJS.DOM.WebKitMediaKeys
-          , GHCJS.DOM.WebKitNamedFlow
-          , GHCJS.DOM.WebKitNamespace
-          , GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent
-          , GHCJS.DOM.WebKitPoint
-          , GHCJS.DOM.WebKitSubtleCrypto
-          , GHCJS.DOM.WebKitTransitionEvent
-          , GHCJS.DOM.WebSocket
-          , GHCJS.DOM.WheelEvent
-          , GHCJS.DOM.Window
-          , GHCJS.DOM.WindowEventHandlers
-          , GHCJS.DOM.WindowOrWorkerGlobalScope
-          , GHCJS.DOM.Worker
-          , GHCJS.DOM.WorkerGlobalScope
-          , GHCJS.DOM.WorkerLocation
-          , GHCJS.DOM.WorkerNavigator
-          , GHCJS.DOM.WritableStream
-          , GHCJS.DOM.XMLHttpRequest
-          , GHCJS.DOM.XMLHttpRequestEventTarget
-          , GHCJS.DOM.XMLHttpRequestProgressEvent
-          , GHCJS.DOM.XMLSerializer
-          , GHCJS.DOM.XPathEvaluator
-          , GHCJS.DOM.XPathException
-          , GHCJS.DOM.XPathExpression
-          , GHCJS.DOM.XPathNSResolver
-          , GHCJS.DOM.XPathResult
-          , GHCJS.DOM.XSLTProcessor
+cabal-version: 3.6
+name: ghcjs-dom
+version: 0.10.0.0
+build-type: Simple
+license: MIT
+license-file: LICENSE
+extra-doc-files: ChangeLog.md
+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
+synopsis: DOM library that supports both GHCJS and GHC
+description:
+    Document Object Model (DOM) functions that work with
+    GHCJS, but can also be used with GHC and a Browser.
+category: Web
+author: Hamish Mackenzie
+
+tested-with:
+  GHC == 8.8.1 || == 8.6.5 ||  == 8.4.4 || == 8.2.2 || == 8.0.2 || == 7.10.3,
+  GHCJS == 8.4 || == 8.2
+
+source-repository head
+  type:         git
+  location:     https://github.com/ghcjs/ghcjs-dom
+  subdir:       ghcjs-dom
+
+flag jsffi
+    description:
+        Use JavaScriptFFI extension for GHCJS JavaScript output
+    manual: True
+
+flag debug
+    description:
+        Enable debug features
+    default: False
+    manual: True
+
+library
+    build-depends: base <5,
+                   containers >=0.5.7.1 && <0.9,
+                   transformers >=0.2 && <0.7,
+                   text >= 0.11.0.6 && < 2.2
+
+    default-language: Haskell2010
+
+    hs-source-dirs: src
+
+    exposed-modules:
+        GHCJS.DOM.Debug
+        GHCJS.DOM.Debug.Internal
+        GHCJS.DOM.Document
+
+    if flag(debug)
+        cpp-options: -DGHCJS_DOM_DEBUG
+
+    -- The GHCJS 8 backend (ghcjs-dom-jsffi) stays at 0.9.x; from 0.10 the
+    -- JavaScript FFI backend is for GHC's JavaScript backend only.
+    if flag(jsffi) && impl(ghc >=9.6.4) && arch(javascript)
+        build-depends:
+            ghcjs-dom-javascript >=0.10.0.0 && <0.11
+    else
+        build-depends:
+            ghcjs-dom-jsaddle >=0.10.0.0 && <0.11
+
+    reexported-modules: GHCJS.DOM,
+                        GHCJS.DOM.Types,
+                        GHCJS.DOM.EventM,
+                        GHCJS.DOM.EventTargetClosures,
+    -- The list below is generated by dom-gen; do not edit.
+                        GHCJS.DOM.ANGLE_instanced_arrays,
+                        GHCJS.DOM.ARIAMixin,
+                        GHCJS.DOM.ARIANotifyMixin,
+                        GHCJS.DOM.AacEncoderConfig,
+                        GHCJS.DOM.AbortController,
+                        GHCJS.DOM.AbortSignal,
+                        GHCJS.DOM.AbstractRange,
+                        GHCJS.DOM.AbstractWorker,
+                        GHCJS.DOM.AddEventListenerOptions,
+                        GHCJS.DOM.AddressErrors,
+                        GHCJS.DOM.AllAcceptedCredentialsOptions,
+                        GHCJS.DOM.AnalyserNode,
+                        GHCJS.DOM.AnalyserOptions,
+                        GHCJS.DOM.Animatable,
+                        GHCJS.DOM.Animation,
+                        GHCJS.DOM.AnimationEffect,
+                        GHCJS.DOM.AnimationEvent,
+                        GHCJS.DOM.AnimationEventInit,
+                        GHCJS.DOM.AnimationFrameProvider,
+                        GHCJS.DOM.AnimationPlaybackEvent,
+                        GHCJS.DOM.AnimationPlaybackEventInit,
+                        GHCJS.DOM.AnimationTimeline,
+                        GHCJS.DOM.AnimationTrigger,
+                        GHCJS.DOM.AriaNotificationOptions,
+                        GHCJS.DOM.AssignedNodesOptions,
+                        GHCJS.DOM.Attr,
+                        GHCJS.DOM.AudioBuffer,
+                        GHCJS.DOM.AudioBufferOptions,
+                        GHCJS.DOM.AudioBufferSourceNode,
+                        GHCJS.DOM.AudioBufferSourceOptions,
+                        GHCJS.DOM.AudioConfiguration,
+                        GHCJS.DOM.AudioContext,
+                        GHCJS.DOM.AudioContextOptions,
+                        GHCJS.DOM.AudioData,
+                        GHCJS.DOM.AudioDataCopyToOptions,
+                        GHCJS.DOM.AudioDataInit,
+                        GHCJS.DOM.AudioDataOutputCallback,
+                        GHCJS.DOM.AudioDecoder,
+                        GHCJS.DOM.AudioDecoderConfig,
+                        GHCJS.DOM.AudioDecoderInit,
+                        GHCJS.DOM.AudioDecoderSupport,
+                        GHCJS.DOM.AudioDestinationNode,
+                        GHCJS.DOM.AudioEncoder,
+                        GHCJS.DOM.AudioEncoderConfig,
+                        GHCJS.DOM.AudioEncoderInit,
+                        GHCJS.DOM.AudioEncoderSupport,
+                        GHCJS.DOM.AudioListener,
+                        GHCJS.DOM.AudioNode,
+                        GHCJS.DOM.AudioNodeOptions,
+                        GHCJS.DOM.AudioParam,
+                        GHCJS.DOM.AudioParamMap,
+                        GHCJS.DOM.AudioProcessingEvent,
+                        GHCJS.DOM.AudioProcessingEventInit,
+                        GHCJS.DOM.AudioScheduledSourceNode,
+                        GHCJS.DOM.AudioSinkOptions,
+                        GHCJS.DOM.AudioTimestamp,
+                        GHCJS.DOM.AudioTrack,
+                        GHCJS.DOM.AudioTrackList,
+                        GHCJS.DOM.AudioWorklet,
+                        GHCJS.DOM.AudioWorkletGlobalScope,
+                        GHCJS.DOM.AudioWorkletNode,
+                        GHCJS.DOM.AudioWorkletNodeOptions,
+                        GHCJS.DOM.AudioWorkletProcessor,
+                        GHCJS.DOM.AudioWorkletProcessorConstructor,
+                        GHCJS.DOM.AuthenticationExtensionsClientInputs,
+                        GHCJS.DOM.AuthenticationExtensionsClientInputsJSON,
+                        GHCJS.DOM.AuthenticationExtensionsClientOutputs,
+                        GHCJS.DOM.AuthenticationExtensionsLargeBlobInputs,
+                        GHCJS.DOM.AuthenticationExtensionsLargeBlobInputsJSON,
+                        GHCJS.DOM.AuthenticationExtensionsLargeBlobOutputs,
+                        GHCJS.DOM.AuthenticationExtensionsPRFInputs,
+                        GHCJS.DOM.AuthenticationExtensionsPRFInputsJSON,
+                        GHCJS.DOM.AuthenticationExtensionsPRFOutputs,
+                        GHCJS.DOM.AuthenticationExtensionsPRFValues,
+                        GHCJS.DOM.AuthenticationExtensionsPRFValuesJSON,
+                        GHCJS.DOM.AuthenticationExtensionsPaymentInputs,
+                        GHCJS.DOM.AuthenticationExtensionsPaymentOutputs,
+                        GHCJS.DOM.AuthenticatorAssertionResponse,
+                        GHCJS.DOM.AuthenticatorAttestationResponse,
+                        GHCJS.DOM.AuthenticatorResponse,
+                        GHCJS.DOM.AuthenticatorSelectionCriteria,
+                        GHCJS.DOM.AutofillEvent,
+                        GHCJS.DOM.AvcEncoderConfig,
+                        GHCJS.DOM.BackgroundBlur,
+                        GHCJS.DOM.BarProp,
+                        GHCJS.DOM.BaseAudioContext,
+                        GHCJS.DOM.BeforeUnloadEvent,
+                        GHCJS.DOM.BiquadFilterNode,
+                        GHCJS.DOM.BiquadFilterOptions,
+                        GHCJS.DOM.Blob,
+                        GHCJS.DOM.BlobCallback,
+                        GHCJS.DOM.BlobEvent,
+                        GHCJS.DOM.BlobEventInit,
+                        GHCJS.DOM.BlobPropertyBag,
+                        GHCJS.DOM.Body,
+                        GHCJS.DOM.BroadcastChannel,
+                        GHCJS.DOM.BrowserBoundSignature,
+                        GHCJS.DOM.ByteLengthQueuingStrategy,
+                        GHCJS.DOM.CDATASection,
+                        GHCJS.DOM.CSS,
+                        GHCJS.DOM.CSSAnimation,
+                        GHCJS.DOM.CSSConditionRule,
+                        GHCJS.DOM.CSSContainerCondition,
+                        GHCJS.DOM.CSSContainerRule,
+                        GHCJS.DOM.CSSCounterStyleRule,
+                        GHCJS.DOM.CSSFontFaceDescriptors,
+                        GHCJS.DOM.CSSFontFaceRule,
+                        GHCJS.DOM.CSSFontFeatureValuesRule,
+                        GHCJS.DOM.CSSFontPaletteValuesRule,
+                        GHCJS.DOM.CSSGroupingRule,
+                        GHCJS.DOM.CSSImageValue,
+                        GHCJS.DOM.CSSImportRule,
+                        GHCJS.DOM.CSSKeyframeRule,
+                        GHCJS.DOM.CSSKeyframesRule,
+                        GHCJS.DOM.CSSKeywordValue,
+                        GHCJS.DOM.CSSLayerBlockRule,
+                        GHCJS.DOM.CSSLayerStatementRule,
+                        GHCJS.DOM.CSSMathClamp,
+                        GHCJS.DOM.CSSMathInvert,
+                        GHCJS.DOM.CSSMathMax,
+                        GHCJS.DOM.CSSMathMin,
+                        GHCJS.DOM.CSSMathNegate,
+                        GHCJS.DOM.CSSMathProduct,
+                        GHCJS.DOM.CSSMathSum,
+                        GHCJS.DOM.CSSMathValue,
+                        GHCJS.DOM.CSSMatrixComponent,
+                        GHCJS.DOM.CSSMatrixComponentOptions,
+                        GHCJS.DOM.CSSMediaRule,
+                        GHCJS.DOM.CSSNamespaceRule,
+                        GHCJS.DOM.CSSNestedDeclarations,
+                        GHCJS.DOM.CSSNumericArray,
+                        GHCJS.DOM.CSSNumericType,
+                        GHCJS.DOM.CSSNumericValue,
+                        GHCJS.DOM.CSSPageDescriptors,
+                        GHCJS.DOM.CSSPageRule,
+                        GHCJS.DOM.CSSPerspective,
+                        GHCJS.DOM.CSSPositionTryDescriptors,
+                        GHCJS.DOM.CSSPositionTryRule,
+                        GHCJS.DOM.CSSPropertyRule,
+                        GHCJS.DOM.CSSRotate,
+                        GHCJS.DOM.CSSRule,
+                        GHCJS.DOM.CSSRuleList,
+                        GHCJS.DOM.CSSScale,
+                        GHCJS.DOM.CSSScopeRule,
+                        GHCJS.DOM.CSSSkew,
+                        GHCJS.DOM.CSSSkewX,
+                        GHCJS.DOM.CSSSkewY,
+                        GHCJS.DOM.CSSStartingStyleRule,
+                        GHCJS.DOM.CSSStyleDeclaration,
+                        GHCJS.DOM.CSSStyleProperties,
+                        GHCJS.DOM.CSSStyleRule,
+                        GHCJS.DOM.CSSStyleSheet,
+                        GHCJS.DOM.CSSStyleSheetInit,
+                        GHCJS.DOM.CSSStyleValue,
+                        GHCJS.DOM.CSSSupportsRule,
+                        GHCJS.DOM.CSSTransformComponent,
+                        GHCJS.DOM.CSSTransformValue,
+                        GHCJS.DOM.CSSTransition,
+                        GHCJS.DOM.CSSTranslate,
+                        GHCJS.DOM.CSSUnitValue,
+                        GHCJS.DOM.CSSUnparsedValue,
+                        GHCJS.DOM.CSSVariableReferenceValue,
+                        GHCJS.DOM.CSSViewTransitionRule,
+                        GHCJS.DOM.Cache,
+                        GHCJS.DOM.CacheQueryOptions,
+                        GHCJS.DOM.CacheStorage,
+                        GHCJS.DOM.CanvasCaptureMediaStreamTrack,
+                        GHCJS.DOM.CanvasCompositing,
+                        GHCJS.DOM.CanvasDrawImage,
+                        GHCJS.DOM.CanvasDrawPath,
+                        GHCJS.DOM.CanvasFillStrokeStyles,
+                        GHCJS.DOM.CanvasFilters,
+                        GHCJS.DOM.CanvasGradient,
+                        GHCJS.DOM.CanvasImageData,
+                        GHCJS.DOM.CanvasImageSmoothing,
+                        GHCJS.DOM.CanvasPath,
+                        GHCJS.DOM.CanvasPathDrawingStyles,
+                        GHCJS.DOM.CanvasPattern,
+                        GHCJS.DOM.CanvasRect,
+                        GHCJS.DOM.CanvasRenderingContext2D,
+                        GHCJS.DOM.CanvasRenderingContext2DSettings,
+                        GHCJS.DOM.CanvasSettings,
+                        GHCJS.DOM.CanvasShadowStyles,
+                        GHCJS.DOM.CanvasState,
+                        GHCJS.DOM.CanvasText,
+                        GHCJS.DOM.CanvasTextDrawingStyles,
+                        GHCJS.DOM.CanvasTransform,
+                        GHCJS.DOM.CanvasUserInterface,
+                        GHCJS.DOM.CaptureController,
+                        GHCJS.DOM.CaretPosition,
+                        GHCJS.DOM.CaretPositionFromPointOptions,
+                        GHCJS.DOM.ChannelMergerNode,
+                        GHCJS.DOM.ChannelMergerOptions,
+                        GHCJS.DOM.ChannelSplitterNode,
+                        GHCJS.DOM.ChannelSplitterOptions,
+                        GHCJS.DOM.ChapterInformationInit,
+                        GHCJS.DOM.CharacterData,
+                        GHCJS.DOM.CheckVisibilityOptions,
+                        GHCJS.DOM.ChildNode,
+                        GHCJS.DOM.Client,
+                        GHCJS.DOM.ClientQueryOptions,
+                        GHCJS.DOM.Clients,
+                        GHCJS.DOM.Clipboard,
+                        GHCJS.DOM.ClipboardChangeEvent,
+                        GHCJS.DOM.ClipboardEvent,
+                        GHCJS.DOM.ClipboardEventInit,
+                        GHCJS.DOM.ClipboardItem,
+                        GHCJS.DOM.ClipboardItemOptions,
+                        GHCJS.DOM.ClipboardUnsanitizedFormats,
+                        GHCJS.DOM.CloseEvent,
+                        GHCJS.DOM.CloseEventInit,
+                        GHCJS.DOM.CloseWatcher,
+                        GHCJS.DOM.CloseWatcherOptions,
+                        GHCJS.DOM.CommandEvent,
+                        GHCJS.DOM.CommandEventInit,
+                        GHCJS.DOM.Comment,
+                        GHCJS.DOM.CompositionEvent,
+                        GHCJS.DOM.CompositionEventInit,
+                        GHCJS.DOM.CompressionStream,
+                        GHCJS.DOM.ComputedEffectTiming,
+                        GHCJS.DOM.Console,
+                        GHCJS.DOM.ConstantSourceNode,
+                        GHCJS.DOM.ConstantSourceOptions,
+                        GHCJS.DOM.ConstrainBooleanOrDOMStringParameters,
+                        GHCJS.DOM.ConstrainBooleanParameters,
+                        GHCJS.DOM.ConstrainDOMStringParameters,
+                        GHCJS.DOM.ConstrainDoubleRange,
+                        GHCJS.DOM.ConstrainPoint2DParameters,
+                        GHCJS.DOM.ConstrainULongRange,
+                        GHCJS.DOM.ContactAddress,
+                        GHCJS.DOM.ContentVisibilityAutoStateChangeEvent,
+                        GHCJS.DOM.ContentVisibilityAutoStateChangeEventInit,
+                        GHCJS.DOM.ConvolverNode,
+                        GHCJS.DOM.ConvolverOptions,
+                        GHCJS.DOM.CookieChangeEvent,
+                        GHCJS.DOM.CookieChangeEventInit,
+                        GHCJS.DOM.CookieInit,
+                        GHCJS.DOM.CookieListItem,
+                        GHCJS.DOM.CookieStore,
+                        GHCJS.DOM.CookieStoreDeleteOptions,
+                        GHCJS.DOM.CookieStoreGetOptions,
+                        GHCJS.DOM.CookieStoreManager,
+                        GHCJS.DOM.CountQueuingStrategy,
+                        GHCJS.DOM.CreateHTMLCallback,
+                        GHCJS.DOM.CreateParserOptionsCallback,
+                        GHCJS.DOM.CreateScriptCallback,
+                        GHCJS.DOM.CreateScriptURLCallback,
+                        GHCJS.DOM.Credential,
+                        GHCJS.DOM.CredentialCreationOptions,
+                        GHCJS.DOM.CredentialData,
+                        GHCJS.DOM.CredentialPropertiesOutput,
+                        GHCJS.DOM.CredentialRequestOptions,
+                        GHCJS.DOM.CredentialsContainer,
+                        GHCJS.DOM.Crypto,
+                        GHCJS.DOM.CryptoKey,
+                        GHCJS.DOM.CryptoKeyPair,
+                        GHCJS.DOM.CurrentUserDetailsOptions,
+                        GHCJS.DOM.CustomElementConstructor,
+                        GHCJS.DOM.CustomElementRegistry,
+                        GHCJS.DOM.CustomEvent,
+                        GHCJS.DOM.CustomEventInit,
+                        GHCJS.DOM.CustomStateSet,
+                        GHCJS.DOM.DOMException,
+                        GHCJS.DOM.DOMImplementation,
+                        GHCJS.DOM.DOMMatrix,
+                        GHCJS.DOM.DOMMatrix2DInit,
+                        GHCJS.DOM.DOMMatrixInit,
+                        GHCJS.DOM.DOMMatrixReadOnly,
+                        GHCJS.DOM.DOMParser,
+                        GHCJS.DOM.DOMPoint,
+                        GHCJS.DOM.DOMPointInit,
+                        GHCJS.DOM.DOMPointReadOnly,
+                        GHCJS.DOM.DOMQuad,
+                        GHCJS.DOM.DOMQuadInit,
+                        GHCJS.DOM.DOMRect,
+                        GHCJS.DOM.DOMRectInit,
+                        GHCJS.DOM.DOMRectList,
+                        GHCJS.DOM.DOMRectReadOnly,
+                        GHCJS.DOM.DOMStringList,
+                        GHCJS.DOM.DOMStringMap,
+                        GHCJS.DOM.DOMTokenList,
+                        GHCJS.DOM.DataCue,
+                        GHCJS.DOM.DataTransfer,
+                        GHCJS.DOM.DataTransferItem,
+                        GHCJS.DOM.DataTransferItemList,
+                        GHCJS.DOM.DecodeErrorCallback,
+                        GHCJS.DOM.DecodeSuccessCallback,
+                        GHCJS.DOM.DecompressionStream,
+                        GHCJS.DOM.DedicatedWorkerGlobalScope,
+                        GHCJS.DOM.DelayNode,
+                        GHCJS.DOM.DelayOptions,
+                        GHCJS.DOM.DeviceChangeEvent,
+                        GHCJS.DOM.DeviceMotionEvent,
+                        GHCJS.DOM.DeviceMotionEventAcceleration,
+                        GHCJS.DOM.DeviceMotionEventAccelerationInit,
+                        GHCJS.DOM.DeviceMotionEventInit,
+                        GHCJS.DOM.DeviceMotionEventRotationRate,
+                        GHCJS.DOM.DeviceMotionEventRotationRateInit,
+                        GHCJS.DOM.DeviceOrientationEvent,
+                        GHCJS.DOM.DeviceOrientationEventInit,
+                        GHCJS.DOM.DigitalCredential,
+                        GHCJS.DOM.DigitalCredentialCreateRequest,
+                        GHCJS.DOM.DigitalCredentialCreationOptions,
+                        GHCJS.DOM.DigitalCredentialGetRequest,
+                        GHCJS.DOM.DigitalCredentialRequestOptions,
+                        GHCJS.DOM.DisplayMediaStreamOptions,
+                        GHCJS.DOM.DocumentFragment,
+                        GHCJS.DOM.DocumentOrShadowRoot,
+                        GHCJS.DOM.DocumentPictureInPicture,
+                        GHCJS.DOM.DocumentPictureInPictureEvent,
+                        GHCJS.DOM.DocumentPictureInPictureEventInit,
+                        GHCJS.DOM.DocumentPictureInPictureOptions,
+                        GHCJS.DOM.DocumentTimeline,
+                        GHCJS.DOM.DocumentTimelineOptions,
+                        GHCJS.DOM.DocumentType,
+                        GHCJS.DOM.DoubleRange,
+                        GHCJS.DOM.DragEvent,
+                        GHCJS.DOM.DragEventInit,
+                        GHCJS.DOM.DynamicsCompressorNode,
+                        GHCJS.DOM.DynamicsCompressorOptions,
+                        GHCJS.DOM.EXT_blend_minmax,
+                        GHCJS.DOM.EXT_clip_control,
+                        GHCJS.DOM.EXT_color_buffer_float,
+                        GHCJS.DOM.EXT_color_buffer_half_float,
+                        GHCJS.DOM.EXT_float_blend,
+                        GHCJS.DOM.EXT_frag_depth,
+                        GHCJS.DOM.EXT_polygon_offset_clamp,
+                        GHCJS.DOM.EXT_sRGB,
+                        GHCJS.DOM.EXT_shader_texture_lod,
+                        GHCJS.DOM.EXT_texture_compression_bptc,
+                        GHCJS.DOM.EXT_texture_compression_rgtc,
+                        GHCJS.DOM.EXT_texture_filter_anisotropic,
+                        GHCJS.DOM.EXT_texture_mirror_clamp_to_edge,
+                        GHCJS.DOM.EXT_texture_norm16,
+                        GHCJS.DOM.EffectTiming,
+                        GHCJS.DOM.Element,
+                        GHCJS.DOM.ElementCSSInlineStyle,
+                        GHCJS.DOM.ElementContentEditable,
+                        GHCJS.DOM.ElementCreationOptions,
+                        GHCJS.DOM.ElementDefinitionOptions,
+                        GHCJS.DOM.ElementInternals,
+                        GHCJS.DOM.EncodedAudioChunk,
+                        GHCJS.DOM.EncodedAudioChunkInit,
+                        GHCJS.DOM.EncodedAudioChunkMetadata,
+                        GHCJS.DOM.EncodedAudioChunkOutputCallback,
+                        GHCJS.DOM.EncodedVideoChunk,
+                        GHCJS.DOM.EncodedVideoChunkInit,
+                        GHCJS.DOM.EncodedVideoChunkMetadata,
+                        GHCJS.DOM.EncodedVideoChunkOutputCallback,
+                        GHCJS.DOM.Enums,
+                        GHCJS.DOM.ErrorCallback,
+                        GHCJS.DOM.ErrorEvent,
+                        GHCJS.DOM.ErrorEventInit,
+                        GHCJS.DOM.Event,
+                        GHCJS.DOM.EventCounts,
+                        GHCJS.DOM.EventInit,
+                        GHCJS.DOM.EventListenerOptions,
+                        GHCJS.DOM.EventModifierInit,
+                        GHCJS.DOM.EventSource,
+                        GHCJS.DOM.EventSourceInit,
+                        GHCJS.DOM.EventTarget,
+                        GHCJS.DOM.ExtendableCookieChangeEvent,
+                        GHCJS.DOM.ExtendableCookieChangeEventInit,
+                        GHCJS.DOM.ExtendableEvent,
+                        GHCJS.DOM.ExtendableEventInit,
+                        GHCJS.DOM.ExtendableMessageEvent,
+                        GHCJS.DOM.ExtendableMessageEventInit,
+                        GHCJS.DOM.External,
+                        GHCJS.DOM.FederatedCredentialInit,
+                        GHCJS.DOM.FederatedCredentialRequestOptions,
+                        GHCJS.DOM.FetchEvent,
+                        GHCJS.DOM.FetchEventInit,
+                        GHCJS.DOM.File,
+                        GHCJS.DOM.FileCallback,
+                        GHCJS.DOM.FileList,
+                        GHCJS.DOM.FilePropertyBag,
+                        GHCJS.DOM.FileReader,
+                        GHCJS.DOM.FileReaderSync,
+                        GHCJS.DOM.FileSystem,
+                        GHCJS.DOM.FileSystemCreateWritableOptions,
+                        GHCJS.DOM.FileSystemDirectoryEntry,
+                        GHCJS.DOM.FileSystemDirectoryHandle,
+                        GHCJS.DOM.FileSystemDirectoryReader,
+                        GHCJS.DOM.FileSystemEntriesCallback,
+                        GHCJS.DOM.FileSystemEntry,
+                        GHCJS.DOM.FileSystemEntryCallback,
+                        GHCJS.DOM.FileSystemFileEntry,
+                        GHCJS.DOM.FileSystemFileHandle,
+                        GHCJS.DOM.FileSystemFlags,
+                        GHCJS.DOM.FileSystemGetDirectoryOptions,
+                        GHCJS.DOM.FileSystemGetFileOptions,
+                        GHCJS.DOM.FileSystemHandle,
+                        GHCJS.DOM.FileSystemReadWriteOptions,
+                        GHCJS.DOM.FileSystemRemoveOptions,
+                        GHCJS.DOM.FileSystemSyncAccessHandle,
+                        GHCJS.DOM.FileSystemWritableFileStream,
+                        GHCJS.DOM.FlacEncoderConfig,
+                        GHCJS.DOM.FocusEvent,
+                        GHCJS.DOM.FocusEventInit,
+                        GHCJS.DOM.FocusOptions,
+                        GHCJS.DOM.FontFace,
+                        GHCJS.DOM.FontFaceDescriptors,
+                        GHCJS.DOM.FontFaceSet,
+                        GHCJS.DOM.FontFaceSetLoadEvent,
+                        GHCJS.DOM.FontFaceSetLoadEventInit,
+                        GHCJS.DOM.FontFaceSource,
+                        GHCJS.DOM.FormData,
+                        GHCJS.DOM.FormDataEvent,
+                        GHCJS.DOM.FormDataEventInit,
+                        GHCJS.DOM.FragmentDirective,
+                        GHCJS.DOM.FrameRequestCallback,
+                        GHCJS.DOM.FullscreenOptions,
+                        GHCJS.DOM.FunctionStringCallback,
+                        GHCJS.DOM.GPU,
+                        GHCJS.DOM.GPUAdapter,
+                        GHCJS.DOM.GPUAdapterInfo,
+                        GHCJS.DOM.GPUBindGroup,
+                        GHCJS.DOM.GPUBindGroupDescriptor,
+                        GHCJS.DOM.GPUBindGroupEntry,
+                        GHCJS.DOM.GPUBindGroupLayout,
+                        GHCJS.DOM.GPUBindGroupLayoutDescriptor,
+                        GHCJS.DOM.GPUBindGroupLayoutEntry,
+                        GHCJS.DOM.GPUBindingCommandsMixin,
+                        GHCJS.DOM.GPUBlendComponent,
+                        GHCJS.DOM.GPUBlendState,
+                        GHCJS.DOM.GPUBuffer,
+                        GHCJS.DOM.GPUBufferBinding,
+                        GHCJS.DOM.GPUBufferBindingLayout,
+                        GHCJS.DOM.GPUBufferDescriptor,
+                        GHCJS.DOM.GPUCanvasConfiguration,
+                        GHCJS.DOM.GPUCanvasContext,
+                        GHCJS.DOM.GPUCanvasToneMapping,
+                        GHCJS.DOM.GPUColorDict,
+                        GHCJS.DOM.GPUColorTargetState,
+                        GHCJS.DOM.GPUCommandBuffer,
+                        GHCJS.DOM.GPUCommandBufferDescriptor,
+                        GHCJS.DOM.GPUCommandEncoder,
+                        GHCJS.DOM.GPUCommandEncoderDescriptor,
+                        GHCJS.DOM.GPUCompilationInfo,
+                        GHCJS.DOM.GPUCompilationMessage,
+                        GHCJS.DOM.GPUComputePassDescriptor,
+                        GHCJS.DOM.GPUComputePassEncoder,
+                        GHCJS.DOM.GPUComputePassTimestampWrites,
+                        GHCJS.DOM.GPUComputePipeline,
+                        GHCJS.DOM.GPUComputePipelineDescriptor,
+                        GHCJS.DOM.GPUCopyExternalImageDestInfo,
+                        GHCJS.DOM.GPUCopyExternalImageSourceInfo,
+                        GHCJS.DOM.GPUDebugCommandsMixin,
+                        GHCJS.DOM.GPUDepthStencilState,
+                        GHCJS.DOM.GPUDevice,
+                        GHCJS.DOM.GPUDeviceDescriptor,
+                        GHCJS.DOM.GPUDeviceLostInfo,
+                        GHCJS.DOM.GPUError,
+                        GHCJS.DOM.GPUExtent3DDict,
+                        GHCJS.DOM.GPUExternalTexture,
+                        GHCJS.DOM.GPUExternalTextureBindingLayout,
+                        GHCJS.DOM.GPUExternalTextureDescriptor,
+                        GHCJS.DOM.GPUFragmentState,
+                        GHCJS.DOM.GPUInternalError,
+                        GHCJS.DOM.GPUMultisampleState,
+                        GHCJS.DOM.GPUObjectBase,
+                        GHCJS.DOM.GPUObjectDescriptorBase,
+                        GHCJS.DOM.GPUOrigin2DDict,
+                        GHCJS.DOM.GPUOrigin3DDict,
+                        GHCJS.DOM.GPUOutOfMemoryError,
+                        GHCJS.DOM.GPUPipelineBase,
+                        GHCJS.DOM.GPUPipelineDescriptorBase,
+                        GHCJS.DOM.GPUPipelineError,
+                        GHCJS.DOM.GPUPipelineErrorInit,
+                        GHCJS.DOM.GPUPipelineLayout,
+                        GHCJS.DOM.GPUPipelineLayoutDescriptor,
+                        GHCJS.DOM.GPUPrimitiveState,
+                        GHCJS.DOM.GPUProgrammableStage,
+                        GHCJS.DOM.GPUQuerySet,
+                        GHCJS.DOM.GPUQuerySetDescriptor,
+                        GHCJS.DOM.GPUQueue,
+                        GHCJS.DOM.GPUQueueDescriptor,
+                        GHCJS.DOM.GPURenderBundle,
+                        GHCJS.DOM.GPURenderBundleDescriptor,
+                        GHCJS.DOM.GPURenderBundleEncoder,
+                        GHCJS.DOM.GPURenderBundleEncoderDescriptor,
+                        GHCJS.DOM.GPURenderCommandsMixin,
+                        GHCJS.DOM.GPURenderPassColorAttachment,
+                        GHCJS.DOM.GPURenderPassDepthStencilAttachment,
+                        GHCJS.DOM.GPURenderPassDescriptor,
+                        GHCJS.DOM.GPURenderPassEncoder,
+                        GHCJS.DOM.GPURenderPassLayout,
+                        GHCJS.DOM.GPURenderPassTimestampWrites,
+                        GHCJS.DOM.GPURenderPipeline,
+                        GHCJS.DOM.GPURenderPipelineDescriptor,
+                        GHCJS.DOM.GPURequestAdapterOptions,
+                        GHCJS.DOM.GPUSampler,
+                        GHCJS.DOM.GPUSamplerBindingLayout,
+                        GHCJS.DOM.GPUSamplerDescriptor,
+                        GHCJS.DOM.GPUShaderModule,
+                        GHCJS.DOM.GPUShaderModuleCompilationHint,
+                        GHCJS.DOM.GPUShaderModuleDescriptor,
+                        GHCJS.DOM.GPUStencilFaceState,
+                        GHCJS.DOM.GPUStorageTextureBindingLayout,
+                        GHCJS.DOM.GPUSupportedFeatures,
+                        GHCJS.DOM.GPUSupportedLimits,
+                        GHCJS.DOM.GPUTexelCopyBufferInfo,
+                        GHCJS.DOM.GPUTexelCopyBufferLayout,
+                        GHCJS.DOM.GPUTexelCopyTextureInfo,
+                        GHCJS.DOM.GPUTexture,
+                        GHCJS.DOM.GPUTextureBindingLayout,
+                        GHCJS.DOM.GPUTextureDescriptor,
+                        GHCJS.DOM.GPUTextureView,
+                        GHCJS.DOM.GPUTextureViewDescriptor,
+                        GHCJS.DOM.GPUUncapturedErrorEvent,
+                        GHCJS.DOM.GPUUncapturedErrorEventInit,
+                        GHCJS.DOM.GPUValidationError,
+                        GHCJS.DOM.GPUVertexAttribute,
+                        GHCJS.DOM.GPUVertexBufferLayout,
+                        GHCJS.DOM.GPUVertexState,
+                        GHCJS.DOM.GainNode,
+                        GHCJS.DOM.GainOptions,
+                        GHCJS.DOM.Gamepad,
+                        GHCJS.DOM.GamepadButton,
+                        GHCJS.DOM.GamepadEffectParameters,
+                        GHCJS.DOM.GamepadEvent,
+                        GHCJS.DOM.GamepadEventInit,
+                        GHCJS.DOM.GamepadHapticActuator,
+                        GHCJS.DOM.GenericTransformStream,
+                        GHCJS.DOM.Geolocation,
+                        GHCJS.DOM.GeolocationCoordinates,
+                        GHCJS.DOM.GeolocationPosition,
+                        GHCJS.DOM.GeolocationPositionError,
+                        GHCJS.DOM.GetAnimationsOptions,
+                        GHCJS.DOM.GetComposedRangesOptions,
+                        GHCJS.DOM.GetHTMLOptions,
+                        GHCJS.DOM.GetNotificationOptions,
+                        GHCJS.DOM.GetRootNodeOptions,
+                        GHCJS.DOM.GlobalEventHandlers,
+                        GHCJS.DOM.HMACGetSecretInput,
+                        GHCJS.DOM.HMACGetSecretOutput,
+                        GHCJS.DOM.HTMLAllCollection,
+                        GHCJS.DOM.HTMLAnchorElement,
+                        GHCJS.DOM.HTMLAreaElement,
+                        GHCJS.DOM.HTMLAudioElement,
+                        GHCJS.DOM.HTMLBRElement,
+                        GHCJS.DOM.HTMLBaseElement,
+                        GHCJS.DOM.HTMLBodyElement,
+                        GHCJS.DOM.HTMLButtonElement,
+                        GHCJS.DOM.HTMLCanvasElement,
+                        GHCJS.DOM.HTMLCollection,
+                        GHCJS.DOM.HTMLDListElement,
+                        GHCJS.DOM.HTMLDataElement,
+                        GHCJS.DOM.HTMLDataListElement,
+                        GHCJS.DOM.HTMLDetailsElement,
+                        GHCJS.DOM.HTMLDialogElement,
+                        GHCJS.DOM.HTMLDirectoryElement,
+                        GHCJS.DOM.HTMLDivElement,
+                        GHCJS.DOM.HTMLElement,
+                        GHCJS.DOM.HTMLEmbedElement,
+                        GHCJS.DOM.HTMLFieldSetElement,
+                        GHCJS.DOM.HTMLFontElement,
+                        GHCJS.DOM.HTMLFormControlsCollection,
+                        GHCJS.DOM.HTMLFormElement,
+                        GHCJS.DOM.HTMLFrameElement,
+                        GHCJS.DOM.HTMLFrameSetElement,
+                        GHCJS.DOM.HTMLHRElement,
+                        GHCJS.DOM.HTMLHeadElement,
+                        GHCJS.DOM.HTMLHeadingElement,
+                        GHCJS.DOM.HTMLHtmlElement,
+                        GHCJS.DOM.HTMLHyperlinkElementUtils,
+                        GHCJS.DOM.HTMLIFrameElement,
+                        GHCJS.DOM.HTMLImageElement,
+                        GHCJS.DOM.HTMLInputElement,
+                        GHCJS.DOM.HTMLLIElement,
+                        GHCJS.DOM.HTMLLabelElement,
+                        GHCJS.DOM.HTMLLegendElement,
+                        GHCJS.DOM.HTMLLinkElement,
+                        GHCJS.DOM.HTMLMapElement,
+                        GHCJS.DOM.HTMLMarqueeElement,
+                        GHCJS.DOM.HTMLMediaElement,
+                        GHCJS.DOM.HTMLMenuElement,
+                        GHCJS.DOM.HTMLMetaElement,
+                        GHCJS.DOM.HTMLMeterElement,
+                        GHCJS.DOM.HTMLModElement,
+                        GHCJS.DOM.HTMLOListElement,
+                        GHCJS.DOM.HTMLObjectElement,
+                        GHCJS.DOM.HTMLOptGroupElement,
+                        GHCJS.DOM.HTMLOptionElement,
+                        GHCJS.DOM.HTMLOptionsCollection,
+                        GHCJS.DOM.HTMLOrSVGOrMathMLElement,
+                        GHCJS.DOM.HTMLOutputElement,
+                        GHCJS.DOM.HTMLParagraphElement,
+                        GHCJS.DOM.HTMLParamElement,
+                        GHCJS.DOM.HTMLPictureElement,
+                        GHCJS.DOM.HTMLPreElement,
+                        GHCJS.DOM.HTMLProgressElement,
+                        GHCJS.DOM.HTMLQuoteElement,
+                        GHCJS.DOM.HTMLScriptElement,
+                        GHCJS.DOM.HTMLSelectElement,
+                        GHCJS.DOM.HTMLSelectedContentElement,
+                        GHCJS.DOM.HTMLSlotElement,
+                        GHCJS.DOM.HTMLSourceElement,
+                        GHCJS.DOM.HTMLSpanElement,
+                        GHCJS.DOM.HTMLStyleElement,
+                        GHCJS.DOM.HTMLTableCaptionElement,
+                        GHCJS.DOM.HTMLTableCellElement,
+                        GHCJS.DOM.HTMLTableColElement,
+                        GHCJS.DOM.HTMLTableElement,
+                        GHCJS.DOM.HTMLTableRowElement,
+                        GHCJS.DOM.HTMLTableSectionElement,
+                        GHCJS.DOM.HTMLTemplateElement,
+                        GHCJS.DOM.HTMLTextAreaElement,
+                        GHCJS.DOM.HTMLTimeElement,
+                        GHCJS.DOM.HTMLTitleElement,
+                        GHCJS.DOM.HTMLTrackElement,
+                        GHCJS.DOM.HTMLUListElement,
+                        GHCJS.DOM.HTMLUnknownElement,
+                        GHCJS.DOM.HTMLVideoElement,
+                        GHCJS.DOM.HashChangeEvent,
+                        GHCJS.DOM.HashChangeEventInit,
+                        GHCJS.DOM.Headers,
+                        GHCJS.DOM.HevcEncoderConfig,
+                        GHCJS.DOM.Highlight,
+                        GHCJS.DOM.HighlightHitResult,
+                        GHCJS.DOM.HighlightRegistry,
+                        GHCJS.DOM.HighlightsFromPointOptions,
+                        GHCJS.DOM.History,
+                        GHCJS.DOM.HyperlinkElementUtils,
+                        GHCJS.DOM.IDBCursor,
+                        GHCJS.DOM.IDBCursorWithValue,
+                        GHCJS.DOM.IDBDatabase,
+                        GHCJS.DOM.IDBDatabaseInfo,
+                        GHCJS.DOM.IDBFactory,
+                        GHCJS.DOM.IDBGetAllOptions,
+                        GHCJS.DOM.IDBIndex,
+                        GHCJS.DOM.IDBIndexParameters,
+                        GHCJS.DOM.IDBKeyRange,
+                        GHCJS.DOM.IDBObjectStore,
+                        GHCJS.DOM.IDBObjectStoreParameters,
+                        GHCJS.DOM.IDBOpenDBRequest,
+                        GHCJS.DOM.IDBRecord,
+                        GHCJS.DOM.IDBRequest,
+                        GHCJS.DOM.IDBTransaction,
+                        GHCJS.DOM.IDBTransactionOptions,
+                        GHCJS.DOM.IDBVersionChangeEvent,
+                        GHCJS.DOM.IDBVersionChangeEventInit,
+                        GHCJS.DOM.IIRFilterNode,
+                        GHCJS.DOM.IIRFilterOptions,
+                        GHCJS.DOM.IdentityCredentialRequestOptions,
+                        GHCJS.DOM.IdentityProviderConfig,
+                        GHCJS.DOM.IdentityProviderRequestOptions,
+                        GHCJS.DOM.IdleDeadline,
+                        GHCJS.DOM.IdleRequestCallback,
+                        GHCJS.DOM.IdleRequestOptions,
+                        GHCJS.DOM.ImageBitmap,
+                        GHCJS.DOM.ImageBitmapRenderingContext,
+                        GHCJS.DOM.ImageCapture,
+                        GHCJS.DOM.ImageData,
+                        GHCJS.DOM.ImageDataSettings,
+                        GHCJS.DOM.ImageDecodeOptions,
+                        GHCJS.DOM.ImageDecodeResult,
+                        GHCJS.DOM.ImageDecoder,
+                        GHCJS.DOM.ImageDecoderInit,
+                        GHCJS.DOM.ImageEncodeOptions,
+                        GHCJS.DOM.ImageTrack,
+                        GHCJS.DOM.ImageTrackList,
+                        GHCJS.DOM.ImportNodeOptions,
+                        GHCJS.DOM.InputDeviceCapabilities,
+                        GHCJS.DOM.InputDeviceInfo,
+                        GHCJS.DOM.InputEvent,
+                        GHCJS.DOM.InputEventInit,
+                        GHCJS.DOM.InstallEvent,
+                        GHCJS.DOM.IntersectionObserver,
+                        GHCJS.DOM.IntersectionObserverCallback,
+                        GHCJS.DOM.IntersectionObserverEntry,
+                        GHCJS.DOM.IntersectionObserverEntryInit,
+                        GHCJS.DOM.IntersectionObserverInit,
+                        GHCJS.DOM.JsonWebKey,
+                        GHCJS.DOM.KHR_parallel_shader_compile,
+                        GHCJS.DOM.KeySystemTrackConfiguration,
+                        GHCJS.DOM.KeyboardEvent,
+                        GHCJS.DOM.KeyboardEventInit,
+                        GHCJS.DOM.KeyframeAnimationOptions,
+                        GHCJS.DOM.KeyframeEffect,
+                        GHCJS.DOM.KeyframeEffectOptions,
+                        GHCJS.DOM.LargestContentfulPaint,
+                        GHCJS.DOM.LinkStyle,
+                        GHCJS.DOM.Location,
+                        GHCJS.DOM.Lock,
+                        GHCJS.DOM.LockGrantedCallback,
+                        GHCJS.DOM.LockInfo,
+                        GHCJS.DOM.LockManager,
+                        GHCJS.DOM.LockManagerSnapshot,
+                        GHCJS.DOM.LockOptions,
+                        GHCJS.DOM.MIDIAccess,
+                        GHCJS.DOM.MIDIConnectionEvent,
+                        GHCJS.DOM.MIDIConnectionEventInit,
+                        GHCJS.DOM.MIDIInput,
+                        GHCJS.DOM.MIDIInputMap,
+                        GHCJS.DOM.MIDIMessageEvent,
+                        GHCJS.DOM.MIDIMessageEventInit,
+                        GHCJS.DOM.MIDIOptions,
+                        GHCJS.DOM.MIDIOutput,
+                        GHCJS.DOM.MIDIOutputMap,
+                        GHCJS.DOM.MIDIPort,
+                        GHCJS.DOM.MathMLElement,
+                        GHCJS.DOM.MediaCapabilities,
+                        GHCJS.DOM.MediaCapabilitiesDecodingInfo,
+                        GHCJS.DOM.MediaCapabilitiesEncodingInfo,
+                        GHCJS.DOM.MediaCapabilitiesInfo,
+                        GHCJS.DOM.MediaCapabilitiesKeySystemConfiguration,
+                        GHCJS.DOM.MediaConfiguration,
+                        GHCJS.DOM.MediaDecodingConfiguration,
+                        GHCJS.DOM.MediaDeviceInfo,
+                        GHCJS.DOM.MediaDevices,
+                        GHCJS.DOM.MediaEffectInfo,
+                        GHCJS.DOM.MediaElementAudioSourceNode,
+                        GHCJS.DOM.MediaElementAudioSourceOptions,
+                        GHCJS.DOM.MediaEncodingConfiguration,
+                        GHCJS.DOM.MediaEncryptedEvent,
+                        GHCJS.DOM.MediaEncryptedEventInit,
+                        GHCJS.DOM.MediaError,
+                        GHCJS.DOM.MediaImage,
+                        GHCJS.DOM.MediaKeyMessageEvent,
+                        GHCJS.DOM.MediaKeyMessageEventInit,
+                        GHCJS.DOM.MediaKeySession,
+                        GHCJS.DOM.MediaKeyStatusMap,
+                        GHCJS.DOM.MediaKeySystemAccess,
+                        GHCJS.DOM.MediaKeySystemConfiguration,
+                        GHCJS.DOM.MediaKeySystemMediaCapability,
+                        GHCJS.DOM.MediaKeys,
+                        GHCJS.DOM.MediaKeysPolicy,
+                        GHCJS.DOM.MediaList,
+                        GHCJS.DOM.MediaMetadata,
+                        GHCJS.DOM.MediaMetadataInit,
+                        GHCJS.DOM.MediaPositionState,
+                        GHCJS.DOM.MediaQueryList,
+                        GHCJS.DOM.MediaQueryListEvent,
+                        GHCJS.DOM.MediaQueryListEventInit,
+                        GHCJS.DOM.MediaRecorder,
+                        GHCJS.DOM.MediaRecorderOptions,
+                        GHCJS.DOM.MediaSession,
+                        GHCJS.DOM.MediaSessionActionDetails,
+                        GHCJS.DOM.MediaSessionActionHandler,
+                        GHCJS.DOM.MediaSettingsRange,
+                        GHCJS.DOM.MediaSource,
+                        GHCJS.DOM.MediaSourceHandle,
+                        GHCJS.DOM.MediaStream,
+                        GHCJS.DOM.MediaStreamAudioDestinationNode,
+                        GHCJS.DOM.MediaStreamAudioSourceNode,
+                        GHCJS.DOM.MediaStreamAudioSourceOptions,
+                        GHCJS.DOM.MediaStreamConstraints,
+                        GHCJS.DOM.MediaStreamTrack,
+                        GHCJS.DOM.MediaStreamTrackEvent,
+                        GHCJS.DOM.MediaStreamTrackEventInit,
+                        GHCJS.DOM.MediaStreamTrackHandle,
+                        GHCJS.DOM.MediaStreamTrackProcessor,
+                        GHCJS.DOM.MediaStreamTrackProcessorInit,
+                        GHCJS.DOM.MediaTrackCapabilities,
+                        GHCJS.DOM.MediaTrackConstraintSet,
+                        GHCJS.DOM.MediaTrackConstraints,
+                        GHCJS.DOM.MediaTrackSettings,
+                        GHCJS.DOM.MediaTrackSupportedConstraints,
+                        GHCJS.DOM.MessageChannel,
+                        GHCJS.DOM.MessageEvent,
+                        GHCJS.DOM.MessageEventInit,
+                        GHCJS.DOM.MessageEventTarget,
+                        GHCJS.DOM.MessagePort,
+                        GHCJS.DOM.MimeType,
+                        GHCJS.DOM.MimeTypeArray,
+                        GHCJS.DOM.MouseEvent,
+                        GHCJS.DOM.MouseEventInit,
+                        GHCJS.DOM.MultiCacheQueryOptions,
+                        GHCJS.DOM.MutationCallback,
+                        GHCJS.DOM.MutationObserver,
+                        GHCJS.DOM.MutationObserverInit,
+                        GHCJS.DOM.MutationRecord,
+                        GHCJS.DOM.NamedNodeMap,
+                        GHCJS.DOM.NavigateEvent,
+                        GHCJS.DOM.NavigateEventInit,
+                        GHCJS.DOM.Navigation,
+                        GHCJS.DOM.NavigationActivation,
+                        GHCJS.DOM.NavigationCurrentEntryChangeEvent,
+                        GHCJS.DOM.NavigationCurrentEntryChangeEventInit,
+                        GHCJS.DOM.NavigationDestination,
+                        GHCJS.DOM.NavigationEvent,
+                        GHCJS.DOM.NavigationHistoryEntry,
+                        GHCJS.DOM.NavigationInterceptHandler,
+                        GHCJS.DOM.NavigationInterceptOptions,
+                        GHCJS.DOM.NavigationNavigateOptions,
+                        GHCJS.DOM.NavigationOptions,
+                        GHCJS.DOM.NavigationPrecommitController,
+                        GHCJS.DOM.NavigationPrecommitHandler,
+                        GHCJS.DOM.NavigationPreloadManager,
+                        GHCJS.DOM.NavigationPreloadState,
+                        GHCJS.DOM.NavigationReloadOptions,
+                        GHCJS.DOM.NavigationResult,
+                        GHCJS.DOM.NavigationTransition,
+                        GHCJS.DOM.NavigationUpdateCurrentEntryOptions,
+                        GHCJS.DOM.Navigator,
+                        GHCJS.DOM.NavigatorAutomationInformation,
+                        GHCJS.DOM.NavigatorBadge,
+                        GHCJS.DOM.NavigatorConcurrentHardware,
+                        GHCJS.DOM.NavigatorContentUtils,
+                        GHCJS.DOM.NavigatorCookies,
+                        GHCJS.DOM.NavigatorGPU,
+                        GHCJS.DOM.NavigatorID,
+                        GHCJS.DOM.NavigatorLanguage,
+                        GHCJS.DOM.NavigatorLocks,
+                        GHCJS.DOM.NavigatorLogin,
+                        GHCJS.DOM.NavigatorOnLine,
+                        GHCJS.DOM.NavigatorPlugins,
+                        GHCJS.DOM.NavigatorStorage,
+                        GHCJS.DOM.Node,
+                        GHCJS.DOM.NodeFilter,
+                        GHCJS.DOM.NodeIterator,
+                        GHCJS.DOM.NodeList,
+                        GHCJS.DOM.NonDocumentTypeChildNode,
+                        GHCJS.DOM.NonElementParentNode,
+                        GHCJS.DOM.Notification,
+                        GHCJS.DOM.NotificationAction,
+                        GHCJS.DOM.NotificationEvent,
+                        GHCJS.DOM.NotificationEventInit,
+                        GHCJS.DOM.NotificationOptions,
+                        GHCJS.DOM.NotificationPermissionCallback,
+                        GHCJS.DOM.OES_draw_buffers_indexed,
+                        GHCJS.DOM.OES_element_index_uint,
+                        GHCJS.DOM.OES_fbo_render_mipmap,
+                        GHCJS.DOM.OES_standard_derivatives,
+                        GHCJS.DOM.OES_texture_float,
+                        GHCJS.DOM.OES_texture_float_linear,
+                        GHCJS.DOM.OES_texture_half_float,
+                        GHCJS.DOM.OES_texture_half_float_linear,
+                        GHCJS.DOM.OES_vertex_array_object,
+                        GHCJS.DOM.OTPCredentialRequestOptions,
+                        GHCJS.DOM.OVR_multiview2,
+                        GHCJS.DOM.OfflineAudioCompletionEvent,
+                        GHCJS.DOM.OfflineAudioCompletionEventInit,
+                        GHCJS.DOM.OfflineAudioContext,
+                        GHCJS.DOM.OfflineAudioContextOptions,
+                        GHCJS.DOM.OffscreenCanvas,
+                        GHCJS.DOM.OffscreenCanvasRenderingContext2D,
+                        GHCJS.DOM.OptionalEffectTiming,
+                        GHCJS.DOM.OpusEncoderConfig,
+                        GHCJS.DOM.Origin,
+                        GHCJS.DOM.OscillatorNode,
+                        GHCJS.DOM.OscillatorOptions,
+                        GHCJS.DOM.OverconstrainedError,
+                        GHCJS.DOM.PageRevealEvent,
+                        GHCJS.DOM.PageRevealEventInit,
+                        GHCJS.DOM.PageSwapEvent,
+                        GHCJS.DOM.PageSwapEventInit,
+                        GHCJS.DOM.PageTransitionEvent,
+                        GHCJS.DOM.PageTransitionEventInit,
+                        GHCJS.DOM.PaintTimingMixin,
+                        GHCJS.DOM.PannerNode,
+                        GHCJS.DOM.PannerOptions,
+                        GHCJS.DOM.ParentNode,
+                        GHCJS.DOM.ParseHTMLUnsafeOptions,
+                        GHCJS.DOM.PasswordCredential,
+                        GHCJS.DOM.PasswordCredentialData,
+                        GHCJS.DOM.Path2D,
+                        GHCJS.DOM.PayerErrors,
+                        GHCJS.DOM.PaymentCompleteDetails,
+                        GHCJS.DOM.PaymentCredentialInstrument,
+                        GHCJS.DOM.PaymentCurrencyAmount,
+                        GHCJS.DOM.PaymentDetailsBase,
+                        GHCJS.DOM.PaymentDetailsInit,
+                        GHCJS.DOM.PaymentDetailsModifier,
+                        GHCJS.DOM.PaymentDetailsUpdate,
+                        GHCJS.DOM.PaymentEntityLogo,
+                        GHCJS.DOM.PaymentItem,
+                        GHCJS.DOM.PaymentMethodChangeEvent,
+                        GHCJS.DOM.PaymentMethodChangeEventInit,
+                        GHCJS.DOM.PaymentMethodData,
+                        GHCJS.DOM.PaymentOptions,
+                        GHCJS.DOM.PaymentRequest,
+                        GHCJS.DOM.PaymentRequestUpdateEvent,
+                        GHCJS.DOM.PaymentRequestUpdateEventInit,
+                        GHCJS.DOM.PaymentResponse,
+                        GHCJS.DOM.PaymentShippingOption,
+                        GHCJS.DOM.PaymentValidationErrors,
+                        GHCJS.DOM.Performance,
+                        GHCJS.DOM.PerformanceEntry,
+                        GHCJS.DOM.PerformanceEventTiming,
+                        GHCJS.DOM.PerformanceMark,
+                        GHCJS.DOM.PerformanceMarkOptions,
+                        GHCJS.DOM.PerformanceMeasure,
+                        GHCJS.DOM.PerformanceMeasureOptions,
+                        GHCJS.DOM.PerformanceNavigation,
+                        GHCJS.DOM.PerformanceNavigationTiming,
+                        GHCJS.DOM.PerformanceObserver,
+                        GHCJS.DOM.PerformanceObserverCallback,
+                        GHCJS.DOM.PerformanceObserverCallbackOptions,
+                        GHCJS.DOM.PerformanceObserverEntryList,
+                        GHCJS.DOM.PerformanceObserverInit,
+                        GHCJS.DOM.PerformancePaintTiming,
+                        GHCJS.DOM.PerformanceResourceTiming,
+                        GHCJS.DOM.PerformanceServerTiming,
+                        GHCJS.DOM.PerformanceTiming,
+                        GHCJS.DOM.PeriodicWave,
+                        GHCJS.DOM.PeriodicWaveConstraints,
+                        GHCJS.DOM.PeriodicWaveOptions,
+                        GHCJS.DOM.PermissionStatus,
+                        GHCJS.DOM.Permissions,
+                        GHCJS.DOM.PhotoCapabilities,
+                        GHCJS.DOM.PhotoSettings,
+                        GHCJS.DOM.PictureInPictureEvent,
+                        GHCJS.DOM.PictureInPictureEventInit,
+                        GHCJS.DOM.PictureInPictureWindow,
+                        GHCJS.DOM.PlaneLayout,
+                        GHCJS.DOM.Plugin,
+                        GHCJS.DOM.PluginArray,
+                        GHCJS.DOM.Point2D,
+                        GHCJS.DOM.PointerEvent,
+                        GHCJS.DOM.PointerEventInit,
+                        GHCJS.DOM.PointerLockOptions,
+                        GHCJS.DOM.PopStateEvent,
+                        GHCJS.DOM.PopStateEventInit,
+                        GHCJS.DOM.PopoverTargetAttributes,
+                        GHCJS.DOM.PositionCallback,
+                        GHCJS.DOM.PositionErrorCallback,
+                        GHCJS.DOM.PositionOptions,
+                        GHCJS.DOM.PrivateToken,
+                        GHCJS.DOM.ProcessingInstruction,
+                        GHCJS.DOM.ProgressEvent,
+                        GHCJS.DOM.ProgressEventInit,
+                        GHCJS.DOM.PromiseRejectionEvent,
+                        GHCJS.DOM.PromiseRejectionEventInit,
+                        GHCJS.DOM.PropertyDefinition,
+                        GHCJS.DOM.PublicKeyCredential,
+                        GHCJS.DOM.PublicKeyCredentialCreationOptions,
+                        GHCJS.DOM.PublicKeyCredentialCreationOptionsJSON,
+                        GHCJS.DOM.PublicKeyCredentialDescriptor,
+                        GHCJS.DOM.PublicKeyCredentialDescriptorJSON,
+                        GHCJS.DOM.PublicKeyCredentialEntity,
+                        GHCJS.DOM.PublicKeyCredentialParameters,
+                        GHCJS.DOM.PublicKeyCredentialRequestOptions,
+                        GHCJS.DOM.PublicKeyCredentialRequestOptionsJSON,
+                        GHCJS.DOM.PublicKeyCredentialRpEntity,
+                        GHCJS.DOM.PublicKeyCredentialUserEntity,
+                        GHCJS.DOM.PublicKeyCredentialUserEntityJSON,
+                        GHCJS.DOM.PushEvent,
+                        GHCJS.DOM.PushEventInit,
+                        GHCJS.DOM.PushManager,
+                        GHCJS.DOM.PushManagerAttribute,
+                        GHCJS.DOM.PushMessageData,
+                        GHCJS.DOM.PushSubscription,
+                        GHCJS.DOM.PushSubscriptionChangeEvent,
+                        GHCJS.DOM.PushSubscriptionChangeEventInit,
+                        GHCJS.DOM.PushSubscriptionJSON,
+                        GHCJS.DOM.PushSubscriptionKeys,
+                        GHCJS.DOM.PushSubscriptionOptions,
+                        GHCJS.DOM.PushSubscriptionOptionsInit,
+                        GHCJS.DOM.QueuingStrategy,
+                        GHCJS.DOM.QueuingStrategyInit,
+                        GHCJS.DOM.QueuingStrategySize,
+                        GHCJS.DOM.RTCAnswerOptions,
+                        GHCJS.DOM.RTCCertificate,
+                        GHCJS.DOM.RTCConfiguration,
+                        GHCJS.DOM.RTCDTMFSender,
+                        GHCJS.DOM.RTCDTMFToneChangeEvent,
+                        GHCJS.DOM.RTCDTMFToneChangeEventInit,
+                        GHCJS.DOM.RTCDataChannel,
+                        GHCJS.DOM.RTCDataChannelEvent,
+                        GHCJS.DOM.RTCDataChannelEventInit,
+                        GHCJS.DOM.RTCDataChannelInit,
+                        GHCJS.DOM.RTCDtlsFingerprint,
+                        GHCJS.DOM.RTCDtlsTransport,
+                        GHCJS.DOM.RTCEncodedAudioFrame,
+                        GHCJS.DOM.RTCEncodedAudioFrameMetadata,
+                        GHCJS.DOM.RTCEncodedAudioFrameOptions,
+                        GHCJS.DOM.RTCEncodedFrameMetadata,
+                        GHCJS.DOM.RTCEncodedVideoFrame,
+                        GHCJS.DOM.RTCEncodedVideoFrameMetadata,
+                        GHCJS.DOM.RTCEncodedVideoFrameOptions,
+                        GHCJS.DOM.RTCError,
+                        GHCJS.DOM.RTCErrorEvent,
+                        GHCJS.DOM.RTCErrorEventInit,
+                        GHCJS.DOM.RTCErrorInit,
+                        GHCJS.DOM.RTCIceCandidate,
+                        GHCJS.DOM.RTCIceCandidateInit,
+                        GHCJS.DOM.RTCIceCandidatePair,
+                        GHCJS.DOM.RTCIceServer,
+                        GHCJS.DOM.RTCIceTransport,
+                        GHCJS.DOM.RTCLocalIceCandidateInit,
+                        GHCJS.DOM.RTCLocalSessionDescriptionInit,
+                        GHCJS.DOM.RTCOfferAnswerOptions,
+                        GHCJS.DOM.RTCOfferOptions,
+                        GHCJS.DOM.RTCPeerConnection,
+                        GHCJS.DOM.RTCPeerConnectionErrorCallback,
+                        GHCJS.DOM.RTCPeerConnectionIceErrorEvent,
+                        GHCJS.DOM.RTCPeerConnectionIceErrorEventInit,
+                        GHCJS.DOM.RTCPeerConnectionIceEvent,
+                        GHCJS.DOM.RTCPeerConnectionIceEventInit,
+                        GHCJS.DOM.RTCRtcpParameters,
+                        GHCJS.DOM.RTCRtpCapabilities,
+                        GHCJS.DOM.RTCRtpCodec,
+                        GHCJS.DOM.RTCRtpCodecParameters,
+                        GHCJS.DOM.RTCRtpCodingParameters,
+                        GHCJS.DOM.RTCRtpContributingSource,
+                        GHCJS.DOM.RTCRtpEncodingParameters,
+                        GHCJS.DOM.RTCRtpHeaderExtensionCapability,
+                        GHCJS.DOM.RTCRtpHeaderExtensionParameters,
+                        GHCJS.DOM.RTCRtpParameters,
+                        GHCJS.DOM.RTCRtpReceiveParameters,
+                        GHCJS.DOM.RTCRtpReceiver,
+                        GHCJS.DOM.RTCRtpSFrameDecryptor,
+                        GHCJS.DOM.RTCRtpSFrameEncryptor,
+                        GHCJS.DOM.RTCRtpScriptTransform,
+                        GHCJS.DOM.RTCRtpScriptTransformer,
+                        GHCJS.DOM.RTCRtpSendParameters,
+                        GHCJS.DOM.RTCRtpSender,
+                        GHCJS.DOM.RTCRtpSynchronizationSource,
+                        GHCJS.DOM.RTCRtpTransceiver,
+                        GHCJS.DOM.RTCRtpTransceiverInit,
+                        GHCJS.DOM.RTCSctpTransport,
+                        GHCJS.DOM.RTCSessionDescription,
+                        GHCJS.DOM.RTCSessionDescriptionCallback,
+                        GHCJS.DOM.RTCSessionDescriptionInit,
+                        GHCJS.DOM.RTCSetParameterOptions,
+                        GHCJS.DOM.RTCStatsReport,
+                        GHCJS.DOM.RTCTrackEvent,
+                        GHCJS.DOM.RTCTrackEventInit,
+                        GHCJS.DOM.RTCTransformEvent,
+                        GHCJS.DOM.RadioNodeList,
+                        GHCJS.DOM.Range,
+                        GHCJS.DOM.ReadableByteStreamController,
+                        GHCJS.DOM.ReadableStream,
+                        GHCJS.DOM.ReadableStreamBYOBReader,
+                        GHCJS.DOM.ReadableStreamBYOBReaderReadOptions,
+                        GHCJS.DOM.ReadableStreamBYOBRequest,
+                        GHCJS.DOM.ReadableStreamDefaultController,
+                        GHCJS.DOM.ReadableStreamDefaultReader,
+                        GHCJS.DOM.ReadableStreamGenericReader,
+                        GHCJS.DOM.ReadableStreamGetReaderOptions,
+                        GHCJS.DOM.ReadableStreamReadResult,
+                        GHCJS.DOM.ReadableWritablePair,
+                        GHCJS.DOM.RegistrationOptions,
+                        GHCJS.DOM.RemotePlayback,
+                        GHCJS.DOM.RemotePlaybackAvailabilityCallback,
+                        GHCJS.DOM.Report,
+                        GHCJS.DOM.ReportBody,
+                        GHCJS.DOM.ReportingObserver,
+                        GHCJS.DOM.ReportingObserverCallback,
+                        GHCJS.DOM.ReportingObserverOptions,
+                        GHCJS.DOM.Request,
+                        GHCJS.DOM.RequestInit,
+                        GHCJS.DOM.ResizeObserver,
+                        GHCJS.DOM.ResizeObserverCallback,
+                        GHCJS.DOM.ResizeObserverEntry,
+                        GHCJS.DOM.ResizeObserverOptions,
+                        GHCJS.DOM.ResizeObserverSize,
+                        GHCJS.DOM.Response,
+                        GHCJS.DOM.ResponseInit,
+                        GHCJS.DOM.RouterCondition,
+                        GHCJS.DOM.RouterRule,
+                        GHCJS.DOM.RouterSourceDict,
+                        GHCJS.DOM.RsaOtherPrimesInfo,
+                        GHCJS.DOM.SVGAElement,
+                        GHCJS.DOM.SVGAngle,
+                        GHCJS.DOM.SVGAnimateElement,
+                        GHCJS.DOM.SVGAnimateMotionElement,
+                        GHCJS.DOM.SVGAnimateTransformElement,
+                        GHCJS.DOM.SVGAnimatedAngle,
+                        GHCJS.DOM.SVGAnimatedBoolean,
+                        GHCJS.DOM.SVGAnimatedEnumeration,
+                        GHCJS.DOM.SVGAnimatedInteger,
+                        GHCJS.DOM.SVGAnimatedLength,
+                        GHCJS.DOM.SVGAnimatedLengthList,
+                        GHCJS.DOM.SVGAnimatedNumber,
+                        GHCJS.DOM.SVGAnimatedNumberList,
+                        GHCJS.DOM.SVGAnimatedPoints,
+                        GHCJS.DOM.SVGAnimatedPreserveAspectRatio,
+                        GHCJS.DOM.SVGAnimatedRect,
+                        GHCJS.DOM.SVGAnimatedString,
+                        GHCJS.DOM.SVGAnimatedTransformList,
+                        GHCJS.DOM.SVGAnimationElement,
+                        GHCJS.DOM.SVGBoundingBoxOptions,
+                        GHCJS.DOM.SVGCircleElement,
+                        GHCJS.DOM.SVGClipPathElement,
+                        GHCJS.DOM.SVGComponentTransferFunctionElement,
+                        GHCJS.DOM.SVGDefsElement,
+                        GHCJS.DOM.SVGDescElement,
+                        GHCJS.DOM.SVGElement,
+                        GHCJS.DOM.SVGEllipseElement,
+                        GHCJS.DOM.SVGFEBlendElement,
+                        GHCJS.DOM.SVGFEColorMatrixElement,
+                        GHCJS.DOM.SVGFEComponentTransferElement,
+                        GHCJS.DOM.SVGFECompositeElement,
+                        GHCJS.DOM.SVGFEConvolveMatrixElement,
+                        GHCJS.DOM.SVGFEDiffuseLightingElement,
+                        GHCJS.DOM.SVGFEDisplacementMapElement,
+                        GHCJS.DOM.SVGFEDistantLightElement,
+                        GHCJS.DOM.SVGFEDropShadowElement,
+                        GHCJS.DOM.SVGFEFloodElement,
+                        GHCJS.DOM.SVGFEFuncAElement,
+                        GHCJS.DOM.SVGFEFuncBElement,
+                        GHCJS.DOM.SVGFEFuncGElement,
+                        GHCJS.DOM.SVGFEFuncRElement,
+                        GHCJS.DOM.SVGFEGaussianBlurElement,
+                        GHCJS.DOM.SVGFEImageElement,
+                        GHCJS.DOM.SVGFEMergeElement,
+                        GHCJS.DOM.SVGFEMergeNodeElement,
+                        GHCJS.DOM.SVGFEMorphologyElement,
+                        GHCJS.DOM.SVGFEOffsetElement,
+                        GHCJS.DOM.SVGFEPointLightElement,
+                        GHCJS.DOM.SVGFESpecularLightingElement,
+                        GHCJS.DOM.SVGFESpotLightElement,
+                        GHCJS.DOM.SVGFETileElement,
+                        GHCJS.DOM.SVGFETurbulenceElement,
+                        GHCJS.DOM.SVGFilterElement,
+                        GHCJS.DOM.SVGFilterPrimitiveStandardAttributes,
+                        GHCJS.DOM.SVGFitToViewBox,
+                        GHCJS.DOM.SVGForeignObjectElement,
+                        GHCJS.DOM.SVGGElement,
+                        GHCJS.DOM.SVGGeometryElement,
+                        GHCJS.DOM.SVGGradientElement,
+                        GHCJS.DOM.SVGGraphicsElement,
+                        GHCJS.DOM.SVGImageElement,
+                        GHCJS.DOM.SVGLength,
+                        GHCJS.DOM.SVGLengthList,
+                        GHCJS.DOM.SVGLineElement,
+                        GHCJS.DOM.SVGLinearGradientElement,
+                        GHCJS.DOM.SVGMPathElement,
+                        GHCJS.DOM.SVGMarkerElement,
+                        GHCJS.DOM.SVGMaskElement,
+                        GHCJS.DOM.SVGMetadataElement,
+                        GHCJS.DOM.SVGNumber,
+                        GHCJS.DOM.SVGNumberList,
+                        GHCJS.DOM.SVGPathElement,
+                        GHCJS.DOM.SVGPatternElement,
+                        GHCJS.DOM.SVGPointList,
+                        GHCJS.DOM.SVGPolygonElement,
+                        GHCJS.DOM.SVGPolylineElement,
+                        GHCJS.DOM.SVGPreserveAspectRatio,
+                        GHCJS.DOM.SVGRadialGradientElement,
+                        GHCJS.DOM.SVGRectElement,
+                        GHCJS.DOM.SVGSVGElement,
+                        GHCJS.DOM.SVGScriptElement,
+                        GHCJS.DOM.SVGSetElement,
+                        GHCJS.DOM.SVGStopElement,
+                        GHCJS.DOM.SVGStringList,
+                        GHCJS.DOM.SVGStyleElement,
+                        GHCJS.DOM.SVGSwitchElement,
+                        GHCJS.DOM.SVGSymbolElement,
+                        GHCJS.DOM.SVGTSpanElement,
+                        GHCJS.DOM.SVGTests,
+                        GHCJS.DOM.SVGTextContentElement,
+                        GHCJS.DOM.SVGTextElement,
+                        GHCJS.DOM.SVGTextPathElement,
+                        GHCJS.DOM.SVGTextPositioningElement,
+                        GHCJS.DOM.SVGTitleElement,
+                        GHCJS.DOM.SVGTransform,
+                        GHCJS.DOM.SVGTransformList,
+                        GHCJS.DOM.SVGURIReference,
+                        GHCJS.DOM.SVGUnitTypes,
+                        GHCJS.DOM.SVGUseElement,
+                        GHCJS.DOM.SVGViewElement,
+                        GHCJS.DOM.Sanitizer,
+                        GHCJS.DOM.SanitizerAttributeNamespace,
+                        GHCJS.DOM.SanitizerConfig,
+                        GHCJS.DOM.SanitizerElementNamespace,
+                        GHCJS.DOM.SanitizerElementNamespaceWithAttributes,
+                        GHCJS.DOM.SanitizerProcessingInstruction,
+                        GHCJS.DOM.Scheduler,
+                        GHCJS.DOM.SchedulerPostTaskCallback,
+                        GHCJS.DOM.SchedulerPostTaskOptions,
+                        GHCJS.DOM.Screen,
+                        GHCJS.DOM.ScreenDetailed,
+                        GHCJS.DOM.ScreenOrientation,
+                        GHCJS.DOM.ScriptProcessorNode,
+                        GHCJS.DOM.ScrollIntoViewOptions,
+                        GHCJS.DOM.ScrollOptions,
+                        GHCJS.DOM.ScrollResult,
+                        GHCJS.DOM.ScrollTimeline,
+                        GHCJS.DOM.ScrollTimelineOptions,
+                        GHCJS.DOM.ScrollToOptions,
+                        GHCJS.DOM.SecurityPolicyViolationEvent,
+                        GHCJS.DOM.SecurityPolicyViolationEventInit,
+                        GHCJS.DOM.Segment,
+                        GHCJS.DOM.Selection,
+                        GHCJS.DOM.Serial,
+                        GHCJS.DOM.SerialInputSignals,
+                        GHCJS.DOM.SerialOptions,
+                        GHCJS.DOM.SerialOutputSignals,
+                        GHCJS.DOM.SerialPort,
+                        GHCJS.DOM.SerialPortFilter,
+                        GHCJS.DOM.SerialPortInfo,
+                        GHCJS.DOM.SerialPortRequestOptions,
+                        GHCJS.DOM.ServiceWorker,
+                        GHCJS.DOM.ServiceWorkerContainer,
+                        GHCJS.DOM.ServiceWorkerGlobalScope,
+                        GHCJS.DOM.ServiceWorkerRegistration,
+                        GHCJS.DOM.SetHTMLOptions,
+                        GHCJS.DOM.SetHTMLUnsafeOptions,
+                        GHCJS.DOM.ShadowRoot,
+                        GHCJS.DOM.ShadowRootInit,
+                        GHCJS.DOM.ShareData,
+                        GHCJS.DOM.SharedWorker,
+                        GHCJS.DOM.SharedWorkerGlobalScope,
+                        GHCJS.DOM.SharedWorkerOptions,
+                        GHCJS.DOM.ShowPopoverOptions,
+                        GHCJS.DOM.Slottable,
+                        GHCJS.DOM.SourceBuffer,
+                        GHCJS.DOM.SourceBufferList,
+                        GHCJS.DOM.SpeechGrammar,
+                        GHCJS.DOM.SpeechGrammarList,
+                        GHCJS.DOM.SpeechRecognition,
+                        GHCJS.DOM.SpeechRecognitionAlternative,
+                        GHCJS.DOM.SpeechRecognitionErrorEvent,
+                        GHCJS.DOM.SpeechRecognitionErrorEventInit,
+                        GHCJS.DOM.SpeechRecognitionEvent,
+                        GHCJS.DOM.SpeechRecognitionEventInit,
+                        GHCJS.DOM.SpeechRecognitionOptions,
+                        GHCJS.DOM.SpeechRecognitionPhrase,
+                        GHCJS.DOM.SpeechRecognitionResult,
+                        GHCJS.DOM.SpeechRecognitionResultList,
+                        GHCJS.DOM.SpeechSynthesis,
+                        GHCJS.DOM.SpeechSynthesisErrorEvent,
+                        GHCJS.DOM.SpeechSynthesisErrorEventInit,
+                        GHCJS.DOM.SpeechSynthesisEvent,
+                        GHCJS.DOM.SpeechSynthesisEventInit,
+                        GHCJS.DOM.SpeechSynthesisUtterance,
+                        GHCJS.DOM.SpeechSynthesisVoice,
+                        GHCJS.DOM.StartViewTransitionOptions,
+                        GHCJS.DOM.StaticRange,
+                        GHCJS.DOM.StaticRangeInit,
+                        GHCJS.DOM.StereoPannerNode,
+                        GHCJS.DOM.StereoPannerOptions,
+                        GHCJS.DOM.Storage,
+                        GHCJS.DOM.StorageEstimate,
+                        GHCJS.DOM.StorageEvent,
+                        GHCJS.DOM.StorageEventInit,
+                        GHCJS.DOM.StorageManager,
+                        GHCJS.DOM.StreamPipeOptions,
+                        GHCJS.DOM.StructuredSerializeOptions,
+                        GHCJS.DOM.StylePropertyMap,
+                        GHCJS.DOM.StylePropertyMapReadOnly,
+                        GHCJS.DOM.StyleSheet,
+                        GHCJS.DOM.StyleSheetList,
+                        GHCJS.DOM.SubmitEvent,
+                        GHCJS.DOM.SubmitEventInit,
+                        GHCJS.DOM.SubtleCrypto,
+                        GHCJS.DOM.SvcOutputMetadata,
+                        GHCJS.DOM.TaskController,
+                        GHCJS.DOM.TaskControllerInit,
+                        GHCJS.DOM.TaskPriorityChangeEvent,
+                        GHCJS.DOM.TaskPriorityChangeEventInit,
+                        GHCJS.DOM.TaskSignal,
+                        GHCJS.DOM.TaskSignalAnyInit,
+                        GHCJS.DOM.Text,
+                        GHCJS.DOM.TextDecodeOptions,
+                        GHCJS.DOM.TextDecoder,
+                        GHCJS.DOM.TextDecoderCommon,
+                        GHCJS.DOM.TextDecoderOptions,
+                        GHCJS.DOM.TextDecoderStream,
+                        GHCJS.DOM.TextEncoder,
+                        GHCJS.DOM.TextEncoderCommon,
+                        GHCJS.DOM.TextEncoderEncodeIntoResult,
+                        GHCJS.DOM.TextEncoderStream,
+                        GHCJS.DOM.TextEvent,
+                        GHCJS.DOM.TextMetrics,
+                        GHCJS.DOM.TextTrack,
+                        GHCJS.DOM.TextTrackCue,
+                        GHCJS.DOM.TextTrackCueList,
+                        GHCJS.DOM.TextTrackList,
+                        GHCJS.DOM.TimeRanges,
+                        GHCJS.DOM.TimelineRangeOffset,
+                        GHCJS.DOM.ToggleEvent,
+                        GHCJS.DOM.ToggleEventInit,
+                        GHCJS.DOM.TogglePopoverOptions,
+                        GHCJS.DOM.Touch,
+                        GHCJS.DOM.TouchEvent,
+                        GHCJS.DOM.TouchEventInit,
+                        GHCJS.DOM.TouchInit,
+                        GHCJS.DOM.TouchList,
+                        GHCJS.DOM.TrackEvent,
+                        GHCJS.DOM.TrackEventInit,
+                        GHCJS.DOM.TransformStream,
+                        GHCJS.DOM.TransformStreamDefaultController,
+                        GHCJS.DOM.TransitionEvent,
+                        GHCJS.DOM.TransitionEventInit,
+                        GHCJS.DOM.TreeWalker,
+                        GHCJS.DOM.TrustedHTML,
+                        GHCJS.DOM.TrustedHTMLParserOptions,
+                        GHCJS.DOM.TrustedScript,
+                        GHCJS.DOM.TrustedScriptURL,
+                        GHCJS.DOM.TrustedTypePolicy,
+                        GHCJS.DOM.TrustedTypePolicyFactory,
+                        GHCJS.DOM.TrustedTypePolicyOptions,
+                        GHCJS.DOM.UIEvent,
+                        GHCJS.DOM.UIEventInit,
+                        GHCJS.DOM.ULongRange,
+                        GHCJS.DOM.URL,
+                        GHCJS.DOM.URLPattern,
+                        GHCJS.DOM.URLPatternComponentResult,
+                        GHCJS.DOM.URLPatternInit,
+                        GHCJS.DOM.URLPatternOptions,
+                        GHCJS.DOM.URLPatternResult,
+                        GHCJS.DOM.URLSearchParams,
+                        GHCJS.DOM.UnknownCredentialOptions,
+                        GHCJS.DOM.UserActivation,
+                        GHCJS.DOM.VTTCue,
+                        GHCJS.DOM.VTTRegion,
+                        GHCJS.DOM.ValidityState,
+                        GHCJS.DOM.ValidityStateFlags,
+                        GHCJS.DOM.VideoColorSpace,
+                        GHCJS.DOM.VideoColorSpaceInit,
+                        GHCJS.DOM.VideoConfiguration,
+                        GHCJS.DOM.VideoDecoder,
+                        GHCJS.DOM.VideoDecoderConfig,
+                        GHCJS.DOM.VideoDecoderInit,
+                        GHCJS.DOM.VideoDecoderSupport,
+                        GHCJS.DOM.VideoEncoder,
+                        GHCJS.DOM.VideoEncoderConfig,
+                        GHCJS.DOM.VideoEncoderEncodeOptions,
+                        GHCJS.DOM.VideoEncoderEncodeOptionsForAv1,
+                        GHCJS.DOM.VideoEncoderEncodeOptionsForAvc,
+                        GHCJS.DOM.VideoEncoderEncodeOptionsForHevc,
+                        GHCJS.DOM.VideoEncoderEncodeOptionsForVp9,
+                        GHCJS.DOM.VideoEncoderInit,
+                        GHCJS.DOM.VideoEncoderSupport,
+                        GHCJS.DOM.VideoFrame,
+                        GHCJS.DOM.VideoFrameBufferInit,
+                        GHCJS.DOM.VideoFrameCallbackMetadata,
+                        GHCJS.DOM.VideoFrameCopyToOptions,
+                        GHCJS.DOM.VideoFrameInit,
+                        GHCJS.DOM.VideoFrameMetadata,
+                        GHCJS.DOM.VideoFrameOutputCallback,
+                        GHCJS.DOM.VideoFrameRequestCallback,
+                        GHCJS.DOM.VideoPlaybackQuality,
+                        GHCJS.DOM.VideoTrack,
+                        GHCJS.DOM.VideoTrackList,
+                        GHCJS.DOM.ViewTimeline,
+                        GHCJS.DOM.ViewTimelineOptions,
+                        GHCJS.DOM.ViewTransition,
+                        GHCJS.DOM.ViewTransitionTypeSet,
+                        GHCJS.DOM.ViewTransitionUpdateCallback,
+                        GHCJS.DOM.VisualViewport,
+                        GHCJS.DOM.VoidFunction,
+                        GHCJS.DOM.WEBGL_color_buffer_float,
+                        GHCJS.DOM.WEBGL_compressed_texture_astc,
+                        GHCJS.DOM.WEBGL_compressed_texture_etc,
+                        GHCJS.DOM.WEBGL_compressed_texture_etc1,
+                        GHCJS.DOM.WEBGL_compressed_texture_pvrtc,
+                        GHCJS.DOM.WEBGL_compressed_texture_s3tc,
+                        GHCJS.DOM.WEBGL_compressed_texture_s3tc_srgb,
+                        GHCJS.DOM.WEBGL_debug_renderer_info,
+                        GHCJS.DOM.WEBGL_debug_shaders,
+                        GHCJS.DOM.WEBGL_depth_texture,
+                        GHCJS.DOM.WEBGL_draw_buffers,
+                        GHCJS.DOM.WEBGL_lose_context,
+                        GHCJS.DOM.WEBGL_multi_draw,
+                        GHCJS.DOM.WGSLLanguageFeatures,
+                        GHCJS.DOM.WakeLock,
+                        GHCJS.DOM.WakeLockSentinel,
+                        GHCJS.DOM.WaveShaperNode,
+                        GHCJS.DOM.WaveShaperOptions,
+                        GHCJS.DOM.WebCodecsErrorCallback,
+                        GHCJS.DOM.WebGL2RenderingContext,
+                        GHCJS.DOM.WebGL2RenderingContextBase,
+                        GHCJS.DOM.WebGL2RenderingContextOverloads,
+                        GHCJS.DOM.WebGLActiveInfo,
+                        GHCJS.DOM.WebGLBuffer,
+                        GHCJS.DOM.WebGLContextAttributes,
+                        GHCJS.DOM.WebGLContextEvent,
+                        GHCJS.DOM.WebGLContextEventInit,
+                        GHCJS.DOM.WebGLFramebuffer,
+                        GHCJS.DOM.WebGLObject,
+                        GHCJS.DOM.WebGLProgram,
+                        GHCJS.DOM.WebGLQuery,
+                        GHCJS.DOM.WebGLRenderbuffer,
+                        GHCJS.DOM.WebGLRenderingContext,
+                        GHCJS.DOM.WebGLRenderingContextBase,
+                        GHCJS.DOM.WebGLRenderingContextOverloads,
+                        GHCJS.DOM.WebGLSampler,
+                        GHCJS.DOM.WebGLShader,
+                        GHCJS.DOM.WebGLShaderPrecisionFormat,
+                        GHCJS.DOM.WebGLSync,
+                        GHCJS.DOM.WebGLTexture,
+                        GHCJS.DOM.WebGLTransformFeedback,
+                        GHCJS.DOM.WebGLUniformLocation,
+                        GHCJS.DOM.WebGLVertexArrayObject,
+                        GHCJS.DOM.WebGLVertexArrayObjectOES,
+                        GHCJS.DOM.WebSocket,
+                        GHCJS.DOM.WebTransport,
+                        GHCJS.DOM.WebTransportBidirectionalStream,
+                        GHCJS.DOM.WebTransportCloseInfo,
+                        GHCJS.DOM.WebTransportConnectionStats,
+                        GHCJS.DOM.WebTransportDatagramDuplexStream,
+                        GHCJS.DOM.WebTransportDatagramStats,
+                        GHCJS.DOM.WebTransportDatagramsWritable,
+                        GHCJS.DOM.WebTransportError,
+                        GHCJS.DOM.WebTransportErrorOptions,
+                        GHCJS.DOM.WebTransportHash,
+                        GHCJS.DOM.WebTransportOptions,
+                        GHCJS.DOM.WebTransportReceiveStream,
+                        GHCJS.DOM.WebTransportReceiveStreamStats,
+                        GHCJS.DOM.WebTransportSendGroup,
+                        GHCJS.DOM.WebTransportSendOptions,
+                        GHCJS.DOM.WebTransportSendStream,
+                        GHCJS.DOM.WebTransportSendStreamOptions,
+                        GHCJS.DOM.WebTransportSendStreamStats,
+                        GHCJS.DOM.WebTransportWriter,
+                        GHCJS.DOM.WheelEvent,
+                        GHCJS.DOM.WheelEventInit,
+                        GHCJS.DOM.Window,
+                        GHCJS.DOM.WindowClient,
+                        GHCJS.DOM.WindowEventHandlers,
+                        GHCJS.DOM.WindowLocalStorage,
+                        GHCJS.DOM.WindowOrWorkerGlobalScope,
+                        GHCJS.DOM.WindowPostMessageOptions,
+                        GHCJS.DOM.WindowSessionStorage,
+                        GHCJS.DOM.Worker,
+                        GHCJS.DOM.WorkerAndParameters,
+                        GHCJS.DOM.WorkerGlobalScope,
+                        GHCJS.DOM.WorkerLocation,
+                        GHCJS.DOM.WorkerNavigator,
+                        GHCJS.DOM.WorkerOptions,
+                        GHCJS.DOM.Worklet,
+                        GHCJS.DOM.WorkletGlobalScope,
+                        GHCJS.DOM.WorkletOptions,
+                        GHCJS.DOM.WritableStream,
+                        GHCJS.DOM.WritableStreamDefaultController,
+                        GHCJS.DOM.WritableStreamDefaultWriter,
+                        GHCJS.DOM.WriteParams,
+                        GHCJS.DOM.XMLDocument,
+                        GHCJS.DOM.XMLHttpRequest,
+                        GHCJS.DOM.XMLHttpRequestEventTarget,
+                        GHCJS.DOM.XMLHttpRequestUpload,
+                        GHCJS.DOM.XMLSerializer,
+                        GHCJS.DOM.XPathEvaluator,
+                        GHCJS.DOM.XPathEvaluatorBase,
+                        GHCJS.DOM.XPathExpression,
+                        GHCJS.DOM.XPathNSResolver,
+                        GHCJS.DOM.XPathResult,
+                        GHCJS.DOM.XSLTProcessor
diff --git a/src/GHCJS/DOM/Debug.hs b/src/GHCJS/DOM/Debug.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Debug.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+module GHCJS.DOM.Debug (
+    DomHasCallStack
+  , debugEnabled
+  , getElementStack
+  , addDebugMenu
+  , addDebugMenu'
+) where
+
+import Control.Arrow (Arrow(..))
+import Control.Monad.IO.Class (MonadIO(..))
+
+import Data.Char (toLower)
+import Data.Foldable (forM_)
+import Data.Monoid ((<>))
+
+import System.IO (stderr, hPutStrLn)
+
+import GHC.Stack
+       (srcLocStartLine, srcLocFile, SrcLoc(..), HasCallStack)
+import GHC.Exts (Constraint)
+
+import GHCJS.DOM (currentDocumentUnchecked)
+import GHCJS.DOM.Types
+       (HTMLDivElement(..), HTMLStyleElement(..), uncheckedCastTo,
+        HTMLUListElement(..), PointerEvent(..), Document(..), Element(..),
+        HTMLAnchorElement(..), MonadJSM, JSM, liftJSM, JSString)
+import GHCJS.DOM.Debug.Internal (DomHasCallStack, getElementStack, debugEnabled)
+import GHCJS.DOM.Document
+       (createTextNode, getBodyUnchecked,
+        getElementsByTagName, createElement, elementFromPoint)
+import GHCJS.DOM.Element
+       (getTagName, setAttribute, getAttribute, setInnerHTML)
+import GHCJS.DOM.EventM
+       (addListener, uiPageXY, mouseClientXY, mouseShiftKey, target,
+        newListener, on, preventDefault)
+import GHCJS.DOM.EventTargetClosures (SaferEventListener(..))
+import GHCJS.DOM.GlobalEventHandlers (click, contextMenu)
+import GHCJS.DOM.HTMLCollection (itemUnchecked)
+import GHCJS.DOM.HTMLStyleElement (setType)
+import GHCJS.DOM.Node (getParentElement, appendChild_)
+import GHCJS.DOM.NonElementParentNode (getElementById)
+
+addDebugMenu :: MonadJSM m => m (JSM ())
+addDebugMenu = addDebugMenu' (const Nothing)
+
+addDebugMenu' :: MonadJSM m => (SrcLoc -> Maybe String) -> m (JSM ())
+addDebugMenu' getSourceLink = liftJSM $ do
+    let menuId = "ghcjs-dom-debug" :: JSString
+    doc <- currentDocumentUnchecked
+    style <- uncheckedCastTo HTMLStyleElement <$> createElement doc ("style" :: JSString)
+    setType style ("text/css" :: JSString)
+    setInnerHTML style $ mconcat [
+        "#", menuId, ", #", menuId, " ul ul{"
+      , "  display: block;"
+      , "  position: absolute;"
+      , "  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);"
+      , "  padding: 2px;"
+      , "  z-index:1000;"
+      , "  margin: 0;"
+      , "  list-style-type: none;"
+      , "  list-style: none;"
+      , "  background-color:#fff;"
+      , "  color:#000;"
+      , "}\n"
+      , "#", menuId, " ul{"
+      , "  list-style-type: none;"
+      , "  margin: 0;"
+      , "  padding: 2px;"
+      , "  cursor: pointer;"
+      , "}\n"
+      , "#", menuId, " li{"
+      , "  white-space: nowrap;"
+      , "}\n"
+      , "#", menuId, " ul ul{"
+      , "  display: none;"
+      , "}\n"
+      , "#", menuId, ">li:hover{"
+      , "  background-color:#ddd;"
+      , "}\n"
+      , "#", menuId, " li:hover ul{"
+      , "  display: inline-block;"
+      , "  position: absolute;"
+      , "  z-index:1001;"
+      , "}\n"
+      ]
+    getElementsByTagName doc ("head" :: JSString) >>= (`itemUnchecked` 0) >>= (`appendChild_` style)
+    body <- getBodyUnchecked doc
+    clickListener <- newListener $ do
+        target >>= \case
+            Just (t :: HTMLAnchorElement) ->
+                getAttribute t ("hs-srcloc" :: JSString)
+                    >>= mapM_ (liftIO . hPutStrLn stderr . ("OPEN " <>))
+            Nothing -> return ()
+        getElementById doc menuId >>= mapM_
+            (\e -> setAttribute e ("style" :: JSString) ("display: none;" :: JSString))
+    on doc contextMenu $ mouseShiftKey >>= \case
+        True -> ((fromIntegral *** fromIntegral) <$> mouseClientXY) >>= uncurry (elementFromPoint doc) >>= \case
+            Just e ->  do
+                preventDefault
+                menu <- getElementById doc menuId >>= \case
+                    Just menu -> setInnerHTML menu ("" :: JSString) >> return (uncheckedCastTo HTMLDivElement menu)
+                    Nothing -> do
+                        menu <- uncheckedCastTo HTMLDivElement <$> createElement doc ("div" :: JSString)
+                        setAttribute menu ("id" :: JSString) menuId
+                        appendChild_ body menu
+                        return menu
+
+                if debugEnabled
+                    then do
+                        ul <- uncheckedCastTo HTMLUListElement <$> createElement doc ("ul" :: JSString)
+                        appendChild_ menu ul
+                        addMenu doc clickListener ul e
+                    else do
+                        a <- uncheckedCastTo HTMLAnchorElement <$> createElement doc ("a" :: JSString)
+                        appendChild_ menu a
+                        createTextNode doc ("The ghcjs-dom debug cabal flag is switched off" :: JSString)
+                            >>= appendChild_ a
+                        setAttribute a ("href" :: JSString)
+                            ("https://github.com/ghcjs/ghcjs-dom/blob/master/README.md#debug" :: JSString)
+                        setAttribute a ("target" :: JSString) ("_blank" :: JSString)
+                        liftJSM $ addListener a click clickListener False
+
+                (pageX, pageY) <- uiPageXY
+                setAttribute menu ("style" :: JSString) ("display: block; left: " <> show pageX <> "px; top:" <> show pageY <> "px;" )
+            Nothing -> return ()
+        False -> return ()
+
+  where
+    addMenu :: MonadJSM m => Document -> SaferEventListener HTMLAnchorElement PointerEvent -> HTMLUListElement -> Element -> m ()
+    addMenu doc clickListener parentMenu = loop
+      where
+        loop e = do
+            getElementStack e >>= mapM_ (addElementMenu doc clickListener parentMenu e)
+            getParentElement e >>= mapM_ loop
+
+    addElementMenu
+        :: MonadJSM m
+        => Document
+        -> SaferEventListener HTMLAnchorElement PointerEvent
+        -> HTMLUListElement
+        -> Element
+        -> [(String, SrcLoc)]
+        -> m ()
+    addElementMenu doc clickListener parentMenu e cs = do
+        tagName <- map toLower <$> getTagName e
+        parentLi <- createElement doc ("li" :: JSString)
+        appendChild_ parentMenu parentLi
+        createTextNode doc tagName >>= appendChild_ parentLi
+        ul <- createElement doc ("ul" :: JSString)
+        appendChild_ parentLi ul
+        forM_ (reverse cs) $ \(f, loc) -> do
+            li <- createElement doc ("li" :: JSString)
+            appendChild_ ul li
+            a <- uncheckedCastTo HTMLAnchorElement <$> createElement doc ("a" :: JSString)
+            appendChild_ li a
+            createTextNode doc (f <> " " <> srcLocFile loc <> ":" <> show (srcLocStartLine loc))
+                >>= appendChild_ a
+            forM_ (getSourceLink loc) $ \link -> do
+                setAttribute a ("href" :: JSString) link
+                setAttribute a ("target" :: JSString) ("_blank" :: JSString)
+            setAttribute a ("hs-srcloc" :: JSString) $ prettySrcLoc loc
+            liftJSM $ addListener a click clickListener False
+
+    prettySrcLoc :: SrcLoc -> String
+    prettySrcLoc SrcLoc {..} = mconcat
+        [ srcLocFile          , ":("
+        , show srcLocStartLine, ","
+        , show srcLocStartCol , ")-("
+        , show srcLocEndLine  , ","
+        , show srcLocEndCol   , ") in "
+        , srcLocPackage, ":", srcLocModule
+        ]
+
diff --git a/src/GHCJS/DOM/Debug/Internal.hs b/src/GHCJS/DOM/Debug/Internal.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Debug/Internal.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE KindSignatures #-}
+module GHCJS.DOM.Debug.Internal (
+    DomHasCallStack
+  , debugEnabled
+  , cachedStacks
+  , cacheStack
+  , lookupStack
+  , getElementStack
+) where
+
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO, liftIO)
+import Data.Map (Map)
+import qualified Data.Map as M (insert, size, lookup)
+import Data.IORef (atomicModifyIORef', IORef, newIORef, readIORef)
+import GHC.Stack
+       (SrcLoc, CallStack, callStack, getCallStack, HasCallStack)
+import GHC.Exts (Constraint)
+import System.IO.Unsafe (unsafePerformIO)
+import Text.Read (readMaybe)
+
+import GHCJS.DOM.Types (Element(..), MonadDOM, ToJSString, JSString)
+import GHCJS.DOM.Element (setAttribute, getAttribute)
+
+#ifdef GHCJS_DOM_DEBUG
+
+type DomHasCallStack = (HasCallStack :: Constraint)
+debugEnabled :: Bool
+debugEnabled = True
+
+#else
+
+type DomHasCallStack = (() :: Constraint)
+
+debugEnabled :: Bool
+debugEnabled = False
+
+#endif
+
+cachedStacks :: IORef (Map String Int, Map Int [(String, SrcLoc)])
+cachedStacks = unsafePerformIO $ newIORef (mempty, mempty)
+{-# NOINLINE cachedStacks #-}
+
+lookupStack :: MonadIO m => Int -> m (Maybe [(String, SrcLoc)])
+lookupStack n = do
+    (_, intToStack) <- liftIO $ readIORef cachedStacks
+    return $ M.lookup n intToStack
+
+getElementStack :: MonadDOM m => Element -> m (Maybe [(String, SrcLoc)])
+getElementStack e =
+    getAttribute e ("hs-creator" :: JSString) >>= \case
+        Just a -> case readMaybe a of
+            Just n -> lookupStack n
+            Nothing -> return Nothing
+        Nothing -> return Nothing
+
+cacheStack :: MonadIO m => [(String, SrcLoc)] -> m Int
+cacheStack cs = do
+    let csString = show cs
+    liftIO $ atomicModifyIORef' cachedStacks $ \(stackToInt, intToStack) ->
+        case M.lookup csString stackToInt of
+            Just n -> ((stackToInt, intToStack), n)
+            Nothing ->
+                let n = M.size stackToInt in
+                ((M.insert csString n stackToInt, M.insert n cs intToStack), n)
+
+
diff --git a/src/GHCJS/DOM/Document.hs b/src/GHCJS/DOM/Document.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Document.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE PackageImports #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ConstraintKinds #-}
+module GHCJS.DOM.Document (
+    module Export
+  , createElement
+  , createElement_
+  , createElementNS
+  , createElementNS_
+) where
+
+#ifdef GHCJS_DOM_DEBUG
+
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO, liftIO)
+import Data.IORef (atomicModifyIORef', IORef, newIORef, readIORef)
+import GHC.Stack
+       (SrcLoc, CallStack, callStack, getCallStack, HasCallStack)
+import System.IO.Unsafe (unsafePerformIO)
+import Text.Read (readMaybe)
+
+import GHCJS.DOM.Types (Element(..), MonadDOM, ToJSString, JSString)
+import GHCJS.DOM.Debug.Internal (cacheStack)
+import GHCJS.DOM.Element (setAttribute, getAttribute)
+#ifdef  MIN_VERSION_ghcjs_dom_javascript
+import qualified "ghcjs-dom-javascript" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)
+import "ghcjs-dom-javascript" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#else
+#ifdef  MIN_VERSION_ghcjs_dom_jsffi
+import qualified "ghcjs-dom-jsffi" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)
+import "ghcjs-dom-jsffi" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#else
+#if __GLASGOW_HASKELL__ >= 900
+import qualified "ghcjs-dom-jsaddle" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)
+import "ghcjs-dom-jsaddle" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#else
+import qualified "jsaddle-dom" GHCJS.DOM.Document as Raw (createElement, createElement_, createElementNS, createElementNS_)
+import "jsaddle-dom" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#endif
+#endif
+#endif
+
+
+createElement
+    :: (MonadDOM m, IsDocument doc, ToJSString localName, HasCallStack)
+    => doc
+    -> localName
+    -> m Element
+createElement doc localName = do
+    e <- Raw.createElement doc localName
+    let cs = getCallStack callStack
+    setAttribute e ("hs-creator"::JSString) . show =<< cacheStack cs
+    return e
+
+createElement_
+    :: (MonadDOM m, IsDocument doc, ToJSString localName, HasCallStack)
+    => doc
+    -> localName
+    -> m ()
+createElement_ doc localName = void $ createElement doc localName
+
+createElementNS
+    :: (MonadDOM m, IsDocument doc, ToJSString namespaceURI, ToJSString qualifiedName, HasCallStack)
+    => doc
+    -> Maybe namespaceURI
+    -> qualifiedName
+    -> m Element
+createElementNS doc namespaceURI qualifiedName = do
+    e <- Raw.createElementNS doc namespaceURI qualifiedName
+    setAttribute e ("haskell-stack"::JSString) . show =<< cacheStack (getCallStack callStack)
+    return e
+
+createElementNS_
+    :: (MonadDOM m, IsDocument doc, ToJSString namespaceURI, ToJSString qualifiedName, HasCallStack)
+    => doc
+    -> Maybe namespaceURI
+    -> qualifiedName
+    -> m ()
+createElementNS_ doc namespaceURI qualifiedName = void $ createElementNS doc namespaceURI qualifiedName
+
+#else
+
+#ifdef MIN_VERSION_ghcjs_dom_javascript
+import "ghcjs-dom-javascript" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)
+import "ghcjs-dom-javascript" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#else
+#ifdef MIN_VERSION_ghcjs_dom_jsffi
+import "ghcjs-dom-jsffi" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)
+import "ghcjs-dom-jsffi" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#else
+#if __GLASGOW_HASKELL__ >= 900
+import "ghcjs-dom-jsaddle" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)
+import "ghcjs-dom-jsaddle" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#else
+import "jsaddle-dom" GHCJS.DOM.Document (createElement, createElement_, createElementNS, createElementNS_)
+import "jsaddle-dom" GHCJS.DOM.Document as Export hiding (createElement, createElement_, createElementNS, createElementNS_)
+#endif
+#endif
+#endif
+
+#endif
